mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-04 08:16:49 +00:00
[llvm-readelf] Make --all output order closer to GNU readelf
https://bugs.llvm.org/show_bug.cgi?id=43403 The new order makes it easy to compare the two tools' --all. Reviewed By: grimar, rupprecht Differential Revision: https://reviews.llvm.org/D75592
This commit is contained in:
parent
9600b55ac8
commit
9e1319df7e
@ -5,7 +5,12 @@
|
||||
// RUN: ld.lld --hash-style=sysv %t.so %t.o -o %tout
|
||||
// RUN: llvm-objdump -d --no-show-raw-insn %tout | FileCheck %s --check-prefix=DISASM
|
||||
// RUN: llvm-objdump -s %tout | FileCheck %s --check-prefix=GOTPLT
|
||||
// RUN: llvm-readobj -r --dynamic-table %tout | FileCheck %s
|
||||
// RUN: llvm-readobj --dynamic-table -r %tout | FileCheck %s
|
||||
|
||||
// Check that the PLTRELSZ tag does not include the IRELATIVE relocations
|
||||
// CHECK: DynamicSection [
|
||||
// CHECK: 0x0000000000000008 RELASZ 48 (bytes)
|
||||
// CHECK: 0x0000000000000002 PLTRELSZ 48 (bytes)
|
||||
|
||||
// Check that the IRELATIVE relocations are after the JUMP_SLOT in the plt
|
||||
// CHECK: Relocations [
|
||||
@ -26,11 +31,6 @@
|
||||
// GOTPLT-NEXT: 230460 f0022100 00000000 00000000 00000000
|
||||
// GOTPLT-NEXT: 230470 00000000 00000000
|
||||
|
||||
// Check that the PLTRELSZ tag does not include the IRELATIVE relocations
|
||||
// CHECK: DynamicSection [
|
||||
// CHECK: 0x0000000000000008 RELASZ 48 (bytes)
|
||||
// CHECK: 0x0000000000000002 PLTRELSZ 48 (bytes)
|
||||
|
||||
// Check that a PLT header is written and the ifunc entries appear last
|
||||
// DISASM: Disassembly of section .text:
|
||||
// DISASM-EMPTY:
|
||||
|
@ -36,6 +36,11 @@ glob1:
|
||||
# CHECK: Address: [[DATA_ADDR:[0-9xa-f]+]]
|
||||
# CHECK: }
|
||||
|
||||
# CHECK: ProgramHeader {
|
||||
# CHECK: Type: PT_LOAD
|
||||
# CHECK: ProgramHeader {
|
||||
# CHECK: Type: PT_LOAD
|
||||
|
||||
# CHECK: Symbol {
|
||||
# CHECK: Name: glob0
|
||||
# CHECK: Value: [[DATA_ADDR]]
|
||||
@ -51,13 +56,3 @@ glob1:
|
||||
# CHECK: Type: Object
|
||||
# CHECK: Section: .rodata
|
||||
# CHECK: }
|
||||
|
||||
# CHECK: ProgramHeader {
|
||||
# CHECK: Type: PT_LOAD
|
||||
# CHECK: VirtualAddress:
|
||||
# CHECK: }
|
||||
|
||||
# CHECK: ProgramHeader {
|
||||
# CHECK: Type: PT_LOAD
|
||||
# CHECK: VirtualAddress:
|
||||
# CHECK: }
|
||||
|
@ -34,6 +34,9 @@ kernel1:
|
||||
# CHECK: ]
|
||||
# CHECK: }
|
||||
|
||||
# CHECK: ProgramHeader {
|
||||
# CHECK: Type: PT_LOAD
|
||||
|
||||
# CHECK: Symbol {
|
||||
# CHECK: Name: kernel0
|
||||
# CHECK: Value:
|
||||
@ -51,8 +54,3 @@ kernel1:
|
||||
# CHECK: Type: AMDGPU_HSA_KERNEL
|
||||
# CHECK: Section: .text
|
||||
# CHECK: }
|
||||
|
||||
# CHECK: ProgramHeader {
|
||||
# CHECK: Type: PT_LOAD
|
||||
# CHECK: VirtualAddress:
|
||||
# CHECK: }
|
||||
|
@ -4,10 +4,10 @@
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
|
||||
# RUN: ld.lld %t.o -o %t.so -shared --apply-dynamic-relocs
|
||||
# RUN: llvm-readobj -r -S -l --section-data %t.so | FileCheck -check-prefixes=CHECK,APPLY %s
|
||||
# RUN: llvm-readobj -S --section-data -l -r %t.so | FileCheck -check-prefixes=CHECK,APPLY %s
|
||||
|
||||
# RUN: ld.lld %t.o -o %t2.so -shared
|
||||
# RUN: llvm-readobj -r -S -l --section-data %t2.so | FileCheck -check-prefixes=CHECK,NOAPPLY %s
|
||||
# RUN: llvm-readobj -S --section-data -l -r %t2.so | FileCheck -check-prefixes=CHECK,NOAPPLY %s
|
||||
# RUN: ld.lld %t.o -o %t3.so -shared --no-apply-dynamic-relocs
|
||||
# RUN: cmp %t2.so %t3.so
|
||||
|
||||
@ -18,15 +18,15 @@
|
||||
# NOAPPLY-NEXT: 0000: 00000000 00000000 |
|
||||
# CHECK-NEXT: )
|
||||
|
||||
# CHECK: Type: PT_DYNAMIC
|
||||
# CHECK-NEXT: Offset: 0x230
|
||||
# CHECK-NEXT: VirtualAddress: 0x[[DYNAMIC:.*]]
|
||||
# CHECK-NEXT: PhysicalAddress: 0x[[DYNAMIC]]
|
||||
|
||||
# CHECK: Relocations [
|
||||
# CHECK-NEXT: Section ({{.*}}) .rela.dyn {
|
||||
# CHECK-NEXT: 0x[[GOT]] R_X86_64_RELATIVE - 0x[[ADDEND:.*]]
|
||||
# CHECK-NEXT: 0x[[GOT]] R_X86_64_RELATIVE - 0x[[DYNAMIC]]
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
|
||||
# CHECK: Type: PT_DYNAMIC
|
||||
# CHECK-NEXT: Offset: 0x230
|
||||
# CHECK-NEXT: VirtualAddress: 0x[[ADDEND]]
|
||||
# CHECK-NEXT: PhysicalAddress: 0x[[ADDEND]]
|
||||
|
||||
cmpq $0, _DYNAMIC@GOTPCREL(%rip)
|
||||
|
@ -3,20 +3,13 @@
|
||||
# RUN: ld.lld -shared %t2.o -o %t2.so
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
|
||||
# RUN: ld.lld -o %t %t.o --as-needed %t2.so
|
||||
# RUN: llvm-readobj --dynamic-table --dyn-symbols %t | FileCheck %s
|
||||
# RUN: llvm-readelf -d --dyn-symbols %t | FileCheck %s
|
||||
|
||||
|
||||
# There must be a NEEDED entry for each undefined
|
||||
|
||||
# CHECK: Name: bar
|
||||
# CHECK-NEXT: Value: 0x0
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Global
|
||||
# CHECK-NEXT: Type: Function
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: Undefined
|
||||
|
||||
# CHECK: NEEDED Shared library: [{{.*}}as-needed-no-reloc{{.*}}2.so]
|
||||
# CHECK: (NEEDED) Shared library: [{{.*}}as-needed-no-reloc{{.*}}2.so]
|
||||
# CHECK: UND bar
|
||||
|
||||
.globl _start
|
||||
_start:
|
||||
|
@ -126,35 +126,6 @@ _start:
|
||||
# CHECK-NEXT: EntrySize: 0
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Symbols [
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: (0)
|
||||
# CHECK-NEXT: Value: 0x0
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Local (0x0)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: Undefined (0x0)
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: $x.0
|
||||
# CHECK-NEXT: Value: 0x210120
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Local (0x0)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: .text
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: _start
|
||||
# CHECK-NEXT: Value: [[ENTRY]]
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Global (0x1)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: .text
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: ProgramHeaders [
|
||||
# CHECK-NEXT: ProgramHeader {
|
||||
# CHECK-NEXT: Type: PT_PHDR (0x6)
|
||||
@ -207,3 +178,32 @@ _start:
|
||||
# CHECK-NEXT: Alignment: 0
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Symbols [
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: (0)
|
||||
# CHECK-NEXT: Value: 0x0
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Local (0x0)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: Undefined (0x0)
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: $x.0
|
||||
# CHECK-NEXT: Value: 0x210120
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Local (0x0)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: .text
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: _start
|
||||
# CHECK-NEXT: Value: [[ENTRY]]
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Global (0x1)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: .text
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
|
@ -208,37 +208,6 @@ __start:
|
||||
# CHECK-NEXT: EntrySize: 0
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Symbols [
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: (0)
|
||||
# CHECK-NEXT: Value: 0x0
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Local (0x0)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: Undefined (0x0)
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: _gp
|
||||
# CHECK-NEXT: Value: 0x38150
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Local
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other [ (0x2)
|
||||
# CHECK-NEXT: STV_HIDDEN (0x2)
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Section: .got
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: __start
|
||||
# CHECK-NEXT: Value: 0x20150
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Global (0x1)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: .text
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: ProgramHeaders [
|
||||
# CHECK-NEXT: ProgramHeader {
|
||||
# CHECK-NEXT: Type: PT_PHDR (0x6)
|
||||
@ -328,3 +297,34 @@ __start:
|
||||
# CHECK-NEXT: Alignment: 8
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Symbols [
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: (0)
|
||||
# CHECK-NEXT: Value: 0x0
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Local (0x0)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: Undefined (0x0)
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: _gp
|
||||
# CHECK-NEXT: Value: 0x38150
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Local
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other [ (0x2)
|
||||
# CHECK-NEXT: STV_HIDDEN (0x2)
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Section: .got
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: __start
|
||||
# CHECK-NEXT: Value: 0x20150
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Global (0x1)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: .text
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
|
@ -126,26 +126,6 @@ _start:
|
||||
# CHECK-NEXT: EntrySize: 0
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Symbols [
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: (0)
|
||||
# CHECK-NEXT: Value: 0x0
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Local (0x0)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: Undefined (0x0)
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: _start
|
||||
# CHECK-NEXT: Value: [[ENTRY]]
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Global (0x1)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: .text
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: ProgramHeaders [
|
||||
# CHECK-NEXT: ProgramHeader {
|
||||
# CHECK-NEXT: Type: PT_PHDR (0x6)
|
||||
@ -198,3 +178,23 @@ _start:
|
||||
# CHECK-NEXT: Alignment: 0
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Symbols [
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: (0)
|
||||
# CHECK-NEXT: Value: 0x0
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Local (0x0)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: Undefined (0x0)
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: _start
|
||||
# CHECK-NEXT: Value: [[ENTRY]]
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Global (0x1)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: .text
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
|
@ -128,26 +128,6 @@ _start:
|
||||
# CHECK-NEXT: EntrySize: 0
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Symbols [
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: (0)
|
||||
# CHECK-NEXT: Value: 0x0
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Local (0x0)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: Undefined (0x0)
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: _start
|
||||
# CHECK-NEXT: Value: [[ENTRY]]
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Global (0x1)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: .text
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: ProgramHeaders [
|
||||
# CHECK-NEXT: ProgramHeader {
|
||||
# CHECK-NEXT: Type: PT_PHDR (0x6)
|
||||
@ -200,6 +180,26 @@ _start:
|
||||
# CHECK-NEXT: Alignment: 0
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Symbols [
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: (0)
|
||||
# CHECK-NEXT: Value: 0x0
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Local (0x0)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: Undefined (0x0)
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: _start
|
||||
# CHECK-NEXT: Value: [[ENTRY]]
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Global (0x1)
|
||||
# CHECK-NEXT: Type: None (0x0)
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: .text
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
|
||||
# Test for the response file (POSIX quoting style)
|
||||
# RUN: echo " -o %t2" > %t.responsefile
|
||||
|
@ -12,6 +12,8 @@
|
||||
# and emit DT_RELACOUNT (except on MIPS) to indicate the number of relative
|
||||
# relocations.
|
||||
|
||||
# CHECK: DynamicSection [
|
||||
# CHECK: RELACOUNT 1
|
||||
# CHECK: Relocations [
|
||||
# CHECK-NEXT: Section ({{.*}}) .rela.dyn {
|
||||
# CHECK-NEXT: 0x3428 R_X86_64_RELATIVE - 0x3430
|
||||
@ -21,12 +23,12 @@
|
||||
# CHECK-NEXT: 0x3418 R_X86_64_64 bbb 0x0
|
||||
# CHECK-NEXT: 0x3410 R_X86_64_64 ccc 0x0
|
||||
# CHECK-NEXT: }
|
||||
# CHECK: DynamicSection [
|
||||
# CHECK: RELACOUNT 1
|
||||
|
||||
# RUN: ld.lld -z nocombreloc -shared %t.o %t1.o -o %t.so
|
||||
# RUN: llvm-readobj -r --dynamic-table %t.so | FileCheck --check-prefix=NOCOMB %s
|
||||
|
||||
# NOCOMB: DynamicSection [
|
||||
# NOCOMB-NOT: RELACOUNT
|
||||
# NOCOMB: Relocations [
|
||||
# NOCOMB-NEXT: Section ({{.*}}) .rela.dyn {
|
||||
# NOCOMB-NEXT: 0x33F8 R_X86_64_64 aaa 0x0
|
||||
@ -36,8 +38,6 @@
|
||||
# NOCOMB-NEXT: 0x3418 R_X86_64_RELATIVE - 0x3420
|
||||
# NOCOMB-NEXT: 0x23F0 R_X86_64_GLOB_DAT aaa 0x0
|
||||
# NOCOMB-NEXT: }
|
||||
# NOCOMB: DynamicSection [
|
||||
# NOCOMB-NOT: RELACOUNT
|
||||
|
||||
.data
|
||||
.quad aaa
|
||||
|
@ -37,17 +37,17 @@
|
||||
// CHECK-NEXT: 0000: 74210000 00000000 00000000
|
||||
// CHECK-NEXT: )
|
||||
|
||||
// CHECK: Type: PT_DYNAMIC
|
||||
// CHECK-NEXT: Offset: 0x174
|
||||
// CHECK-NEXT: VirtualAddress: 0x2174
|
||||
// CHECK-NEXT: PhysicalAddress: 0x2174
|
||||
|
||||
// CHECK: Relocations [
|
||||
// CHECK-NEXT: Section ({{.*}}) .rel.dyn {
|
||||
// CHECK-NEXT: 0x21C4 R_386_RELATIVE - 0x0
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: ]
|
||||
|
||||
// CHECK: Type: PT_DYNAMIC
|
||||
// CHECK-NEXT: Offset: 0x174
|
||||
// CHECK-NEXT: VirtualAddress: 0x2174
|
||||
// CHECK-NEXT: PhysicalAddress: 0x2174
|
||||
|
||||
calll .L0$pb
|
||||
.L0$pb:
|
||||
popl %eax
|
||||
|
@ -4,7 +4,7 @@
|
||||
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/dynamic-reloc.s -o %t3.o
|
||||
// RUN: ld.lld -shared %t2.o -soname=so -o %t2.so
|
||||
// RUN: ld.lld %t.o %t3.o %t2.so -o %t
|
||||
// RUN: llvm-readobj --dynamic-table -r --expand-relocs -S %t | FileCheck %s
|
||||
// RUN: llvm-readobj --dynamic-table -r -S %t | FileCheck %s
|
||||
|
||||
// CHECK: Index: 1
|
||||
// CHECK-NEXT: Name: .dynsym
|
||||
@ -29,17 +29,6 @@
|
||||
// CHECK-NEXT: SHF_EXECINSTR
|
||||
// CHECK-NEXT: ]
|
||||
|
||||
// CHECK: Relocations [
|
||||
// CHECK-NEXT: Section ({{.*}}) .rela.plt {
|
||||
// CHECK-NEXT: Relocation {
|
||||
// CHECK-NEXT: Offset:
|
||||
// CHECK-NEXT: Type: R_X86_64_JUMP_SLOT
|
||||
// CHECK-NEXT: Symbol: bar
|
||||
// CHECK-NEXT: Addend: 0x0
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: ]
|
||||
|
||||
// CHECK: DynamicSection [
|
||||
// CHECK-NEXT: Tag Type Name/Value
|
||||
// CHECK-NEXT: 0x0000000000000001 NEEDED Shared library: [so]
|
||||
@ -57,6 +46,12 @@
|
||||
// CHECK-NEXT: 0x0000000000000000 NULL 0x0
|
||||
// CHECK-NEXT: ]
|
||||
|
||||
// CHECK: Relocations [
|
||||
// CHECK-NEXT: Section ({{.*}}) .rela.plt {
|
||||
// CHECK-NEXT: R_X86_64_JUMP_SLOT bar 0x0
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: ]
|
||||
|
||||
.global _start
|
||||
_start:
|
||||
.quad bar + 0x42
|
||||
|
@ -14,6 +14,10 @@
|
||||
# At the same time, weak symbols should not cause adding DT_NEEDED;
|
||||
# this case is checked with symbol qux and %t4.so.
|
||||
|
||||
# CHECK-NOT: NEEDED
|
||||
# CHECK: NEEDED Shared library: [{{.*}}3.so]
|
||||
# CHECK-NOT: NEEDED
|
||||
|
||||
# CHECK: DynamicSymbols [
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name:
|
||||
@ -62,10 +66,6 @@
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
|
||||
# CHECK-NOT: NEEDED
|
||||
# CHECK: NEEDED Shared library: [{{.*}}3.so]
|
||||
# CHECK-NOT: NEEDED
|
||||
|
||||
# Test with %t.o at the end too.
|
||||
# RUN: ld.lld --gc-sections --export-dynamic-symbol foo -o %t --as-needed %t2.so %t3.so %t4.so %t.o
|
||||
# RUN: llvm-readobj --dynamic-table --dyn-symbols %t | FileCheck --check-prefix=CHECK %s
|
||||
|
@ -11,13 +11,6 @@
|
||||
# CHECK: .rela.dyn 00000030 0000000000000248
|
||||
# CHECK: .got.plt 00000010 00000000000033a0
|
||||
|
||||
# TAGS: Relocations [
|
||||
# TAGS-NEXT: Section {{.*}} .rela.dyn {
|
||||
# TAGS-NEXT: R_X86_64_IRELATIVE
|
||||
# TAGS-NEXT: R_X86_64_IRELATIVE
|
||||
# TAGS-NEXT: }
|
||||
# TAGS-NEXT: ]
|
||||
|
||||
# TAGS: Tag Type Name/Value
|
||||
# TAGS: 0x0000000000000007 RELA 0x248
|
||||
# TAGS: 0x0000000000000008 RELASZ 48 (bytes)
|
||||
@ -26,6 +19,13 @@
|
||||
# TAGS: 0x0000000000000003 PLTGOT 0x33A0
|
||||
# TAGS: 0x0000000000000014 PLTREL RELA
|
||||
|
||||
# TAGS: Relocations [
|
||||
# TAGS-NEXT: Section {{.*}} .rela.dyn {
|
||||
# TAGS-NEXT: R_X86_64_IRELATIVE
|
||||
# TAGS-NEXT: R_X86_64_IRELATIVE
|
||||
# TAGS-NEXT: }
|
||||
# TAGS-NEXT: ]
|
||||
|
||||
.text
|
||||
.type foo STT_GNU_IFUNC
|
||||
.globl foo
|
||||
|
@ -7,6 +7,11 @@
|
||||
// RUN: llvm-objdump -s %tout | FileCheck %s --check-prefix=GOTPLT
|
||||
// RUN: llvm-readobj -r --dynamic-table %tout | FileCheck %s
|
||||
|
||||
/// Check that the PLTRELSZ tag does not include the IRELATIVE relocations
|
||||
// CHECK: DynamicSection [
|
||||
// CHECK: 0x00000012 RELSZ 16 (bytes)
|
||||
// CHECK: 0x00000002 PLTRELSZ 16 (bytes)
|
||||
|
||||
// Check that the IRELATIVE relocations are after the JUMP_SLOT in the plt
|
||||
// CHECK: Relocations [
|
||||
// CHECK-NEXT: Section (4) .rel.dyn {
|
||||
@ -24,11 +29,6 @@
|
||||
// GOTPLT: 403298 20224000 00000000 00000000 e6114000
|
||||
// GOTPLT-NEXT: 4032a8 f6114000 b4114000 b5114000
|
||||
|
||||
// Check that the PLTRELSZ tag does not include the IRELATIVE relocations
|
||||
// CHECK: DynamicSection [
|
||||
// CHECK: 0x00000012 RELSZ 16 (bytes)
|
||||
// CHECK: 0x00000002 PLTRELSZ 16 (bytes)
|
||||
|
||||
// Check that a PLT header is written and the ifunc entries appear last
|
||||
// DISASM: Disassembly of section .text:
|
||||
// DISASM-EMPTY:
|
||||
|
@ -10,6 +10,11 @@
|
||||
// RUN: llvm-objdump -s %tout | FileCheck %s --check-prefix=GOTPLT
|
||||
// RUN: llvm-readobj -r --dynamic-table %tout | FileCheck %s
|
||||
|
||||
/// Check that the PLTRELSZ tag does not include the IRELATIVE relocations
|
||||
// CHECK: DynamicSection [
|
||||
// CHECK: 0x0000000000000008 RELASZ 48 (bytes)
|
||||
// CHECK: 0x0000000000000002 PLTRELSZ 48 (bytes)
|
||||
|
||||
// Check that the IRELATIVE relocations are after the JUMP_SLOT in the plt
|
||||
// CHECK: Relocations [
|
||||
// CHECK-NEXT: Section (4) .rela.dyn {
|
||||
@ -28,11 +33,6 @@
|
||||
// GOTPLT-NEXT: 203450 16132000 00000000 00000000 00000000
|
||||
// GOTPLT-NEXT: 203460 00000000 00000000
|
||||
|
||||
// Check that the PLTRELSZ tag does not include the IRELATIVE relocations
|
||||
// CHECK: DynamicSection [
|
||||
// CHECK: 0x0000000000000008 RELASZ 48 (bytes)
|
||||
// CHECK: 0x0000000000000002 PLTRELSZ 48 (bytes)
|
||||
|
||||
// Check that a PLT header is written and the ifunc entries appear last
|
||||
// DISASM: Disassembly of section .text:
|
||||
// DISASM-EMPTY:
|
||||
|
@ -21,6 +21,7 @@
|
||||
// GOTRELSHARED-NEXT: AddressAlignment: 4
|
||||
// GOTRELSHARED-NEXT: EntrySize: 0
|
||||
// GOTRELSHARED-NEXT: }
|
||||
// GOTRELSHARED: 0x6FFFFFFA RELCOUNT 8
|
||||
// GOTRELSHARED: Relocations [
|
||||
// GOTRELSHARED-NEXT: Section ({{.*}}) .rel.dyn {
|
||||
// GOTRELSHARED-NEXT: 0x22DA R_386_RELATIVE - 0x0
|
||||
@ -37,7 +38,6 @@
|
||||
// GOTRELSHARED-NEXT: 0x338C R_386_TLS_TPOFF tlslocal1 0x0
|
||||
// GOTRELSHARED-NEXT: }
|
||||
// GOTRELSHARED-NEXT: ]
|
||||
// GOTRELSHARED: 0x6FFFFFFA RELCOUNT 8
|
||||
|
||||
// DISASMSHARED: Disassembly of section test:
|
||||
// DISASMSHARED-EMPTY:
|
||||
|
@ -38,13 +38,13 @@
|
||||
// and should not require given symbols to be resolved
|
||||
// RUN: ld.lld -shared %t -o %t2 -init=_unknown -fini=_unknown
|
||||
// RUN: llvm-readobj --symbols --dynamic-table %t2 | FileCheck --check-prefix=NOENTRY %s
|
||||
// NOENTRY: Symbols [
|
||||
// NOENTRY-NOT: Name: _unknown
|
||||
// NOENTRY: ]
|
||||
// NOENTRY: DynamicSection [
|
||||
// NOENTRY-NOT: INIT
|
||||
// NOENTRY-NOT: FINI
|
||||
// NOENTRY: ]
|
||||
// NOENTRY: Symbols [
|
||||
// NOENTRY-NOT: Name: _unknown
|
||||
// NOENTRY: ]
|
||||
|
||||
.global _start,_init,_fini,_foo,_bar,_undef
|
||||
_start:
|
||||
|
@ -26,10 +26,10 @@ SECTIONS {
|
||||
# CHECK: foo PROGBITS 0000000000[[ADDR:[0-9a-f]*]] [[ADDR]]
|
||||
# CHECK-NEXT: .data PROGBITS 0000000000[[ADDR]] [[ADDR]]
|
||||
|
||||
# CHECK: Symbol table
|
||||
# CHECK: 0000000000[[ADDR]] 0 NOTYPE GLOBAL DEFAULT {{[0-9]+}} __start_foo
|
||||
# CHECK: 0000000000[[ADDR]] 0 NOTYPE GLOBAL DEFAULT {{[0-9]+}} __end_foo
|
||||
|
||||
# CHECK: Program Headers
|
||||
# CHECK: LOAD
|
||||
# CHECK-NEXT: LOAD 0x[[ADDR]] 0x0000000000[[ADDR]] 0x0000000000[[ADDR]]
|
||||
|
||||
# CHECK: Symbol table
|
||||
# CHECK: 0000000000[[ADDR]] 0 NOTYPE GLOBAL DEFAULT {{[0-9]+}} __start_foo
|
||||
# CHECK: 0000000000[[ADDR]] 0 NOTYPE GLOBAL DEFAULT {{[0-9]+}} __end_foo
|
||||
|
@ -1,7 +1,7 @@
|
||||
// REQUIRES: x86
|
||||
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
|
||||
// RUN: ld.lld --hash-style=sysv %t.o -o %t -pie
|
||||
// RUN: llvm-readobj -S -r -d %t | FileCheck %s
|
||||
// RUN: llvm-readobj -S -d -r %t | FileCheck %s
|
||||
// RUN: llvm-objdump -d %t | FileCheck --check-prefix=DISASM %s
|
||||
|
||||
.globl _start
|
||||
@ -31,9 +31,10 @@ foo:
|
||||
// CHECK-NEXT: Offset:
|
||||
// CHECK-NEXT: Size: 8
|
||||
|
||||
// CHECK: 0x000000006FFFFFF9 RELACOUNT 1
|
||||
|
||||
// CHECK: Relocations [
|
||||
// CHECK-NEXT: Section ({{.*}}) .rela.dyn {
|
||||
// CHECK-NEXT: 0x22C8 R_X86_64_RELATIVE - 0x1215
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK: 0x000000006FFFFFF9 RELACOUNT 1
|
||||
|
@ -1,7 +1,7 @@
|
||||
// REQUIRES: x86
|
||||
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
|
||||
// RUN: ld.lld %t.o -o %t -shared
|
||||
// RUN: llvm-readobj -S -r -d %t | FileCheck %s
|
||||
// RUN: llvm-readobj -S -d -r %t | FileCheck %s
|
||||
// RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=DISASM %s
|
||||
|
||||
bar:
|
||||
@ -29,9 +29,10 @@ foo:
|
||||
// CHECK-NEXT: Offset:
|
||||
// CHECK-NEXT: Size: 8
|
||||
|
||||
// CHECK: 0x000000006FFFFFF9 RELACOUNT 1
|
||||
|
||||
// CHECK: Relocations [
|
||||
// CHECK-NEXT: Section ({{.*}}) .rela.dyn {
|
||||
// CHECK-NEXT: 0x22E0 R_X86_64_RELATIVE - 0x122D
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK: 0x000000006FFFFFF9 RELACOUNT 1
|
||||
|
@ -7,7 +7,7 @@
|
||||
# RUN: ld.lld %t2.o -shared -o %t.so
|
||||
# RUN: ld.lld %t1.o %t.so -o %t.exe
|
||||
# RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t.exe | FileCheck %s
|
||||
# RUN: llvm-readobj --dynamic-table -S -r -A %t.exe \
|
||||
# RUN: llvm-readobj -S --dynamic-table -r -A %t.exe \
|
||||
# RUN: | FileCheck -check-prefix=REL %s
|
||||
|
||||
# CHECK: Disassembly of section .text:
|
||||
@ -58,14 +58,14 @@
|
||||
# REL-NEXT: ]
|
||||
# REL-NEXT: Address: 0x[[GOTPLTADDR:[0-9A-F]+]]
|
||||
|
||||
# REL: 0x70000032 MIPS_PLTGOT 0x[[GOTPLTADDR]]
|
||||
|
||||
# REL: Relocations [
|
||||
# REL-NEXT: Section (7) .rel.plt {
|
||||
# REL-NEXT: 0x[[PLTSLOT:[0-9A-F]+]] R_MIPS_JUMP_SLOT foo0 0x0
|
||||
# REL-NEXT: }
|
||||
# REL-NEXT: ]
|
||||
|
||||
# REL: 0x70000032 MIPS_PLTGOT 0x[[GOTPLTADDR]]
|
||||
|
||||
# REL: Primary GOT {
|
||||
# REL: Local entries [
|
||||
# REL-NEXT: ]
|
||||
|
@ -14,7 +14,7 @@
|
||||
# RUN: llvm-mc -filetype=obj -triple=mipsel-unknown-linux %s -o %t-el.o
|
||||
# RUN: ld.lld -shared %t-el.o -script %t.script -o %t-el.so
|
||||
# RUN: llvm-objdump -t -s %t-el.so | FileCheck -check-prefixes=SYM,EL %s
|
||||
# RUN: llvm-readelf -r -s --dynamic-table -A %t-el.so \
|
||||
# RUN: llvm-readelf --dynamic-table -r -s -A %t-el.so \
|
||||
# RUN: | FileCheck -check-prefix=REL %s
|
||||
|
||||
.data
|
||||
@ -34,6 +34,12 @@ v2:
|
||||
# EL: Contents of section .data:
|
||||
# EL-NEXT: {{.*}} 04000000 00100100
|
||||
# ^-- v2+4 ^-- v1
|
||||
|
||||
# REL: Dynamic section
|
||||
# REL: (RELSZ) 16
|
||||
# REL: (RELENT) 8
|
||||
# REL-NOT: (RELCOUNT)
|
||||
|
||||
# REL: Relocation section
|
||||
# REL: {{.*}} R_MIPS_REL32
|
||||
# REL-NEXT: {{.*}} R_MIPS_REL32 [[V2:[0-9a-f]+]]
|
||||
@ -41,10 +47,5 @@ v2:
|
||||
# REL: Symbol table
|
||||
# REL: {{.*}}: [[V2]] {{.*}} v2
|
||||
|
||||
# REL: Dynamic section
|
||||
# REL: (RELSZ) 16
|
||||
# REL: (RELENT) 8
|
||||
# REL-NOT: (RELCOUNT)
|
||||
|
||||
# REL: Global entries
|
||||
# REL: {{.*}} -32744(gp) [[V2]] {{.*}} v2
|
||||
|
@ -4,7 +4,7 @@
|
||||
# RUN: llvm-mc -filetype=obj -triple=mips64-unknown-linux %s -o %t.o
|
||||
# RUN: ld.lld -shared %t.o -o %t.so
|
||||
# RUN: llvm-objdump -s -t %t.so | FileCheck -check-prefix=SYM %s
|
||||
# RUN: llvm-readelf -r -s --dynamic-table -A %t.so | FileCheck %s
|
||||
# RUN: llvm-readelf --dynamic-table -r -s -A %t.so | FileCheck %s
|
||||
|
||||
.data
|
||||
.globl v2
|
||||
@ -19,6 +19,10 @@ v2:
|
||||
# SYM: Contents of section .data:
|
||||
# SYM-NEXT: {{.*}} 00000000 00000008 00000000 [[V1]]
|
||||
|
||||
# CHECK: Dynamic section
|
||||
# CHECK: (RELSZ) 32 (bytes)
|
||||
# CHECK: (RELENT) 16 (bytes)
|
||||
|
||||
# CHECK: Relocation section
|
||||
# CHECK: [[V2:[0-9a-f]+]] {{.*}} R_MIPS_REL32/R_MIPS_64/R_MIPS_NONE
|
||||
# CHECK: [[V1:[0-9a-f]+]] {{.*}} R_MIPS_REL32/R_MIPS_64/R_MIPS_NONE [[V2]] v2
|
||||
@ -27,10 +31,6 @@ v2:
|
||||
# CHECK: {{.*}}: [[V1]] {{.*}} v1
|
||||
# CHECK: {{.*}}: [[V2]] {{.*}} v2
|
||||
|
||||
# CHECK: Dynamic section
|
||||
# CHECK: (RELSZ) 32 (bytes)
|
||||
# CHECK: (RELENT) 16 (bytes)
|
||||
|
||||
# CHECK: Primary GOT:
|
||||
# CHECK: Global entries:
|
||||
# CHECK: {{.*}} -32736(gp) [[V2]] [[V2]] {{.*}} v2
|
||||
|
@ -96,11 +96,6 @@
|
||||
# DSO-NEXT: Offset:
|
||||
# DSO-NEXT: Size: 8
|
||||
# DSO: ]
|
||||
# DSO: DynamicSymbols [
|
||||
# DSO: Name:
|
||||
# DSO: Name: __start
|
||||
# DSO: Name: _foo
|
||||
# DSO: ]
|
||||
# DSO: DynamicSection [
|
||||
# DSO-NEXT: Tag Type Name/Value
|
||||
# DSO-DAG: 0x00000003 PLTGOT [[GOTADDR]]
|
||||
@ -110,6 +105,11 @@
|
||||
# DSO-DAG: 0x7000000A MIPS_LOCAL_GOTNO 2
|
||||
# DSO-DAG: 0x70000011 MIPS_SYMTABNO 3
|
||||
# DSO-DAG: 0x70000013 MIPS_GOTSYM 0x3
|
||||
# DSO: ]
|
||||
# DSO-NEXT: DynamicSymbols [
|
||||
# DSO: Name:
|
||||
# DSO: Name: __start
|
||||
# DSO: Name: _foo
|
||||
# DSO: ]
|
||||
|
||||
.text
|
||||
|
@ -9,13 +9,6 @@
|
||||
# RUN: llvm-readelf -r --dyn-syms --dynamic-table -A %t2.so \
|
||||
# RUN: | FileCheck -check-prefixes=CHECK,SYM %s
|
||||
|
||||
# CHECK: There are no relocations in this file.
|
||||
|
||||
# CHECK: Symbol table '.dynsym'
|
||||
# CHECK-DAG: [[FOO:[0-9a-f]+]] 0 NOTYPE WEAK DEFAULT 8 foo
|
||||
# CHECK-DAG: 00000000 0 NOTYPE WEAK DEFAULT UND bar
|
||||
# CHECK-DAG: [[SYM:[0-9a-f]+]] 0 NOTYPE GLOBAL DEFAULT 8 sym
|
||||
|
||||
# CHECK: Dynamic section
|
||||
# CHECK: (MIPS_SYMTABNO) 4
|
||||
# NOSYM: (MIPS_LOCAL_GOTNO) 2
|
||||
@ -23,6 +16,13 @@
|
||||
# SYM: (MIPS_LOCAL_GOTNO) 4
|
||||
# SYM: (MIPS_GOTSYM) 0x3
|
||||
|
||||
# CHECK: There are no relocations in this file.
|
||||
|
||||
# CHECK: Symbol table '.dynsym'
|
||||
# CHECK-DAG: [[FOO:[0-9a-f]+]] 0 NOTYPE WEAK DEFAULT 8 foo
|
||||
# CHECK-DAG: 00000000 0 NOTYPE WEAK DEFAULT UND bar
|
||||
# CHECK-DAG: [[SYM:[0-9a-f]+]] 0 NOTYPE GLOBAL DEFAULT 8 sym
|
||||
|
||||
# NOSYM: Primary GOT:
|
||||
# NOSYM-NOT: Local entries:
|
||||
# NOSYM: Global entries:
|
||||
|
@ -15,9 +15,6 @@
|
||||
__start:
|
||||
lui $gp, %hi(%neg(%gp_rel(g1)))
|
||||
|
||||
# CHECK: Name: _gp
|
||||
# CHECK-NEXT: Value: 0x[[GP:[0-9A-F]+]]
|
||||
|
||||
# CHECK: ProgramHeader {
|
||||
# CHECK: Type: PT_MIPS_OPTIONS
|
||||
# CHECK-NEXT: Offset:
|
||||
@ -31,6 +28,9 @@ __start:
|
||||
# CHECK-NEXT: Alignment: 8
|
||||
# CHECK-NEXT: }
|
||||
|
||||
# CHECK: Name: _gp
|
||||
# CHECK-NEXT: Value: 0x[[GP:[0-9A-F]+]]
|
||||
|
||||
# CHECK: MIPS Options {
|
||||
# CHECK-NEXT: ODK_REGINFO {
|
||||
# CHECK-NEXT: GP: 0x[[GP]]
|
||||
|
@ -9,25 +9,25 @@
|
||||
|
||||
// Change upper case to lower case so that we can match unwind info (which is dumped
|
||||
// in upper case) against program headers (which are dumped in lower case).
|
||||
// RUN: llvm-readelf -l --unwind %t0 | tr A-Z a-z | FileCheck %s
|
||||
// RUN: llvm-readelf -l --unwind %t1 | tr A-Z a-z | FileCheck %s
|
||||
// RUN: llvm-readelf -l --unwind %t0 | tr A-Z a-z | FileCheck --ignore-case %s
|
||||
// RUN: llvm-readelf -l --unwind %t1 | tr A-Z a-z | FileCheck --ignore-case %s
|
||||
|
||||
// CHECK: LOAD {{[^ ]*}} 0x{{0*}}[[TEXT_ADDR:[0-9a-f]+]] {{.*}} R E
|
||||
// CHECK: EXIDX 0x{{0*}}[[EXIDX_OFFSET:[0-9a-f]+]] {{.*}} 0x00010 0x00010 R
|
||||
|
||||
// Each file should have one exidx section for its text section and one sentinel.
|
||||
// CHECK: sectionoffset: 0x[[EXIDX_OFFSET:.*]]
|
||||
// CHECK-NEXT: entries [
|
||||
// CHECK-NEXT: entry {
|
||||
// CHECK-NEXT: functionaddress: 0x[[TEXT_ADDR:.*]]
|
||||
// CHECK-NEXT: model: cantunwind
|
||||
// CHECK: SectionOffset: 0x[[EXIDX_OFFSET]]
|
||||
// CHECK-NEXT: Entries [
|
||||
// CHECK-NEXT: Entry {
|
||||
// CHECK-NEXT: Functionaddress: 0x[[TEXT_ADDR]]
|
||||
// CHECK-NEXT: Model: CantUnwind
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: entry {
|
||||
// CHECK-NEXT: functionaddress:
|
||||
// CHECK-NEXT: model: cantunwind
|
||||
// CHECK-NEXT: Entry {
|
||||
// CHECK-NEXT: FunctionAddress:
|
||||
// CHECK-NEXT: Model: CantUnwind
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: ]
|
||||
|
||||
// CHECK: load {{[^ ]*}} 0x{{0*}}[[TEXT_ADDR]] {{.*}} r e
|
||||
// CHECK: exidx 0x{{0*}}[[EXIDX_OFFSET]] {{.*}} 0x00010 0x00010 r
|
||||
|
||||
.section .llvm_sympart,"",%llvm_sympart
|
||||
.asciz "part1"
|
||||
.4byte p1
|
||||
|
@ -18,6 +18,10 @@
|
||||
// PART0: .data PROGBITS 000000000000[[DATA_SEGMENT:.]]378
|
||||
// PART1: .data PROGBITS 000000000000[[DATA_SEGMENT:.]]340
|
||||
|
||||
// CHECK: Dynamic section
|
||||
// CHECK: 0x0000000060000011 (ANDROID_RELA) 0x[[ANDROID_RELA_ADDR]]
|
||||
// CHECK: 0x0000000000000024 (RELR) 0x[[RELR_ADDR]]
|
||||
|
||||
// CHECK: Relocation section '.rela.dyn'
|
||||
// CHECK-NEXT: Offset
|
||||
// PART0-NEXT: 000000000000[[DATA_SEGMENT]]380 {{.*}} R_X86_64_64 000000000000[[DATA_SEGMENT]]378 p0 + 0
|
||||
@ -30,10 +34,6 @@
|
||||
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]340 {{.*}} R_X86_64_RELATIVE
|
||||
// CHECK-EMPTY:
|
||||
|
||||
// CHECK: Dynamic section
|
||||
// CHECK: 0x0000000060000011 (ANDROID_RELA) 0x[[ANDROID_RELA_ADDR]]
|
||||
// CHECK: 0x0000000000000024 (RELR) 0x[[RELR_ADDR]]
|
||||
|
||||
.section .llvm_sympart,"",@llvm_sympart
|
||||
.asciz "part1"
|
||||
.quad p1
|
||||
|
@ -51,57 +51,26 @@
|
||||
// CHECK-NEXT: .strtab STRTAB
|
||||
// CHECK-NEXT: Key to Flags
|
||||
|
||||
// CHECK: Relocation section '.rela.dyn'
|
||||
// CHECK-NEXT: Offset
|
||||
// PART0-NEXT: 000000000000[[DATA_SEGMENT]]178 {{.*}} R_X86_64_64 {{.*}} f1@v3 + 0
|
||||
// PART0-NEXT: {{0*}}[[INIT_ARRAY_ADDR]] {{.*}} R_X86_64_64 {{.*}} p0@@x1 + 0
|
||||
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]148 {{.*}} R_X86_64_RELATIVE 3178
|
||||
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]130 {{.*}} R_X86_64_64 {{.*}} f2@v2 + 0
|
||||
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]138 {{.*}} R_X86_64_64 {{.*}} p0@@x1 + 0
|
||||
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]140 {{.*}} R_X86_64_64 {{.*}} p0@@x1 + 0
|
||||
// CHECK: Program Headers:
|
||||
// CHECK-NEXT: Type
|
||||
// PART0-NEXT: PHDR {{.*}} 0x000230 0x000230 R
|
||||
// PART1-NEXT: PHDR {{.*}} 0x0001f8 0x0001f8 R
|
||||
// PART0-NEXT: LOAD 0x000000 0x0000000000000000 0x0000000000000000 {{.*}} R 0x1000
|
||||
// PART0-NEXT: LOAD 0x001000 0x0000000000001000 0x0000000000001000 {{.*}} R E 0x1000
|
||||
// PART0-NEXT: LOAD 0x002000 0x0000000000002000 0x0000000000002000 {{.*}} RW 0x1000
|
||||
// PART0-NEXT: LOAD 0x002178 0x0000000000003178 0x0000000000003178 {{.*}} RW 0x1000
|
||||
// PART0-NEXT: LOAD 0x003150 0x0000000000008150 0x0000000000008150 0x000000 0x001000 RW 0x1000
|
||||
// PART1-NEXT: LOAD 0x000000 0x0000000000004000 0x0000000000004000 {{.*}} R 0x1000
|
||||
// PART1-NEXT: LOAD 0x001000 0x0000000000005000 0x0000000000005000 {{.*}} R E 0x1000
|
||||
// PART1-NEXT: LOAD 0x002000 0x0000000000006000 0x0000000000006000 {{.*}} RW 0x1000
|
||||
// PART1-NEXT: LOAD 0x002130 0x0000000000007130 0x0000000000007130 {{.*}} RW 0x1000
|
||||
// CHECK-NEXT: DYNAMIC {{.*}} 0x{{0*}}[[DYNAMIC_ADDR]] 0x{{0*}}[[DYNAMIC_ADDR]] {{.*}} RW 0x8
|
||||
// PART0-NEXT: GNU_RELRO 0x002000 0x0000000000002000 0x0000000000002000 {{.*}} R 0x1
|
||||
// PART1-NEXT: GNU_RELRO 0x002000 0x0000000000006000 0x0000000000006000 {{.*}} R 0x1
|
||||
// CHECK-NEXT: GNU_EH_FRAME {{.*}} 0x{{0*}}[[EH_FRAME_HDR_ADDR]] 0x{{0*}}[[EH_FRAME_HDR_ADDR]] {{.*}} R 0x4
|
||||
// CHECK-NEXT: GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0x0
|
||||
// CHECK-EMPTY:
|
||||
|
||||
// PART0: Relocation section '.rela.plt'
|
||||
// PART0-NEXT: Offset
|
||||
// PART0-NEXT: 000000000000[[DATA_SEGMENT]]198 {{.*}} R_X86_64_JUMP_SLOT {{.*}} f1@v3 + 0
|
||||
// PART0-NEXT: 000000000000[[DATA_SEGMENT]]1a0 {{.*}} R_X86_64_JUMP_SLOT {{.*}} f2@v2 + 0
|
||||
// PART0-EMPTY:
|
||||
|
||||
// CHECK: Symbol table '.dynsym'
|
||||
// PART0: 1: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f1@v3
|
||||
// PART0: 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f2@v2
|
||||
// PART0: 3: {{0*}}[[TEXT_ADDR]] 0 NOTYPE GLOBAL DEFAULT {{.*}} p0@@x1
|
||||
// PART1: 1: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f2@v2
|
||||
// PART1: 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND p0@@x1
|
||||
// PART1: 3: {{0*}}[[TEXT_ADDR]] 0 NOTYPE GLOBAL DEFAULT {{.*}} p1@@x2
|
||||
// PART1: 4: {{0*}}[[TEXT_ADDR]] 0 NOTYPE GLOBAL DEFAULT {{.*}} p1alias@@x2
|
||||
// CHECK-EMPTY:
|
||||
|
||||
// PART0: Symbol table '.symtab'
|
||||
// PART0: 000000000000048c 0 NOTYPE LOCAL HIDDEN {{.*}} __part_index_begin
|
||||
// PART0: 0000000000000498 0 NOTYPE LOCAL HIDDEN {{.*}} __part_index_end
|
||||
|
||||
// PART-INDEX: Contents of section .dynstr:
|
||||
// PART-INDEX-NEXT: 03a8 00663100 66320070 30007061 72743100 .f1.f2.p0.part1.
|
||||
// PART-INDEX: Contents of section .rodata:
|
||||
// 0x48c + 0xffffff26 = 0x3b2
|
||||
// 0x490 + 0x3b70 = 0x4000
|
||||
// PART-INDEX-NEXT: 048c 26ffffff 703b0000 50410000
|
||||
|
||||
// CHECK: {{.*}}EHFrameHeader
|
||||
// CHECK: Address: 0x[[EH_FRAME_HDR_ADDR]]
|
||||
// CHECK: eh_frame_ptr: 0x[[EH_FRAME_ADDR]]
|
||||
// CHECK: initial_location: 0x[[TEXT_ADDR]]
|
||||
// CHECK: address: 0x[[FDE_ADDR:.*]]
|
||||
|
||||
// CHECK: .eh_frame section
|
||||
// CHECK: 0x[[EH_FRAME_ADDR]]] CIE length=20
|
||||
// CHECK-NOT: FDE
|
||||
// CHECK: 0x[[FDE_ADDR]]] FDE length=20 cie={{.}}0x[[EH_FRAME_ADDR]]
|
||||
// CHECK-NEXT: initial_location: 0x[[TEXT_ADDR]]
|
||||
// CHECK-NOT: FDE
|
||||
// CHECK: CIE length=0
|
||||
|
||||
// CHECK: Dynamic section
|
||||
// CHECK-NEXT: Tag
|
||||
// CHECK-NEXT: 0x0000000000000001 (NEEDED) Shared library: [verneed1.so.0]
|
||||
@ -131,26 +100,55 @@
|
||||
// CHECK-NEXT: 0x000000006fffffff (VERNEEDNUM) 1
|
||||
// PART0-NEXT: 0x0000000000000000 (NULL) 0x0
|
||||
|
||||
// CHECK: Program Headers:
|
||||
// CHECK-NEXT: Type
|
||||
// PART0-NEXT: PHDR {{.*}} 0x000230 0x000230 R
|
||||
// PART1-NEXT: PHDR {{.*}} 0x0001f8 0x0001f8 R
|
||||
// PART0-NEXT: LOAD 0x000000 0x0000000000000000 0x0000000000000000 {{.*}} R 0x1000
|
||||
// PART0-NEXT: LOAD 0x001000 0x0000000000001000 0x0000000000001000 {{.*}} R E 0x1000
|
||||
// PART0-NEXT: LOAD 0x002000 0x0000000000002000 0x0000000000002000 {{.*}} RW 0x1000
|
||||
// PART0-NEXT: LOAD 0x002178 0x0000000000003178 0x0000000000003178 {{.*}} RW 0x1000
|
||||
// PART0-NEXT: LOAD 0x003150 0x0000000000008150 0x0000000000008150 0x000000 0x001000 RW 0x1000
|
||||
// PART1-NEXT: LOAD 0x000000 0x0000000000004000 0x0000000000004000 {{.*}} R 0x1000
|
||||
// PART1-NEXT: LOAD 0x001000 0x0000000000005000 0x0000000000005000 {{.*}} R E 0x1000
|
||||
// PART1-NEXT: LOAD 0x002000 0x0000000000006000 0x0000000000006000 {{.*}} RW 0x1000
|
||||
// PART1-NEXT: LOAD 0x002130 0x0000000000007130 0x0000000000007130 {{.*}} RW 0x1000
|
||||
// CHECK-NEXT: DYNAMIC {{.*}} 0x{{0*}}[[DYNAMIC_ADDR]] 0x{{0*}}[[DYNAMIC_ADDR]] {{.*}} RW 0x8
|
||||
// PART0-NEXT: GNU_RELRO 0x002000 0x0000000000002000 0x0000000000002000 {{.*}} R 0x1
|
||||
// PART1-NEXT: GNU_RELRO 0x002000 0x0000000000006000 0x0000000000006000 {{.*}} R 0x1
|
||||
// CHECK-NEXT: GNU_EH_FRAME {{.*}} 0x{{0*}}[[EH_FRAME_HDR_ADDR]] 0x{{0*}}[[EH_FRAME_HDR_ADDR]] {{.*}} R 0x4
|
||||
// CHECK-NEXT: GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0x0
|
||||
// CHECK: Relocation section '.rela.dyn'
|
||||
// CHECK-NEXT: Offset
|
||||
// PART0-NEXT: 000000000000[[DATA_SEGMENT]]178 {{.*}} R_X86_64_64 {{.*}} f1@v3 + 0
|
||||
// PART0-NEXT: {{0*}}[[INIT_ARRAY_ADDR]] {{.*}} R_X86_64_64 {{.*}} p0@@x1 + 0
|
||||
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]148 {{.*}} R_X86_64_RELATIVE 3178
|
||||
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]130 {{.*}} R_X86_64_64 {{.*}} f2@v2 + 0
|
||||
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]138 {{.*}} R_X86_64_64 {{.*}} p0@@x1 + 0
|
||||
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]140 {{.*}} R_X86_64_64 {{.*}} p0@@x1 + 0
|
||||
|
||||
// PART0: Relocation section '.rela.plt'
|
||||
// PART0-NEXT: Offset
|
||||
// PART0-NEXT: 000000000000[[DATA_SEGMENT]]198 {{.*}} R_X86_64_JUMP_SLOT {{.*}} f1@v3 + 0
|
||||
// PART0-NEXT: 000000000000[[DATA_SEGMENT]]1a0 {{.*}} R_X86_64_JUMP_SLOT {{.*}} f2@v2 + 0
|
||||
|
||||
// CHECK-NEXT: EHFrameHeader
|
||||
// CHECK: Address: 0x[[EH_FRAME_HDR_ADDR]]
|
||||
// CHECK: eh_frame_ptr: 0x[[EH_FRAME_ADDR]]
|
||||
// CHECK: initial_location: 0x[[TEXT_ADDR]]
|
||||
// CHECK: address: 0x[[FDE_ADDR:.*]]
|
||||
|
||||
// CHECK: .eh_frame section
|
||||
// CHECK: 0x[[EH_FRAME_ADDR]]] CIE length=20
|
||||
// CHECK-NOT: FDE
|
||||
// CHECK: 0x[[FDE_ADDR]]] FDE length=20 cie={{.}}0x[[EH_FRAME_ADDR]]
|
||||
// CHECK-NEXT: initial_location: 0x[[TEXT_ADDR]]
|
||||
// CHECK-NOT: FDE
|
||||
// CHECK: CIE length=0
|
||||
|
||||
// CHECK: Symbol table '.dynsym'
|
||||
// PART0: 1: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f1@v3
|
||||
// PART0: 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f2@v2
|
||||
// PART0: 3: {{0*}}[[TEXT_ADDR]] 0 NOTYPE GLOBAL DEFAULT {{.*}} p0@@x1
|
||||
// PART1: 1: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f2@v2
|
||||
// PART1: 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND p0@@x1
|
||||
// PART1: 3: {{0*}}[[TEXT_ADDR]] 0 NOTYPE GLOBAL DEFAULT {{.*}} p1@@x2
|
||||
// PART1: 4: {{0*}}[[TEXT_ADDR]] 0 NOTYPE GLOBAL DEFAULT {{.*}} p1alias@@x2
|
||||
// CHECK-EMPTY:
|
||||
|
||||
// PART0: Symbol table '.symtab'
|
||||
// PART0: 000000000000048c 0 NOTYPE LOCAL HIDDEN {{.*}} __part_index_begin
|
||||
// PART0: 0000000000000498 0 NOTYPE LOCAL HIDDEN {{.*}} __part_index_end
|
||||
|
||||
// PART-INDEX: Contents of section .dynstr:
|
||||
// PART-INDEX-NEXT: 03a8 00663100 66320070 30007061 72743100 .f1.f2.p0.part1.
|
||||
// PART-INDEX: Contents of section .rodata:
|
||||
// 0x48c + 0xffffff26 = 0x3b2
|
||||
// 0x490 + 0x3b70 = 0x4000
|
||||
// PART-INDEX-NEXT: 048c 26ffffff 703b0000 50410000
|
||||
|
||||
// CHECK: Version symbols section '.gnu.version'
|
||||
// CHECK-NEXT: Addr:
|
||||
// PART0-NEXT: 000: 0 (*local*) 4 (v3) 5 (v2) 2 (x1)
|
||||
|
@ -10,14 +10,14 @@
|
||||
# RUN: llvm-readelf -x .plt %t | FileCheck --check-prefix=HEX %s
|
||||
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
|
||||
|
||||
# SEC: .got PROGBITS 100202b8
|
||||
# RELOC: PPC_GOT 0x100202B8
|
||||
|
||||
# RELOC: .rela.plt {
|
||||
# RELOC-NEXT: 0x100302C4 R_PPC_JMP_SLOT f 0x0
|
||||
# RELOC-NEXT: 0x100302C8 R_PPC_JMP_SLOT g 0x0
|
||||
# RELOC-NEXT: }
|
||||
|
||||
# SEC: .got PROGBITS 100202b8
|
||||
# RELOC: PPC_GOT 0x100202B8
|
||||
|
||||
## .got2+0x8000-0x10004 = 0x30000+0x8000-0x10004 = 65536*2+32764
|
||||
# CHECK-LABEL: _start:
|
||||
# CHECK-NEXT: bl .+16
|
||||
|
@ -59,6 +59,14 @@ _start:
|
||||
// CHECK-NEXT: Offset:
|
||||
// CHECK-NEXT: Size: [[FINI_SIZE:.*]]
|
||||
|
||||
// CHECK: DynamicSection
|
||||
// CHECK: PREINIT_ARRAY [[PREINIT_ADDR]]
|
||||
// CHECK: PREINIT_ARRAYSZ [[PREINIT_SIZE]] (bytes)
|
||||
// CHECK: INIT_ARRAY [[INIT_ADDR]]
|
||||
// CHECK: INIT_ARRAYSZ [[INIT_SIZE]] (bytes)
|
||||
// CHECK: FINI_ARRAY [[FINI_ADDR]]
|
||||
// CHECK: FINI_ARRAYSZ [[FINI_SIZE]] (bytes)
|
||||
|
||||
// CHECK: Relocations [
|
||||
// CHECK-NEXT: ]
|
||||
|
||||
@ -128,14 +136,6 @@ _start:
|
||||
// CHECK-NEXT: Section: .preinit_array
|
||||
// CHECK-NEXT: }
|
||||
|
||||
// CHECK: DynamicSection
|
||||
// CHECK: PREINIT_ARRAY [[PREINIT_ADDR]]
|
||||
// CHECK: PREINIT_ARRAYSZ [[PREINIT_SIZE]] (bytes)
|
||||
// CHECK: INIT_ARRAY [[INIT_ADDR]]
|
||||
// CHECK: INIT_ARRAYSZ [[INIT_SIZE]] (bytes)
|
||||
// CHECK: FINI_ARRAY [[FINI_ADDR]]
|
||||
// CHECK: FINI_ARRAYSZ [[FINI_SIZE]] (bytes)
|
||||
|
||||
// DISASM: _start:
|
||||
// DISASM-NEXT: callq {{.*}} <__preinit_array_start>
|
||||
// DISASM-NEXT: callq {{.*}} <__fini_array_start>
|
||||
|
@ -18,9 +18,6 @@
|
||||
// CHECK-NEXT: Offset: 0x368
|
||||
// CHECK-NEXT: Size: 8
|
||||
|
||||
// CHECK: 0x202368 R_X86_64_COPY a 0x0
|
||||
// CHECK: 0x20236C R_X86_64_COPY b 0x0
|
||||
|
||||
// CHECK: Type: PT_GNU_RELRO (0x6474E552)
|
||||
// CHECK-NEXT: Offset: 0x2A8
|
||||
// CHECK-NEXT: VirtualAddress: 0x2022A8
|
||||
@ -28,6 +25,9 @@
|
||||
// CHECK-NEXT: FileSize: 192
|
||||
// CHECK-NEXT: MemSize: 3416
|
||||
|
||||
// CHECK: 0x202368 R_X86_64_COPY a 0x0
|
||||
// CHECK: 0x20236C R_X86_64_COPY b 0x0
|
||||
|
||||
.text
|
||||
.global _start
|
||||
_start:
|
||||
|
@ -22,17 +22,17 @@
|
||||
# RUN: llvm-readelf -x .got %t.64 | FileCheck --check-prefix=LE64-GOT %s
|
||||
# RUN: llvm-objdump -d --no-show-raw-insn %t.64 | FileCheck --check-prefixes=LE,LE64 %s
|
||||
|
||||
# IE32-REL: FLAGS STATIC_TLS
|
||||
# IE32-REL: .rela.dyn {
|
||||
# IE32-REL-NEXT: 0x2218 R_RISCV_TLS_TPREL32 - 0xC
|
||||
# IE32-REL-NEXT: 0x2214 R_RISCV_TLS_TPREL32 a 0x0
|
||||
# IE32-REL-NEXT: }
|
||||
# IE32-REL: FLAGS STATIC_TLS
|
||||
|
||||
# IE64-REL: FLAGS STATIC_TLS
|
||||
# IE64-REL: .rela.dyn {
|
||||
# IE64-REL-NEXT: 0x2370 R_RISCV_TLS_TPREL64 - 0xC
|
||||
# IE64-REL-NEXT: 0x2368 R_RISCV_TLS_TPREL64 a 0x0
|
||||
# IE64-REL-NEXT: }
|
||||
# IE64-REL: FLAGS STATIC_TLS
|
||||
|
||||
## rv32: &.got[0] - . = 0x2214 - . = 4096*1+112
|
||||
## rv64: &.got[0] - . = 0x2368 - . = 4096*1+200
|
||||
|
@ -4,7 +4,7 @@
|
||||
// RUN: ld.lld --hash-style=sysv -shared %t2.o -soname=t2.so -o %t2.so
|
||||
// RUN: llvm-readobj -S %t2.so | FileCheck --check-prefix=SO %s
|
||||
// RUN: ld.lld --hash-style=sysv -dynamic-linker /lib64/ld-linux-x86-64.so.2 -rpath foo -rpath bar --export-dynamic %t.o %t2.so -o %t
|
||||
// RUN: llvm-readobj --program-headers --dynamic-table --symbols -S --dyn-syms --section-data --hash-table %t | FileCheck %s
|
||||
// RUN: llvm-readobj -S -l --dynamic-table --symbols --dyn-syms --section-data --hash-table %t | FileCheck %s
|
||||
// RUN: ld.lld --hash-style=sysv %t.o %t2.so %t2.so -o %t2
|
||||
// RUN: llvm-readobj --dyn-syms %t2 | FileCheck --check-prefix=DONT_EXPORT %s
|
||||
|
||||
@ -129,6 +129,47 @@
|
||||
// CHECK-NEXT: AddressAlignment:
|
||||
// CHECK-NEXT: EntrySize: [[SYMENT:.*]]
|
||||
|
||||
// CHECK: ProgramHeaders [
|
||||
// CHECK: Type: PT_INTERP
|
||||
// CHECK-NEXT: Offset: [[INTERPOFFSET]]
|
||||
// CHECK-NEXT: VirtualAddress: [[INTERPADDR]]
|
||||
// CHECK-NEXT: PhysicalAddress: [[INTERPADDR]]
|
||||
// CHECK-NEXT: FileSize: [[INTERPSIZE]]
|
||||
// CHECK-NEXT: MemSize: [[INTERPSIZE]]
|
||||
// CHECK-NEXT: Flags [
|
||||
// CHECK-NEXT: PF_R
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Alignment: 1
|
||||
// CHECK-NEXT: }
|
||||
// CHECK: Type: PT_DYNAMIC
|
||||
// CHECK-NEXT: Offset: [[OFFSET]]
|
||||
// CHECK-NEXT: VirtualAddress: [[ADDR]]
|
||||
// CHECK-NEXT: PhysicalAddress: [[ADDR]]
|
||||
// CHECK-NEXT: FileSize: [[SIZE]]
|
||||
// CHECK-NEXT: MemSize: [[SIZE]]
|
||||
// CHECK-NEXT: Flags [
|
||||
// CHECK-NEXT: PF_R
|
||||
// CHECK-NEXT: PF_W
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Alignment: [[ALIGN]]
|
||||
// CHECK-NEXT: }
|
||||
|
||||
// CHECK: DynamicSection [
|
||||
// CHECK-NEXT: Tag Type Name/Value
|
||||
// CHECK-NEXT: 0x0000001D RUNPATH Library runpath: [foo:bar]
|
||||
// CHECK-NEXT: 0x00000001 NEEDED Shared library: [{{.*}}2.so]
|
||||
// CHECK-NEXT: 0x00000015 DEBUG 0x0
|
||||
// CHECK-NEXT: 0x00000011 REL [[RELADDR]]
|
||||
// CHECK-NEXT: 0x00000012 RELSZ [[RELSIZE]] (bytes)
|
||||
// CHECK-NEXT: 0x00000013 RELENT [[RELENT]] (bytes)
|
||||
// CHECK-NEXT: 0x00000006 SYMTAB [[DYNSYMADDR]]
|
||||
// CHECK-NEXT: 0x0000000B SYMENT [[SYMENT]] (bytes)
|
||||
// CHECK-NEXT: 0x00000005 STRTAB [[DYNSTRADDR]]
|
||||
// CHECK-NEXT: 0x0000000A STRSZ
|
||||
// CHECK-NEXT: 0x00000004 HASH [[HASHADDR]]
|
||||
// CHECK-NEXT: 0x00000000 NULL 0x0
|
||||
// CHECK-NEXT: ]
|
||||
|
||||
// CHECK: Symbols [
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name:
|
||||
@ -248,47 +289,6 @@
|
||||
// DONT_EXPORT-NEXT: }
|
||||
// DONT_EXPORT-NEXT: ]
|
||||
|
||||
// CHECK: DynamicSection [
|
||||
// CHECK-NEXT: Tag Type Name/Value
|
||||
// CHECK-NEXT: 0x0000001D RUNPATH Library runpath: [foo:bar]
|
||||
// CHECK-NEXT: 0x00000001 NEEDED Shared library: [{{.*}}2.so]
|
||||
// CHECK-NEXT: 0x00000015 DEBUG 0x0
|
||||
// CHECK-NEXT: 0x00000011 REL [[RELADDR]]
|
||||
// CHECK-NEXT: 0x00000012 RELSZ [[RELSIZE]] (bytes)
|
||||
// CHECK-NEXT: 0x00000013 RELENT [[RELENT]] (bytes)
|
||||
// CHECK-NEXT: 0x00000006 SYMTAB [[DYNSYMADDR]]
|
||||
// CHECK-NEXT: 0x0000000B SYMENT [[SYMENT]] (bytes)
|
||||
// CHECK-NEXT: 0x00000005 STRTAB [[DYNSTRADDR]]
|
||||
// CHECK-NEXT: 0x0000000A STRSZ
|
||||
// CHECK-NEXT: 0x00000004 HASH [[HASHADDR]]
|
||||
// CHECK-NEXT: 0x00000000 NULL 0x0
|
||||
// CHECK-NEXT: ]
|
||||
|
||||
// CHECK: ProgramHeaders [
|
||||
// CHECK: Type: PT_INTERP
|
||||
// CHECK-NEXT: Offset: [[INTERPOFFSET]]
|
||||
// CHECK-NEXT: VirtualAddress: [[INTERPADDR]]
|
||||
// CHECK-NEXT: PhysicalAddress: [[INTERPADDR]]
|
||||
// CHECK-NEXT: FileSize: [[INTERPSIZE]]
|
||||
// CHECK-NEXT: MemSize: [[INTERPSIZE]]
|
||||
// CHECK-NEXT: Flags [
|
||||
// CHECK-NEXT: PF_R
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Alignment: 1
|
||||
// CHECK-NEXT: }
|
||||
// CHECK: Type: PT_DYNAMIC
|
||||
// CHECK-NEXT: Offset: [[OFFSET]]
|
||||
// CHECK-NEXT: VirtualAddress: [[ADDR]]
|
||||
// CHECK-NEXT: PhysicalAddress: [[ADDR]]
|
||||
// CHECK-NEXT: FileSize: [[SIZE]]
|
||||
// CHECK-NEXT: MemSize: [[SIZE]]
|
||||
// CHECK-NEXT: Flags [
|
||||
// CHECK-NEXT: PF_R
|
||||
// CHECK-NEXT: PF_W
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Alignment: [[ALIGN]]
|
||||
// CHECK-NEXT: }
|
||||
|
||||
// CHECK: HashTable {
|
||||
// CHECK-NEXT: Num Buckets: 4
|
||||
// CHECK-NEXT: Num Chains: 4
|
||||
|
@ -1,7 +1,7 @@
|
||||
// REQUIRES: x86
|
||||
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
|
||||
// RUN: ld.lld %t -o %tout
|
||||
// RUN: llvm-readobj --symbols --sections -l %tout | FileCheck %s
|
||||
// RUN: llvm-readobj -S -l --symbols %tout | FileCheck %s
|
||||
// RUN: llvm-objdump -d %tout | FileCheck %s --check-prefix=DIS
|
||||
|
||||
.global _start
|
||||
@ -101,6 +101,30 @@ d:
|
||||
// CHECK-NEXT: EntrySize:
|
||||
// CHECK-NEXT: }
|
||||
|
||||
// Check that the TLS NOBITS sections weren't added to the R/W PT_LOAD's size.
|
||||
|
||||
// CHECK: ProgramHeaders [
|
||||
// CHECK: Type: PT_LOAD
|
||||
// CHECK: Type: PT_LOAD
|
||||
// CHECK: Type: PT_LOAD
|
||||
// CHECK: FileSize: 8
|
||||
// CHECK-NEXT: MemSize: 8
|
||||
// CHECK-NEXT: Flags [
|
||||
// CHECK-NEXT: PF_R
|
||||
// CHECK-NEXT: PF_W
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK: Type: PT_TLS
|
||||
// CHECK-NEXT: Offset:
|
||||
// CHECK-NEXT: VirtualAddress: [[TDATA_ADDR]]
|
||||
// CHECK-NEXT: PhysicalAddress: [[TDATA_ADDR]]
|
||||
// CHECK-NEXT: FileSize: 8
|
||||
// CHECK-NEXT: MemSize: 16
|
||||
// CHECK-NEXT: Flags [
|
||||
// CHECK-NEXT: PF_R
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Alignment:
|
||||
// CHECK-NEXT: }
|
||||
|
||||
// CHECK: Symbols [
|
||||
// CHECK: Name: a
|
||||
// CHECK-NEXT: Value: 0x8
|
||||
@ -138,30 +162,6 @@ d:
|
||||
// CHECK-NEXT: Section: .thread_data
|
||||
// CHECK-NEXT: }
|
||||
|
||||
// Check that the TLS NOBITS sections weren't added to the R/W PT_LOAD's size.
|
||||
|
||||
// CHECK: ProgramHeaders [
|
||||
// CHECK: Type: PT_LOAD
|
||||
// CHECK: Type: PT_LOAD
|
||||
// CHECK: Type: PT_LOAD
|
||||
// CHECK: FileSize: 8
|
||||
// CHECK-NEXT: MemSize: 8
|
||||
// CHECK-NEXT: Flags [
|
||||
// CHECK-NEXT: PF_R
|
||||
// CHECK-NEXT: PF_W
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK: Type: PT_TLS
|
||||
// CHECK-NEXT: Offset:
|
||||
// CHECK-NEXT: VirtualAddress: [[TDATA_ADDR]]
|
||||
// CHECK-NEXT: PhysicalAddress: [[TDATA_ADDR]]
|
||||
// CHECK-NEXT: FileSize: 8
|
||||
// CHECK-NEXT: MemSize: 16
|
||||
// CHECK-NEXT: Flags [
|
||||
// CHECK-NEXT: PF_R
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Alignment:
|
||||
// CHECK-NEXT: }
|
||||
|
||||
// DIS: Disassembly of section .text:
|
||||
// DIS-EMPTY:
|
||||
// DIS-NEXT: _start:
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
|
||||
# RUN: ld.lld --hash-style=sysv %t.o %t1.so %t2.so -o %t
|
||||
# RUN: llvm-readobj -V --sections --section-data --dyn-syms --dynamic-table %t | FileCheck %s
|
||||
# RUN: llvm-readobj -S -d --section-data --dyn-syms -V %t | FileCheck %s
|
||||
|
||||
# CHECK: Section {
|
||||
# CHECK: Index: 1
|
||||
@ -74,6 +74,10 @@
|
||||
# CHECK-NEXT: )
|
||||
# CHECK-NEXT: }
|
||||
|
||||
# CHECK: 0x000000006FFFFFF0 VERSYM [[VERSYM]]
|
||||
# CHECK-NEXT: 0x000000006FFFFFFE VERNEED [[VERNEED]]
|
||||
# CHECK-NEXT: 0x000000006FFFFFFF VERNEEDNUM 2
|
||||
|
||||
# CHECK: DynamicSymbols [
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name:
|
||||
@ -113,10 +117,6 @@
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
|
||||
# CHECK: 0x000000006FFFFFF0 VERSYM [[VERSYM]]
|
||||
# CHECK-NEXT: 0x000000006FFFFFFE VERNEED [[VERNEED]]
|
||||
# CHECK-NEXT: 0x000000006FFFFFFF VERNEEDNUM 2
|
||||
|
||||
# CHECK: VersionSymbols [
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Version: 0
|
||||
|
@ -45,12 +45,12 @@
|
||||
# SEC-PIC-NEXT: AddressAlignment:
|
||||
# SEC-PIC-NEXT: EntrySize:
|
||||
# SEC-PIC-NEXT: }
|
||||
# SEC-PIC: 0x000000006FFFFFF9 RELACOUNT 1
|
||||
# SEC-PIC: Relocations [
|
||||
# SEC-PIC-NEXT: Section ({{.*}}) .rela.dyn {
|
||||
# SEC-PIC-NEXT: 0x2348 R_X86_64_RELATIVE - 0x3350
|
||||
# SEC-PIC-NEXT: }
|
||||
# SEC-PIC-NEXT: ]
|
||||
# SEC-PIC: 0x000000006FFFFFF9 RELACOUNT 1
|
||||
|
||||
## Check that there was no relaxation performed. All values refer to got entry.
|
||||
## Ex: 0x1000 + 4249 + 7 = 0x20A0
|
||||
|
@ -16,6 +16,10 @@
|
||||
|
||||
# If the preference is to have text relocations, don't create plt of copy relocations.
|
||||
|
||||
# CHECK: DynamicSection [
|
||||
# CHECK: FLAGS TEXTREL
|
||||
# CHECK: TEXTREL 0x0
|
||||
|
||||
# CHECK: Relocations [
|
||||
# CHECK-NEXT: Section {{.*}} .rela.dyn {
|
||||
# CHECK-NEXT: 0x12A0 R_X86_64_RELATIVE - 0x12A0
|
||||
@ -24,9 +28,9 @@
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
|
||||
# CHECK: DynamicSection [
|
||||
# CHECK: FLAGS TEXTREL
|
||||
# CHECK: TEXTREL 0x0
|
||||
# STATIC: DynamicSection [
|
||||
# STATIC: FLAGS TEXTREL
|
||||
# STATIC: TEXTREL 0x0
|
||||
|
||||
# STATIC: Relocations [
|
||||
# STATIC-NEXT: Section {{.*}} .rela.dyn {
|
||||
@ -35,10 +39,6 @@
|
||||
# STATIC-NEXT: }
|
||||
# STATIC-NEXT: ]
|
||||
|
||||
# STATIC: DynamicSection [
|
||||
# STATIC: FLAGS TEXTREL
|
||||
# STATIC: TEXTREL 0x0
|
||||
|
||||
foo:
|
||||
.quad foo
|
||||
.quad bar
|
||||
|
@ -48,17 +48,6 @@ MAIN-NEXT: [10] .symtab SYMTAB 0000000000000000 003008 0000
|
||||
MAIN-NEXT: [11] .shstrtab STRTAB 0000000000000000 003050 000060 00 0 0 1
|
||||
MAIN-NEXT: [12] .strtab STRTAB 0000000000000000 0030b0 000011 00 0 0 1
|
||||
|
||||
MAIN: Symbol table '.dynsym' contains 2 entries:
|
||||
MAIN-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
MAIN-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
MAIN-NEXT: 1: 0000000000201000 0 NOTYPE GLOBAL DEFAULT 6 _start
|
||||
|
||||
MAIN: Symbol table '.symtab' contains 3 entries:
|
||||
MAIN-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
MAIN-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
MAIN-NEXT: 1: 0000000000202000 0 NOTYPE LOCAL HIDDEN 7 _DYNAMIC
|
||||
MAIN-NEXT: 2: 0000000000201000 0 NOTYPE GLOBAL DEFAULT 6 _start
|
||||
|
||||
MAIN: Program Headers:
|
||||
MAIN-NEXT: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
|
||||
MAIN-NEXT: PHDR 0x000040 0x0000000000200040 0x0000000000200040 0x0001c0 0x0001c0 R 0x8
|
||||
@ -70,6 +59,17 @@ MAIN-NEXT: DYNAMIC 0x002000 0x0000000000202000 0x0000000000202000 0x000
|
||||
MAIN-NEXT: GNU_RELRO 0x002000 0x0000000000202000 0x0000000000202000 0x000080 0x001000 R 0x1
|
||||
MAIN-NEXT: GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0x0
|
||||
|
||||
MAIN: Symbol table '.dynsym' contains 2 entries:
|
||||
MAIN-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
MAIN-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
MAIN-NEXT: 1: 0000000000201000 0 NOTYPE GLOBAL DEFAULT 6 _start
|
||||
|
||||
MAIN: Symbol table '.symtab' contains 3 entries:
|
||||
MAIN-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
MAIN-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
MAIN-NEXT: 1: 0000000000202000 0 NOTYPE LOCAL HIDDEN 7 _DYNAMIC
|
||||
MAIN-NEXT: 2: 0000000000201000 0 NOTYPE GLOBAL DEFAULT 6 _start
|
||||
|
||||
PART1: ELF Header:
|
||||
PART1-NEXT: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
|
||||
PART1-NEXT: Class: ELF64
|
||||
@ -105,16 +105,6 @@ PART1-NEXT: [ 8] .symtab SYMTAB 0000000000000000 002008 000
|
||||
PART1-NEXT: [ 9] .shstrtab STRTAB 0000000000000000 002038 00004d 00 0 0 1
|
||||
PART1-NEXT: [10] .strtab STRTAB 0000000000000000 002085 000004 00 0 0 1
|
||||
|
||||
PART1: Symbol table '.dynsym' contains 2 entries:
|
||||
PART1-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
PART1-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
PART1-NEXT: 1: 0000000000205000 0 NOTYPE GLOBAL DEFAULT 15 g1
|
||||
|
||||
PART1: Symbol table '.symtab' contains 2 entries:
|
||||
PART1-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
PART1-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
PART1-NEXT: 1: 0000000000205000 0 NOTYPE GLOBAL DEFAULT 6 g1
|
||||
|
||||
PART1: Program Headers:
|
||||
PART1-NEXT: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
|
||||
PART1-NEXT: PHDR 0x000040 0x0000000000203040 0x0000000000203040 0x000188 0x000188 R 0x1
|
||||
@ -125,6 +115,16 @@ PART1-NEXT: DYNAMIC 0x001000 0x0000000000204000 0x0000000000204000 0x00
|
||||
PART1-NEXT: GNU_RELRO 0x001000 0x0000000000204000 0x0000000000204000 0x000090 0x001000 R 0x1
|
||||
PART1-NEXT: GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0x0
|
||||
|
||||
PART1: Symbol table '.dynsym' contains 2 entries:
|
||||
PART1-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
PART1-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
PART1-NEXT: 1: 0000000000205000 0 NOTYPE GLOBAL DEFAULT 15 g1
|
||||
|
||||
PART1: Symbol table '.symtab' contains 2 entries:
|
||||
PART1-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
PART1-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
PART1-NEXT: 1: 0000000000205000 0 NOTYPE GLOBAL DEFAULT 6 g1
|
||||
|
||||
PART2: ELF Header:
|
||||
PART2-NEXT: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
|
||||
PART2-NEXT: Class: ELF64
|
||||
@ -160,16 +160,6 @@ PART2-NEXT: [ 8] .symtab SYMTAB 0000000000000000 002008 000
|
||||
PART2-NEXT: [ 9] .shstrtab STRTAB 0000000000000000 002038 00004d 00 0 0 1
|
||||
PART2-NEXT: [10] .strtab STRTAB 0000000000000000 002085 000004 00 0 0 1
|
||||
|
||||
PART2: Symbol table '.dynsym' contains 2 entries:
|
||||
PART2-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
PART2-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
PART2-NEXT: 1: 0000000000208000 0 NOTYPE GLOBAL DEFAULT 23 g2
|
||||
|
||||
PART2: Symbol table '.symtab' contains 2 entries:
|
||||
PART2-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
PART2-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
PART2-NEXT: 1: 0000000000208000 0 NOTYPE GLOBAL DEFAULT 6 g2
|
||||
|
||||
PART2: Program Headers:
|
||||
PART2-NEXT: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
|
||||
PART2-NEXT: PHDR 0x000040 0x0000000000206040 0x0000000000206040 0x000188 0x000188 R 0x1
|
||||
@ -180,6 +170,16 @@ PART2-NEXT: DYNAMIC 0x001000 0x0000000000207000 0x0000000000207000 0x00
|
||||
PART2-NEXT: GNU_RELRO 0x001000 0x0000000000207000 0x0000000000207000 0x000090 0x001000 R 0x1
|
||||
PART2-NEXT: GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0x0
|
||||
|
||||
PART2: Symbol table '.dynsym' contains 2 entries:
|
||||
PART2-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
PART2-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
PART2-NEXT: 1: 0000000000208000 0 NOTYPE GLOBAL DEFAULT 23 g2
|
||||
|
||||
PART2: Symbol table '.symtab' contains 2 entries:
|
||||
PART2-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
PART2-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
PART2-NEXT: 1: 0000000000208000 0 NOTYPE GLOBAL DEFAULT 6 g2
|
||||
|
||||
RUN: not llvm-objcopy --extract-partition=part3 %p/Inputs/partitions.elf %t4 2>&1 | FileCheck --check-prefix=ERROR1 %s
|
||||
ERROR1: error: could not find partition named 'part3'
|
||||
|
||||
|
@ -8,11 +8,11 @@
|
||||
# LLVM-ALL: LoadName:
|
||||
# LLVM-ALL: ElfHeader {
|
||||
# LLVM-ALL: Sections [
|
||||
# LLVM-ALL: ProgramHeaders [
|
||||
# LLVM-ALL: Relocations [
|
||||
# LLVM-ALL: Symbols [
|
||||
# LLVM-ALL: EHFrameHeader {
|
||||
# LLVM-ALL: .eh_frame section at offset 0x1128 address 0x0:
|
||||
# LLVM-ALL: ProgramHeaders [
|
||||
# LLVM-ALL: Symbols [
|
||||
# LLVM-ALL: VersionSymbols [
|
||||
# LLVM-ALL: VersionDefinitions [
|
||||
# LLVM-ALL: VersionRequirements [
|
||||
@ -25,12 +25,12 @@
|
||||
|
||||
# GNU-ALL: ELF Header:
|
||||
# GNU-ALL: There are {{.*}} section headers, starting at offset {{.*}}:
|
||||
# GNU-ALL: Program Headers:
|
||||
# GNU-ALL: Dynamic section at offset {{.*}} contains {{.*}} entries:
|
||||
# GNU-ALL: Relocation section '.rela.data' at offset {{.*}} contains {{.*}} entries:
|
||||
# GNU-ALL: Symbol table '.symtab' contains {{.*}} entries:
|
||||
# GNU-ALL: EHFrameHeader {
|
||||
# GNU-ALL: .eh_frame section at offset {{.*}} address 0x0:
|
||||
# GNU-ALL: Dynamic section at offset {{.*}} contains {{.*}} entries:
|
||||
# GNU-ALL: Program Headers:
|
||||
# GNU-ALL: Symbol table '.symtab' contains {{.*}} entries:
|
||||
# GNU-ALL: Version symbols section '.gnu.version' contains {{.*}} entries:
|
||||
# GNU-ALL: Version definition section '.gnu.version_d' contains {{.*}} entries:
|
||||
# GNU-ALL: Version needs section '.gnu.version_r' contains {{.*}} entries:
|
||||
|
@ -11,19 +11,19 @@
|
||||
# CHECK: There are 5 section headers, starting at offset
|
||||
# CHECK: Section Headers:
|
||||
# CHECK: Key to Flags:
|
||||
# CHECK: There are no relocations in this file.
|
||||
# CHECK: Symbol table '.symtab' contains 1 entries
|
||||
# CHECK: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
# CHECK: Dynamic section at offset
|
||||
# CHECK: 0x0000000000000000 (NULL) 0x0
|
||||
# CHECK: NeededLibraries [
|
||||
# CHECK: ]
|
||||
# CHECK: Elf file type is DYN (Shared object file)
|
||||
# CHECK: Entry point 0x0
|
||||
# CHECK: There are 1 program headers, starting at offset 64
|
||||
# CHECK: DYNAMIC
|
||||
# CHECK: Section to Segment mapping:
|
||||
# CHECK: None .symtab .strtab .shstrtab
|
||||
# CHECK: Dynamic section at offset
|
||||
# CHECK: 0x0000000000000000 (NULL) 0x0
|
||||
# CHECK: NeededLibraries [
|
||||
# CHECK: ]
|
||||
# CHECK: There are no relocations in this file.
|
||||
# CHECK: Symbol table '.symtab' contains 1 entries
|
||||
# CHECK: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
# CHECK: There are no section groups in this file.
|
||||
|
||||
|
||||
|
@ -12,9 +12,9 @@
|
||||
# WARN: warning: '[[FILE]]': no valid dynamic table was found
|
||||
# WARN-EMPTY:
|
||||
# WARN: File:
|
||||
# WARN: ProgramHeaders [
|
||||
# WARN: Symbols [
|
||||
# WARN: ]
|
||||
# WARN: ProgramHeaders [
|
||||
|
||||
# WARN-GNU: warning: '[[FILE]]': invalid PT_DYNAMIC size (0x4){{$}}
|
||||
# WARN-GNU: warning: '[[FILE]]': section with index 1 has invalid size (0x4){{$}}
|
||||
|
@ -466,22 +466,22 @@ static void dumpObject(const ObjectFile *Obj, ScopedPrinter &Writer,
|
||||
Dumper->printFileHeaders();
|
||||
if (opts::SectionHeaders)
|
||||
Dumper->printSectionHeaders();
|
||||
if (opts::Relocations)
|
||||
Dumper->printRelocations();
|
||||
if (opts::DynRelocs)
|
||||
Dumper->printDynamicRelocations();
|
||||
if (opts::Symbols || opts::DynamicSymbols)
|
||||
Dumper->printSymbols(opts::Symbols, opts::DynamicSymbols);
|
||||
if (opts::HashSymbols)
|
||||
Dumper->printHashSymbols();
|
||||
if (opts::UnwindInfo)
|
||||
Dumper->printUnwindInfo();
|
||||
if (opts::ProgramHeaders || opts::SectionMapping == cl::BOU_TRUE)
|
||||
Dumper->printProgramHeaders(opts::ProgramHeaders, opts::SectionMapping);
|
||||
if (opts::DynamicTable)
|
||||
Dumper->printDynamicTable();
|
||||
if (opts::NeededLibraries)
|
||||
Dumper->printNeededLibraries();
|
||||
if (opts::ProgramHeaders || opts::SectionMapping == cl::BOU_TRUE)
|
||||
Dumper->printProgramHeaders(opts::ProgramHeaders, opts::SectionMapping);
|
||||
if (opts::Relocations)
|
||||
Dumper->printRelocations();
|
||||
if (opts::DynRelocs)
|
||||
Dumper->printDynamicRelocations();
|
||||
if (opts::UnwindInfo)
|
||||
Dumper->printUnwindInfo();
|
||||
if (opts::Symbols || opts::DynamicSymbols)
|
||||
Dumper->printSymbols(opts::Symbols, opts::DynamicSymbols);
|
||||
if (!opts::StringDump.empty())
|
||||
Dumper->printSectionsAsString(Obj, opts::StringDump);
|
||||
if (!opts::HexDump.empty())
|
||||
|
Loading…
x
Reference in New Issue
Block a user