forked from OSchip/llvm-project
[llvm-readobj] - Massive test cases cleanup.
This patch does the following: 1) Starts using YAML macro to reduce the number of YAML documents in tests. 2) Adds `#` before 'RUN'/`CHECK` lines in a few tests where it is missing. 3) Removes unused YAML keys. 4) Starts using `ENTSIZE=<none>` to simplify tests (see D84526). 5) Removes trailing white spaces in a few places. Differential revision: https://reviews.llvm.org/D85013
This commit is contained in:
parent
d1007478f1
commit
2bca784ab8
|
@ -1,11 +1,11 @@
|
|||
RUN: llvm-readobj --file-headers -l -S --symbols %p/Inputs/trivial.obj.elf-amdhsa-gfx803 | FileCheck %s
|
||||
# RUN: llvm-readobj --file-headers -l -S --symbols %p/Inputs/trivial.obj.elf-amdhsa-gfx803 | FileCheck %s
|
||||
|
||||
CHECK: Format: elf64-amdgpu
|
||||
CHECK: Arch: unknown
|
||||
CHECK: ElfHeader {
|
||||
CHECK: Ident {
|
||||
CHECK: OS/ABI: AMDGPU_HSA (0x40)
|
||||
CHECK: ABIVersion: 0
|
||||
CHECK: }
|
||||
CHECK: Machine: EM_AMDGPU (0xE0)
|
||||
CHECK: }
|
||||
# CHECK: Format: elf64-amdgpu
|
||||
# CHECK: Arch: unknown
|
||||
# CHECK: ElfHeader {
|
||||
# CHECK: Ident {
|
||||
# CHECK: OS/ABI: AMDGPU_HSA (0x40)
|
||||
# CHECK: ABIVersion: 0
|
||||
# CHECK: }
|
||||
# CHECK: Machine: EM_AMDGPU (0xE0)
|
||||
# CHECK: }
|
||||
|
|
|
@ -50,7 +50,7 @@ ProgramHeaders:
|
|||
- Section: .dynamic
|
||||
|
||||
## Show we print a warning for an invalid relocation table size stored in a DT_RELASZ entry.
|
||||
# RUN: yaml2obj --docnum=2 %s -o %t2
|
||||
# RUN: yaml2obj --docnum=2 -DRELTYPE=RELA -DTAG1=DT_RELASZ -DTAG1VAL=0xFF -DTAG2=DT_RELAENT %s -o %t2
|
||||
# RUN: llvm-readobj --dyn-relocations %t2 2>&1 | FileCheck %s -DFILE=%t2 --check-prefix=INVALID-DT-RELASZ
|
||||
# RUN: llvm-readelf --dyn-relocations %t2 2>&1 | FileCheck %s -DFILE=%t2 --check-prefix=INVALID-DT-RELASZ
|
||||
|
||||
|
@ -63,277 +63,73 @@ FileHeader:
|
|||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .rela.dyn
|
||||
Type: SHT_RELA
|
||||
Relocations:
|
||||
- Type: R_X86_64_NONE
|
||||
- Name: .relx.dyn
|
||||
Type: SHT_[[RELTYPE]]
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Entries:
|
||||
- Tag: DT_RELA
|
||||
- Tag: DT_[[RELTYPE]]
|
||||
Value: 0x0
|
||||
- Tag: DT_RELASZ
|
||||
Value: 0xFF
|
||||
- Tag: DT_RELAENT
|
||||
Value: 0x18
|
||||
- Tag: [[TAG1]]
|
||||
Value: [[TAG1VAL=0x18]]
|
||||
- Tag: [[TAG2]]
|
||||
Value: [[TAG2VAL=0x18]]
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0
|
||||
DynamicSymbols: []
|
||||
ProgramHeaders:
|
||||
- Type: PT_LOAD
|
||||
Sections:
|
||||
- Section: .rela.dyn
|
||||
- Section: .relx.dyn
|
||||
- Section: .dynamic
|
||||
|
||||
## Show we print a warning for an invalid relocation table entry size stored in a DT_RELAENT entry.
|
||||
# RUN: yaml2obj --docnum=3 %s -o %t3
|
||||
# RUN: yaml2obj --docnum=2 -DRELTYPE=RELA -DTAG1=DT_RELASZ -DTAG2=DT_RELAENT -DTAG2VAL=0xFF %s -o %t3
|
||||
# RUN: llvm-readobj --dyn-relocations %t3 2>&1 | FileCheck %s -DFILE=%t3 --check-prefix=INVALID-DT-RELAENT
|
||||
# RUN: llvm-readelf --dyn-relocations %t3 2>&1 | FileCheck %s -DFILE=%t3 --check-prefix=INVALID-DT-RELAENT
|
||||
|
||||
## INVALID-DT-RELAENT: warning: '[[FILE]]': invalid DT_RELASZ value (0x18) or DT_RELAENT value (0xff)
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .rela.dyn
|
||||
Type: SHT_RELA
|
||||
Relocations:
|
||||
- Type: R_X86_64_NONE
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Entries:
|
||||
- Tag: DT_RELA
|
||||
Value: 0x0
|
||||
- Tag: DT_RELASZ
|
||||
Value: 0x18
|
||||
- Tag: DT_RELAENT
|
||||
Value: 0xFF
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0
|
||||
DynamicSymbols: []
|
||||
ProgramHeaders:
|
||||
- Type: PT_LOAD
|
||||
Sections:
|
||||
- Section: .rela.dyn
|
||||
- Section: .dynamic
|
||||
|
||||
## Show we print a warning for an invalid relocation table size stored in a DT_RELSZ entry.
|
||||
# RUN: yaml2obj --docnum=4 %s -o %t4
|
||||
# RUN: yaml2obj --docnum=2 -DRELTYPE=REL -DTAG1=DT_RELSZ -DTAG1VAL=0xFF -DTAG2=DT_RELENT %s -o %t4
|
||||
# RUN: llvm-readobj --dyn-relocations %t4 2>&1 | FileCheck %s -DFILE=%t4 --check-prefix=INVALID-DT-RELSZ
|
||||
# RUN: llvm-readelf --dyn-relocations %t4 2>&1 | FileCheck %s -DFILE=%t4 --check-prefix=INVALID-DT-RELSZ
|
||||
|
||||
## INVALID-DT-RELSZ: warning: '[[FILE]]': invalid DT_RELSZ value (0xff) or DT_RELENT value (0x18)
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS32
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_386
|
||||
Sections:
|
||||
- Name: .rela.dyn
|
||||
Type: SHT_REL
|
||||
Relocations:
|
||||
- Type: R_386_NONE
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Entries:
|
||||
- Tag: DT_REL
|
||||
Value: 0x0
|
||||
- Tag: DT_RELSZ
|
||||
Value: 0xFF
|
||||
- Tag: DT_RELENT
|
||||
Value: 0x18
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0
|
||||
DynamicSymbols: []
|
||||
ProgramHeaders:
|
||||
- Type: PT_LOAD
|
||||
Sections:
|
||||
- Section: .rela.dyn
|
||||
- Section: .dynamic
|
||||
|
||||
## Show we print a warning for an invalid relocation table entry size stored in a DT_RELENT entry.
|
||||
# RUN: yaml2obj --docnum=5 %s -o %t5
|
||||
# RUN: yaml2obj --docnum=2 -DRELTYPE=REL -DTAG1=DT_RELSZ -DTAG2=DT_RELENT -DTAG2VAL=0xFF %s -o %t5
|
||||
# RUN: llvm-readobj --dyn-relocations %t5 2>&1 | FileCheck %s -DFILE=%t5 --check-prefix=INVALID-DT-RELENT
|
||||
# RUN: llvm-readelf --dyn-relocations %t5 2>&1 | FileCheck %s -DFILE=%t5 --check-prefix=INVALID-DT-RELENT
|
||||
|
||||
## INVALID-DT-RELENT: warning: '[[FILE]]': invalid DT_RELSZ value (0x18) or DT_RELENT value (0xff)
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS32
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_386
|
||||
Sections:
|
||||
- Name: .rela.dyn
|
||||
Type: SHT_REL
|
||||
Relocations:
|
||||
- Type: R_386_NONE
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Entries:
|
||||
- Tag: DT_REL
|
||||
Value: 0x0
|
||||
- Tag: DT_RELSZ
|
||||
Value: 0x18
|
||||
- Tag: DT_RELENT
|
||||
Value: 0xFF
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0
|
||||
DynamicSymbols: []
|
||||
ProgramHeaders:
|
||||
- Type: PT_LOAD
|
||||
Sections:
|
||||
- Section: .rela.dyn
|
||||
- Section: .dynamic
|
||||
|
||||
## Show we print a warning for an invalid relocation table size stored in a DT_RELRSZ/DT_ANDROID_RELRSZ entry.
|
||||
# RUN: yaml2obj --docnum=6 %s -o %t6
|
||||
# RUN: yaml2obj --docnum=2 -DRELTYPE=RELR -DTAG1=DT_RELRSZ -DTAG1VAL=0xFF -DTAG2=DT_RELRENT %s -o %t6
|
||||
# RUN: llvm-readobj --dyn-relocations %t6 2>&1 | FileCheck %s -DFILE=%t6 --check-prefix=INVALID-DT-RELRSZ
|
||||
# RUN: llvm-readelf --dyn-relocations %t6 2>&1 | FileCheck %s -DFILE=%t6 --check-prefix=INVALID-DT-RELRSZ
|
||||
# RUN: yaml2obj --docnum=7 %s -o %t7
|
||||
|
||||
# RUN: yaml2obj --docnum=2 -DRELTYPE=RELR -DTAG1=DT_ANDROID_RELRSZ -DTAG1VAL=0xFF -DTAG2=DT_ANDROID_RELRENT %s -o %t7
|
||||
# RUN: llvm-readobj --dyn-relocations %t7 2>&1 | FileCheck %s -DFILE=%t7 --check-prefix=INVALID-DT-ANDROID-RELRSZ
|
||||
# RUN: llvm-readelf --dyn-relocations %t7 2>&1 | FileCheck %s -DFILE=%t7 --check-prefix=INVALID-DT-ANDROID-RELRSZ
|
||||
|
||||
## INVALID-DT-RELRSZ: warning: '[[FILE]]': invalid DT_RELRSZ value (0xff) or DT_RELRENT value (0x18)
|
||||
## INVALID-DT-ANDROID-RELRSZ: warning: '[[FILE]]': invalid DT_ANDROID_RELRSZ value (0xff) or DT_ANDROID_RELRENT value (0x18)
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .relr.dyn
|
||||
Type: SHT_RELR
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Content: ""
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Entries:
|
||||
- Tag: DT_RELR
|
||||
Value: 0x0
|
||||
- Tag: DT_RELRSZ
|
||||
Value: 0xFF
|
||||
- Tag: DT_RELRENT
|
||||
Value: 0x18
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0
|
||||
DynamicSymbols: []
|
||||
ProgramHeaders:
|
||||
- Type: PT_LOAD
|
||||
Sections:
|
||||
- Section: .relr.dyn
|
||||
- Section: .dynamic
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .relr.dyn
|
||||
Type: SHT_RELR
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Content: ""
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Entries:
|
||||
- Tag: DT_RELR
|
||||
Value: 0x0
|
||||
- Tag: DT_ANDROID_RELRSZ
|
||||
Value: 0xFF
|
||||
- Tag: DT_ANDROID_RELRENT
|
||||
Value: 0x18
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0
|
||||
DynamicSymbols: []
|
||||
ProgramHeaders:
|
||||
- Type: PT_LOAD
|
||||
Sections:
|
||||
- Section: .relr.dyn
|
||||
- Section: .dynamic
|
||||
|
||||
## Show we print a warning for an invalid relocation table entry size stored in a DT_RELRENT/DT_ANDROID_RELRENT entry.
|
||||
# RUN: yaml2obj --docnum=8 %s -o %t8
|
||||
# RUN: yaml2obj --docnum=2 -DRELTYPE=RELR -DTAG1=DT_RELRSZ -DTAG2=DT_RELRENT -DTAG2VAL=0xFF %s -o %t8
|
||||
# RUN: llvm-readobj --dyn-relocations %t8 2>&1 | FileCheck %s -DFILE=%t8 --check-prefix=INVALID-DT-RELRENT
|
||||
# RUN: llvm-readelf --dyn-relocations %t8 2>&1 | FileCheck %s -DFILE=%t8 --check-prefix=INVALID-DT-RELRENT
|
||||
# RUN: yaml2obj --docnum=9 %s -o %t9
|
||||
# RUN: yaml2obj --docnum=2 -DRELTYPE=RELR -DTAG1=DT_ANDROID_RELRSZ -DTAG2=DT_ANDROID_RELRENT -DTAG2VAL=0xFF %s -o %t9
|
||||
# RUN: llvm-readobj --dyn-relocations %t9 2>&1 | FileCheck %s -DFILE=%t9 --check-prefix=INVALID-DT-ANDROID-RELRENT
|
||||
# RUN: llvm-readelf --dyn-relocations %t9 2>&1 | FileCheck %s -DFILE=%t9 --check-prefix=INVALID-DT-ANDROID-RELRENT
|
||||
|
||||
## INVALID-DT-RELRENT: invalid DT_RELRSZ value (0x18) or DT_RELRENT value (0xff)
|
||||
## INVALID-DT-ANDROID-RELRENT: invalid DT_ANDROID_RELRSZ value (0x18) or DT_ANDROID_RELRENT value (0xff)
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .relr.dyn
|
||||
Type: SHT_RELR
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Content: ""
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Entries:
|
||||
- Tag: DT_RELR
|
||||
Value: 0x0
|
||||
- Tag: DT_RELRSZ
|
||||
Value: 0x18
|
||||
- Tag: DT_RELRENT
|
||||
Value: 0xFF
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0
|
||||
DynamicSymbols: []
|
||||
ProgramHeaders:
|
||||
- Type: PT_LOAD
|
||||
Sections:
|
||||
- Section: .relr.dyn
|
||||
- Section: .dynamic
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .relr.dyn
|
||||
Type: SHT_RELR
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Content: ""
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Entries:
|
||||
- Tag: DT_RELR
|
||||
Value: 0x0
|
||||
- Tag: DT_ANDROID_RELRSZ
|
||||
Value: 0x18
|
||||
- Tag: DT_ANDROID_RELRENT
|
||||
Value: 0xFF
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0
|
||||
DynamicSymbols: []
|
||||
ProgramHeaders:
|
||||
- Type: PT_LOAD
|
||||
Sections:
|
||||
- Section: .relr.dyn
|
||||
- Section: .dynamic
|
||||
|
||||
## Show we print a warning for an invalid value of DT_PLTRELSZ, which describes the total size
|
||||
## of the relocation entries associated with the procedure linkage table.
|
||||
# RUN: yaml2obj --docnum=10 %s -o %t10
|
||||
# RUN: yaml2obj --docnum=3 %s -o %t10
|
||||
# RUN: llvm-readobj --dyn-relocations %t10 2>&1 | FileCheck %s -DFILE=%t10 --check-prefix=INVALID-DT-PLTRELSZ
|
||||
# RUN: llvm-readelf --dyn-relocations %t10 2>&1 | FileCheck %s -DFILE=%t10 --check-prefix=INVALID-DT-PLTRELSZ
|
||||
|
||||
|
@ -369,7 +165,7 @@ ProgramHeaders:
|
|||
- Section: .dynamic
|
||||
|
||||
## Show we print a warning when dumping dynamic relocations if there is no dynamic symbol table.
|
||||
# RUN: yaml2obj --docnum=11 %s -o %t11
|
||||
# RUN: yaml2obj --docnum=4 %s -o %t11
|
||||
# RUN: llvm-readobj --dyn-relocations %t11 2>&1 | FileCheck %s -DFILE=%t11 --check-prefix=LLVM-NO-DYNSYM
|
||||
# RUN: llvm-readelf --dyn-relocations %t11 2>&1 | FileCheck %s -DFILE=%t11 --check-prefix=GNU-NO-DYNSYM
|
||||
|
||||
|
@ -419,7 +215,7 @@ ProgramHeaders:
|
|||
|
||||
## Show we print a warning when the symbol index of a dynamic relocation is too
|
||||
## large (goes past the end of the dynamic symbol table).
|
||||
# RUN: yaml2obj --docnum=12 %s -o %t12
|
||||
# RUN: yaml2obj --docnum=5 %s -o %t12
|
||||
# RUN: llvm-readobj --dyn-relocations %t12 2>&1 | FileCheck %s -DFILE=%t12 --check-prefix=LLVM-INVALID-DYNSYM
|
||||
# RUN: llvm-readelf --dyn-relocations %t12 2>&1 | FileCheck %s -DFILE=%t12 --check-prefix=GNU-INVALID-DYNSYM
|
||||
|
||||
|
@ -465,7 +261,7 @@ ProgramHeaders:
|
|||
- Section: .dynamic
|
||||
|
||||
## Show that when we have both REL and RELA relocations, we dump both sets.
|
||||
# RUN: yaml2obj --docnum=13 %s -o %t13
|
||||
# RUN: yaml2obj --docnum=6 %s -o %t13
|
||||
# RUN: llvm-readobj --dyn-relocations %t13 2>&1 | FileCheck %s -DFILE=%t13 --check-prefix=BOTH-RELA-REL-LLVM
|
||||
# RUN: llvm-readelf --dyn-relocations %t13 2>&1 | FileCheck %s -DFILE=%t13 --check-prefix=BOTH-RELA-REL-GNU
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
## .dynsym section's sh_link field is broken.
|
||||
|
||||
## Case 1: sh_link is set to 0.
|
||||
# RUN: yaml2obj --docnum=1 %s -o %t1
|
||||
# RUN: yaml2obj --docnum=1 -DLINK=0 %s -o %t1
|
||||
# RUN: llvm-readobj -S %t1 2>&1 | FileCheck %s -DFILE=%t1 --check-prefixes=LLVM,ERR
|
||||
# RUN: llvm-readelf -S %t1 2>&1 | FileCheck %s -DFILE=%t1 --check-prefixes=GNU,ERR
|
||||
|
||||
|
@ -32,25 +32,15 @@ FileHeader:
|
|||
Sections:
|
||||
- Name: .dynsym
|
||||
Type: SHT_DYNSYM
|
||||
Link: [[LINK]]
|
||||
|
||||
## Case 2: sh_link is set to 255, which is larger than the number of the sections.
|
||||
# RUN: yaml2obj --docnum=2 %s -o %t2
|
||||
# RUN: yaml2obj --docnum=1 -DLINK=255 %s -o %t2
|
||||
|
||||
# RUN: llvm-readobj -S %t2 2>&1 | FileCheck -DFILE=%t2 %s --check-prefixes=LLVM2,ERR2
|
||||
# RUN: llvm-readelf -S %t2 2>&1 | FileCheck -DFILE=%t2 %s --check-prefixes=GNU2,ERR2
|
||||
|
||||
# ERR2: warning: '[[FILE]]': invalid section index
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .dynsym
|
||||
Type: SHT_DYNSYM
|
||||
Link: 255
|
||||
# ERR2: warning: '[[FILE]]': invalid section index: 255
|
||||
|
||||
# LLVM2: Name: .dynsym
|
||||
# LLVM2-NEXT: Type: SHT_DYNSYM
|
||||
|
|
|
@ -37,8 +37,7 @@ Sections:
|
|||
- From: bar
|
||||
To: foo
|
||||
Weight: 98
|
||||
## 0x10 is the normal entry size for the SHT_LLVM_CALL_GRAPH_PROFILE section.
|
||||
EntSize: [[ENTSIZE=0x10]]
|
||||
EntSize: [[ENTSIZE=<none>]]
|
||||
Symbols:
|
||||
- Name: foo
|
||||
- Name: bar
|
||||
|
|
|
@ -30,8 +30,18 @@ FileHeader:
|
|||
Sections:
|
||||
- Name: .deplibs
|
||||
Type: SHT_LLVM_DEPENDENT_LIBRARIES
|
||||
ShType: [[TYPE=<none>]]
|
||||
Libraries: [ foo, bar, foo ]
|
||||
|
||||
## Show the output when there are no dependent library sections. Check that we are
|
||||
## locating dependent library sections by type. To do this we change the type to an arbitrary one.
|
||||
# RUN: yaml2obj --docnum=1 -DTYPE=SHT_PROGBITS %s -o %t3
|
||||
# RUN: llvm-readobj --dependent-libraries %t3 2>&1 | FileCheck %s --check-prefix=NONE
|
||||
# RUN: llvm-readelf --dependent-libraries %t3 2>&1 | FileCheck %s --allow-empty --implicit-check-not={{.}}
|
||||
|
||||
# NONE: DependentLibs [
|
||||
# NONE-NEXT: ]
|
||||
|
||||
## Now, check how we dump a mix of valid, empty and invalid SHT_LLVM_DEPENDENT_LIBRARIES sections.
|
||||
|
||||
# RUN: yaml2obj --docnum=2 %s -o %t2
|
||||
|
@ -98,18 +108,3 @@ Sections:
|
|||
- ShName: 0x10000
|
||||
Type: SHT_LLVM_DEPENDENT_LIBRARIES
|
||||
Libraries: [ baz ]
|
||||
|
||||
## Show the output when there are no dependent library sections.
|
||||
# RUN: yaml2obj --docnum=3 %s -o %t3
|
||||
# RUN: llvm-readobj --dependent-libraries %t3 2>&1 | FileCheck %s --check-prefix=NONE
|
||||
# RUN: llvm-readelf --dependent-libraries %t3 2>&1 | FileCheck %s --allow-empty --implicit-check-not={{.}}
|
||||
|
||||
# NONE: DependentLibs [
|
||||
# NONE-NEXT: ]
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
|
|
|
@ -134,41 +134,24 @@ Sections:
|
|||
Value: 0xffff1234
|
||||
- Tag: DT_NULL
|
||||
Value: 0
|
||||
- Name: .dynsym
|
||||
Type: SHT_DYNSYM
|
||||
ShName: [[DYNSYMNAME=<none>]]
|
||||
DynamicSymbols:
|
||||
- Name: foo
|
||||
|
||||
## Case 3.2: the same as 3.1, but the sh_name field of the SHT_DYNSYM section is invalid.
|
||||
## Check we are still able to dump symbols.
|
||||
# RUN: yaml2obj --docnum=3 %s -o %t2.broken.name
|
||||
# RUN: yaml2obj --docnum=2 -DDYNSYMNAME=0xffffffff %s -o %t2.broken.name
|
||||
# RUN: llvm-readobj %t2.broken.name --dyn-symbols 2>&1 | \
|
||||
# RUN: FileCheck %s -DFILE=%t2.broken.name --check-prefix=NOPHDRS-LLVM --implicit-check-not=warning:
|
||||
# RUN: llvm-readelf %t2.broken.name --dyn-symbols 2>&1 | \
|
||||
# RUN: FileCheck %s -DFILE=%t2.broken.name -DNAME="<?>" \
|
||||
# RUN: --check-prefixes=NOPHDRS-GNU,NOPHDRS-NAMEWARN --implicit-check-not=warning:
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Entries:
|
||||
- Tag: DT_SYMTAB
|
||||
Value: 0xffff1234
|
||||
- Tag: DT_NULL
|
||||
Value: 0
|
||||
- Name: .dynsym
|
||||
Type: SHT_DYNSYM
|
||||
ShName: 0xffffffff
|
||||
DynamicSymbols:
|
||||
- Name: foo
|
||||
|
||||
## Case 4: Check we report a warning when there is no SHT_DYNSYM section and we can't map the DT_SYMTAB value
|
||||
## to an address because of the absence of a corresponding PT_LOAD program header.
|
||||
# RUN: yaml2obj --docnum=4 %s -o %t3.so
|
||||
# RUN: yaml2obj --docnum=3 %s -o %t3.so
|
||||
# RUN: llvm-readobj %t3.so --dyn-symbols 2>&1 | FileCheck %s -DFILE=%t3.so --check-prefixes=NOSHT-DYNSYM,NOSHT-DYNSYM-LLVM
|
||||
# RUN: llvm-readelf %t3.so --dyn-symbols 2>&1 | FileCheck %s -DFILE=%t3.so --check-prefix=NOSHT-DYNSYM
|
||||
|
||||
|
@ -197,7 +180,7 @@ DynamicSymbols:
|
|||
|
||||
## Case 5: Check that when we can't map the value of the DT_SYMTAB tag to an address, we report a warning and
|
||||
## use the information in the section header table to locate the dynamic symbol table.
|
||||
# RUN: yaml2obj --docnum=5 %s -o %t4.so
|
||||
# RUN: yaml2obj --docnum=4 %s -o %t4.so
|
||||
# RUN: llvm-readobj %t4.so --dyn-symbols 2>&1 | FileCheck -DFILE=%t4.so %s --check-prefixes=BROKEN-DTSYMTAB,BROKEN-DTSYMTAB-LLVM
|
||||
# RUN: llvm-readelf %t4.so --dyn-symbols 2>&1 | FileCheck -DFILE=%t4.so %s --check-prefixes=BROKEN-DTSYMTAB,BROKEN-DTSYMTAB-GNU
|
||||
|
||||
|
@ -229,7 +212,7 @@ ProgramHeaders:
|
|||
|
||||
## Case 6: Check that if we can get the location of the dynamic symbol table using both the DT_SYMTAB value
|
||||
## and the section headers table then we prefer the former and report a warning.
|
||||
# RUN: yaml2obj --docnum=6 %s -o %t5.so
|
||||
# RUN: yaml2obj --docnum=5 %s -o %t5.so
|
||||
# RUN: llvm-readobj %t5.so --dyn-symbols 2>&1 | FileCheck -DFILE=%t5.so %s --check-prefixes=PREFER-DTSYMTAB,PREFER-DTSYMTAB-LLVM
|
||||
# RUN: llvm-readelf %t5.so --dyn-symbols 2>&1 | FileCheck -DFILE=%t5.so %s --check-prefixes=PREFER-DTSYMTAB,PREFER-DTSYMTAB-GNU
|
||||
|
||||
|
@ -267,7 +250,7 @@ ProgramHeaders:
|
|||
|
||||
## Case 7: Check how we dump versioned symbols. Use both -V and --dyn-symbols
|
||||
## to check that printed version is consistent.
|
||||
# RUN: yaml2obj %s --docnum=7 -o %t6
|
||||
# RUN: yaml2obj %s --docnum=6 -o %t6
|
||||
# RUN: llvm-readobj -V --dyn-symbols %t6 | FileCheck %s --check-prefix=VERSIONED-LLVM
|
||||
# RUN: llvm-readelf -V --dyn-symbols %t6 | FileCheck %s --check-prefix=VERSIONED-GNU
|
||||
|
||||
|
@ -350,15 +333,15 @@ DynamicSymbols:
|
|||
|
||||
## Case 8: Check what we print when:
|
||||
## a) The dynamic symbol table does not exist.
|
||||
# RUN: yaml2obj %s --docnum=8 -o %t7
|
||||
# RUN: yaml2obj %s --docnum=7 -o %t7
|
||||
# RUN: llvm-readobj --dyn-symbols %t7 | FileCheck %s --check-prefix=NO-DYNSYM-LLVM
|
||||
# RUN: llvm-readelf --dyn-symbols %t7 | count 0
|
||||
## b) The dynamic symbol table has a size of 0.
|
||||
# RUN: yaml2obj %s --docnum=9 -o %t8
|
||||
# RUN: yaml2obj %s --docnum=8 -o %t8
|
||||
# RUN: llvm-readobj --dyn-symbols %t8 | FileCheck %s --check-prefix=NO-DYNSYM-LLVM
|
||||
# RUN: llvm-readelf --dyn-symbols %t8 | count 0
|
||||
## c) The dynamic symbol table only contains the null symbol.
|
||||
# RUN: yaml2obj %s --docnum=10 -o %t9
|
||||
# RUN: yaml2obj %s --docnum=9 -o %t9
|
||||
# RUN: llvm-readobj --dyn-symbols %t9 | FileCheck %s --check-prefix=DYNSYM-EMPTY-LLVM
|
||||
# RUN: llvm-readelf --dyn-symbols %t9 | FileCheck %s --check-prefix=DYNSYM-EMPTY-GNU
|
||||
|
||||
|
@ -409,7 +392,7 @@ DynamicSymbols: []
|
|||
|
||||
## Case 9: Check what we print when:
|
||||
## a) The size of the dynamic symbol table is not a multiple of its entry size.
|
||||
# RUN: yaml2obj %s --docnum=11 -o %t10
|
||||
# RUN: yaml2obj %s --docnum=10 -o %t10
|
||||
# RUN: llvm-readobj --dyn-symbols %t10 2>&1 | FileCheck %s -DFILE=%t10 --check-prefix=DYNSYM-SIZE-INVALID1
|
||||
# RUN: llvm-readelf --dyn-symbols %t10 2>&1 | FileCheck %s -DFILE=%t10 --check-prefix=DYNSYM-SIZE-INVALID1
|
||||
|
||||
|
@ -419,7 +402,7 @@ DynamicSymbols: []
|
|||
## information about a location and an entity size of the dynamic symbol table from the section header.
|
||||
## The code uses sizeof(Elf_Sym) for an entity size, so it can't be incorrect and
|
||||
## the message printed is a bit shorter.
|
||||
# RUN: yaml2obj %s --docnum=12 -o %t11
|
||||
# RUN: yaml2obj %s --docnum=11 -o %t11
|
||||
# RUN: llvm-readobj --dyn-symbols %t11 2>&1 | FileCheck %s -DFILE=%t11 --check-prefix=DYNSYM-SIZE-INVALID2
|
||||
# RUN: llvm-readelf --dyn-symbols %t11 2>&1 | FileCheck %s -DFILE=%t11 --check-prefix=DYNSYM-SIZE-INVALID2
|
||||
|
||||
|
@ -427,10 +410,10 @@ DynamicSymbols: []
|
|||
|
||||
## c) In the case when the DT_SYMENT tag is present, we report when it's value does not match the
|
||||
# value of the symbol size for the platform.
|
||||
# RUN: yaml2obj %s -D BITS=32 --docnum=13 -o %t12
|
||||
# RUN: yaml2obj %s -D BITS=32 --docnum=12 -o %t12
|
||||
# RUN: llvm-readobj --dyn-symbols %t12 2>&1 | FileCheck %s -DFILE=%t12 --check-prefix=DYNSYM-SIZE-INVALID3
|
||||
# RUN: llvm-readelf --dyn-symbols %t12 2>&1 | FileCheck %s -DFILE=%t12 --check-prefix=DYNSYM-SIZE-INVALID3
|
||||
# RUN: yaml2obj %s -D BITS=64 --docnum=13 -o %t13
|
||||
# RUN: yaml2obj %s -D BITS=64 --docnum=12 -o %t13
|
||||
# RUN: llvm-readobj --dyn-symbols %t13 2>&1 | FileCheck %s -DFILE=%t13 --check-prefix=DYNSYM-SIZE-INVALID4
|
||||
# RUN: llvm-readelf --dyn-symbols %t13 2>&1 | FileCheck %s -DFILE=%t13 --check-prefix=DYNSYM-SIZE-INVALID4
|
||||
|
||||
|
@ -490,7 +473,7 @@ Sections:
|
|||
## Check we report a warning when the DT_STRSZ value is broken so that the dynamic string
|
||||
## table goes past the end of the file. Document we stop dumping symbols and report an error.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=14 -o %t14
|
||||
# RUN: yaml2obj %s --docnum=13 -o %t14
|
||||
# RUN: llvm-readobj --dyn-symbols %t14 2>&1 | \
|
||||
# RUN: FileCheck %s -DFILE=%t14 --check-prefix=DYNSTR-INVALID-LLVM
|
||||
# RUN: llvm-readelf --dyn-symbols %t14 2>&1 | \
|
||||
|
@ -570,7 +553,7 @@ ProgramHeaders:
|
|||
- Section: .dynamic
|
||||
|
||||
## Check we report a warning when the entry size of the dynamic symbol table is zero.
|
||||
# RUN: yaml2obj %s --docnum=15 -o %t15
|
||||
# RUN: yaml2obj %s --docnum=14 -o %t15
|
||||
# RUN: llvm-readobj --dyn-symbols %t15 2>&1 | FileCheck %s -DFILE=%t15 --check-prefix=DYNSYM-ZERO-ENTSIZE-LLVM
|
||||
# RUN: llvm-readelf --dyn-symbols %t15 2>&1 | \
|
||||
# RUN: FileCheck %s -DFILE=%t15 --check-prefix=DYNSYM-ZERO-ENTSIZE-GNU --implicit-check-not="Symbol table"
|
||||
|
|
|
@ -21,10 +21,6 @@ FileHeader:
|
|||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
## We simulate no section header table by
|
||||
## overriding the ELF header properties.
|
||||
EShOff: 0x0
|
||||
EShNum: 0x0
|
||||
Sections:
|
||||
- Name: .rela.dyn
|
||||
Type: SHT_RELA
|
||||
|
@ -66,3 +62,5 @@ ProgramHeaders:
|
|||
- Type: PT_DYNAMIC
|
||||
Sections:
|
||||
- Section: .dynamic
|
||||
SectionHeaderTable:
|
||||
NoHeaders: true
|
||||
|
|
|
@ -15,26 +15,21 @@
|
|||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Address: 0x0000000000001010
|
||||
AddressAlign: 0x0000000000000010
|
||||
EntSize: 0x0000000000000010
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Entries:
|
||||
- Tag: DT_DEBUG
|
||||
Value: 0x0000000000000000
|
||||
- Tag: DT_DEBUG
|
||||
Value: 0x0000000000000000
|
||||
ProgramHeaders:
|
||||
- Type: PT_LOAD
|
||||
VAddr: 0x1000
|
||||
Sections:
|
||||
- Section: .dynamic
|
||||
- Type: PT_DYNAMIC
|
||||
VAddr: 0x1010
|
||||
Sections:
|
||||
- Section: .dynamic
|
||||
|
||||
|
@ -59,29 +54,24 @@ ProgramHeaders:
|
|||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Address: 0x0000000000001010
|
||||
AddressAlign: 0x0000000000000010
|
||||
EntSize: 0x0000000000000010
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Entries:
|
||||
- Tag: DT_DEBUG
|
||||
Value: 0x0000000000000000
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0000000000000000
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0000000000000000
|
||||
- Tag: DT_DEBUG
|
||||
Value: 0x0000000000000000
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0000000000000000
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0000000000000000
|
||||
ProgramHeaders:
|
||||
- Type: PT_LOAD
|
||||
VAddr: 0x1000
|
||||
Sections:
|
||||
- Section: .dynamic
|
||||
- Type: PT_DYNAMIC
|
||||
VAddr: 0x1010
|
||||
Sections:
|
||||
- Section: .dynamic
|
||||
|
|
|
@ -140,11 +140,11 @@
|
|||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Class: ELFCLASS[[BITS=64]]
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
EPhEntSize: [[PHENTSIZE=56]]
|
||||
Machine: EM_NONE
|
||||
EPhEntSize: [[PHENTSIZE=<none>]]
|
||||
Sections:
|
||||
- Name: .dynstr
|
||||
Type: SHT_STRTAB
|
||||
|
@ -186,7 +186,7 @@ Sections:
|
|||
- Tag: DT_RPATH
|
||||
Value: 0x5
|
||||
- Tag: DT_SYMBOLIC
|
||||
Value: 0x1234567890abcdef
|
||||
Value: [[SYMBOLIC=0x1234567890abcdef]]
|
||||
- Tag: DT_REL
|
||||
Value: 0x1000
|
||||
- Tag: DT_RELSZ
|
||||
|
@ -196,13 +196,13 @@ Sections:
|
|||
- Tag: DT_PLTREL
|
||||
Value: 0x7
|
||||
- Tag: DT_DEBUG
|
||||
Value: 0xfedcba0987654321
|
||||
Value: [[DEBUG=0xfedcba0987654321]]
|
||||
- Tag: DT_TEXTREL
|
||||
Value: 0x1122334455667788
|
||||
Value: [[TEXTREL=0x1122334455667788]]
|
||||
- Tag: DT_JMPREL
|
||||
Value: 0x1000
|
||||
- Tag: DT_BIND_NOW
|
||||
Value: 0x8877665544332211
|
||||
Value: [[BINDNOW=0x8877665544332211]]
|
||||
- Tag: DT_INIT_ARRAY
|
||||
Value: 0x1000
|
||||
- Tag: DT_FINI_ARRAY
|
||||
|
@ -214,7 +214,7 @@ Sections:
|
|||
- Tag: DT_RUNPATH
|
||||
Value: 0x7
|
||||
- Tag: DT_FLAGS
|
||||
Value: 0xffffffffffffffff
|
||||
Value: [[FLAGS=0xffffffffffffffff]]
|
||||
- Tag: DT_PREINIT_ARRAY
|
||||
Value: 0x1000
|
||||
- Tag: DT_PREINIT_ARRAYSZ
|
||||
|
@ -252,7 +252,7 @@ Sections:
|
|||
- Tag: DT_RELCOUNT
|
||||
Value: 0x0
|
||||
- Tag: DT_FLAGS_1
|
||||
Value: 0xffffffffffffffff
|
||||
Value: [[FLAGS=0xffffffffffffffff]]
|
||||
- Tag: DT_VERSYM
|
||||
Value: 0x1000
|
||||
- Tag: DT_VERDEF
|
||||
|
@ -272,13 +272,13 @@ Sections:
|
|||
## Show behaviour for unknown values in special and un-marked ranges.
|
||||
## An arbitrary unknown value outside of the special ranges.
|
||||
- Tag: 0x12345678
|
||||
Value: 0x8765432187654321
|
||||
Value: [[UNKNOWN=0x8765432187654321]]
|
||||
## An OS specific tag.
|
||||
- Tag: 0x6abcdef0
|
||||
Value: 0x9988776655443322
|
||||
Value: [[OSSPEC=0x9988776655443322]]
|
||||
## A processor specific tags.
|
||||
- Tag: 0x76543210
|
||||
Value: 0x5555666677778888
|
||||
Value: [[PROCSPEC=0x5555666677778888]]
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0
|
||||
ProgramHeaders:
|
||||
|
@ -292,7 +292,9 @@ ProgramHeaders:
|
|||
Sections:
|
||||
- Section: .dynamic
|
||||
|
||||
# RUN: yaml2obj %s --docnum=2 -o %t2
|
||||
# RUN: yaml2obj %s --docnum=1 -DBITS=32 -DSYMBOLIC=0x12345678 -DDEBUG=0xfedcba09 \
|
||||
# RUN: -DTEXTREL=0x11223344 -DBINDNOW=0x88776655 -DFLAGS=0xffffffff \
|
||||
# RUN: -DUNKNOWN=0x87654321 -DOSSPEC=0x99887766 -DPROCSPEC=0x55556666 -o %t2
|
||||
# RUN: llvm-readobj --dynamic-table %t2 \
|
||||
# RUN: | FileCheck %s --check-prefix=LLVM32 --strict-whitespace --match-full-lines
|
||||
# RUN: llvm-readobj -d %t2 | FileCheck %s --check-prefix=LLVM32 --strict-whitespace --match-full-lines
|
||||
|
@ -429,169 +431,16 @@ ProgramHeaders:
|
|||
# GNU32-NEXT: 0x76543210 (<unknown:>0x76543210) 0x55556666
|
||||
# GNU32-NEXT: 0x00000000 (NULL) 0x0
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS32
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_386
|
||||
Sections:
|
||||
- Name: .dynstr
|
||||
Type: SHT_STRTAB
|
||||
Address: 0x1000
|
||||
Size: 0x10
|
||||
Content: "004400550066007700"
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Address: 0x1010
|
||||
Entries:
|
||||
- Tag: DT_NEEDED
|
||||
Value: 0x1
|
||||
- Tag: DT_PLTRELSZ
|
||||
Value: 0x10
|
||||
- Tag: DT_PLTGOT
|
||||
Value: 0x1000
|
||||
- Tag: DT_HASH
|
||||
Value: 0x1000
|
||||
- Tag: DT_STRTAB
|
||||
Value: 0x1000
|
||||
- Tag: DT_SYMTAB
|
||||
Value: 0x1000
|
||||
- Tag: DT_RELA
|
||||
Value: 0x1000
|
||||
- Tag: DT_RELASZ
|
||||
Value: 0x10
|
||||
- Tag: DT_RELAENT
|
||||
Value: 0x789
|
||||
- Tag: DT_STRSZ
|
||||
Value: 0x10
|
||||
- Tag: DT_SYMENT
|
||||
Value: 0x987
|
||||
- Tag: DT_INIT
|
||||
Value: 0x1000
|
||||
- Tag: DT_FINI
|
||||
Value: 0x1000
|
||||
- Tag: DT_SONAME
|
||||
Value: 0x3
|
||||
- Tag: DT_RPATH
|
||||
Value: 0x5
|
||||
- Tag: DT_SYMBOLIC
|
||||
Value: 0x12345678
|
||||
- Tag: DT_REL
|
||||
Value: 0x1000
|
||||
- Tag: DT_RELSZ
|
||||
Value: 0x10
|
||||
- Tag: DT_RELENT
|
||||
Value: 0x123
|
||||
- Tag: DT_PLTREL
|
||||
Value: 0x7
|
||||
- Tag: DT_DEBUG
|
||||
Value: 0xfedcba09
|
||||
- Tag: DT_TEXTREL
|
||||
Value: 0x11223344
|
||||
- Tag: DT_JMPREL
|
||||
Value: 0x1000
|
||||
- Tag: DT_BIND_NOW
|
||||
Value: 0x88776655
|
||||
- Tag: DT_INIT_ARRAY
|
||||
Value: 0x1000
|
||||
- Tag: DT_FINI_ARRAY
|
||||
Value: 0x1000
|
||||
- Tag: DT_INIT_ARRAYSZ
|
||||
Value: 0x10
|
||||
- Tag: DT_FINI_ARRAYSZ
|
||||
Value: 0x10
|
||||
- Tag: DT_RUNPATH
|
||||
Value: 0x7
|
||||
- Tag: DT_FLAGS
|
||||
Value: 0xffffffff
|
||||
- Tag: DT_PREINIT_ARRAY
|
||||
Value: 0x1000
|
||||
- Tag: DT_PREINIT_ARRAYSZ
|
||||
Value: 0x10
|
||||
- Tag: DT_SYMTAB_SHNDX
|
||||
Value: 0x1000
|
||||
- Tag: DT_RELRSZ
|
||||
Value: 0x10
|
||||
- Tag: DT_RELR
|
||||
Value: 0x1000
|
||||
- Tag: DT_RELRENT
|
||||
Value: 0x4321
|
||||
- Tag: DT_ANDROID_REL
|
||||
Value: 0x1000
|
||||
- Tag: DT_ANDROID_RELSZ
|
||||
Value: 0x10
|
||||
- Tag: DT_ANDROID_RELA
|
||||
Value: 0x1000
|
||||
- Tag: DT_ANDROID_RELASZ
|
||||
Value: 0x10
|
||||
- Tag: DT_ANDROID_RELR
|
||||
Value: 0x1000
|
||||
- Tag: DT_ANDROID_RELRSZ
|
||||
Value: 0x10
|
||||
- Tag: DT_ANDROID_RELRENT
|
||||
Value: 0x1234
|
||||
- Tag: DT_GNU_HASH
|
||||
Value: 0x1000
|
||||
- Tag: DT_TLSDESC_PLT
|
||||
Value: 0x1000
|
||||
- Tag: DT_TLSDESC_GOT
|
||||
Value: 0x1000
|
||||
- Tag: DT_RELACOUNT
|
||||
Value: 0x0
|
||||
- Tag: DT_RELCOUNT
|
||||
Value: 0x0
|
||||
- Tag: DT_FLAGS_1
|
||||
Value: 0xffffffff
|
||||
- Tag: DT_VERSYM
|
||||
Value: 0x1000
|
||||
- Tag: DT_VERDEF
|
||||
Value: 0x1000
|
||||
- Tag: DT_VERDEFNUM
|
||||
Value: 0x0
|
||||
- Tag: DT_VERNEED
|
||||
Value: 0x1000
|
||||
- Tag: DT_VERNEEDNUM
|
||||
Value: 0x0
|
||||
- Tag: DT_AUXILIARY
|
||||
Value: 0x1
|
||||
- Tag: DT_USED
|
||||
Value: 0x3
|
||||
- Tag: DT_FILTER
|
||||
Value: 0x3
|
||||
## Show behaviour for unknown values in special and un-marked ranges.
|
||||
## An arbitrary unknown value outside of the special ranges.
|
||||
- Tag: 0x12345678
|
||||
Value: 0x87654321
|
||||
## An OS specific tag.
|
||||
- Tag: 0x6abcdef0
|
||||
Value: 0x99887766
|
||||
## A processor specific tags.
|
||||
- Tag: 0x76543210
|
||||
Value: 0x55556666
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0
|
||||
ProgramHeaders:
|
||||
- Type: PT_LOAD
|
||||
VAddr: 0x1000
|
||||
Sections:
|
||||
- Section: .dynstr
|
||||
- Section: .dynamic
|
||||
- Type: PT_DYNAMIC
|
||||
VAddr: 0x1010
|
||||
Sections:
|
||||
- Section: .dynamic
|
||||
|
||||
## When printing the "Name/Value" column we want to have the minimal possible indentation.
|
||||
## Use an arbitrary dynamic tag to demonstrate this.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=3 -o %t3
|
||||
# RUN: yaml2obj %s --docnum=2 -o %t3
|
||||
# RUN: llvm-readobj --dynamic-table %t3 \
|
||||
# RUN: | FileCheck %s --check-prefix=INDENT-LLVM-64 --strict-whitespace
|
||||
# RUN: llvm-readelf --dynamic-table %t3 \
|
||||
# RUN: | FileCheck %s --check-prefix=INDENT-GNU-64 --strict-whitespace
|
||||
|
||||
# RUN: yaml2obj %s --docnum=4 -o %t4
|
||||
# RUN: yaml2obj %s --docnum=2 -DBITS=32 -o %t4
|
||||
# RUN: llvm-readobj --dynamic-table %t4 \
|
||||
# RUN: | FileCheck %s --check-prefix=INDENT-LLVM-32 --strict-whitespace
|
||||
# RUN: llvm-readelf --dynamic-table %t4 \
|
||||
|
@ -611,25 +460,10 @@ ProgramHeaders:
|
|||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Class: ELFCLASS[[BITS=64]]
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Entries:
|
||||
- Tag: DT_NEEDED
|
||||
Value: 0x1
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS32
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_386
|
||||
Machine: EM_NONE
|
||||
Sections:
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
|
|
|
@ -1,24 +1,26 @@
|
|||
## This is a test to test how the ABI version field (EI_ABIVERSION) of an ELF file header is dumped.
|
||||
|
||||
## EI_ABIVERSION is set to zero.
|
||||
# RUN: yaml2obj %s --docnum=1 -o %t.abiver.zero
|
||||
# RUN: yaml2obj %s -DABIVERSION=0 -o %t.abiver.zero
|
||||
# RUN: llvm-readobj --file-headers %t.abiver.zero | FileCheck %s --match-full-lines --check-prefix=ABIVER-ZERO-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.abiver.zero | FileCheck %s --match-full-lines --check-prefix=ABIVER-ZERO-GNU
|
||||
## EI_ABIVERSION is set to an arbitrary number.
|
||||
# RUN: yaml2obj %s --docnum=2 -o %t.abiver.any
|
||||
# RUN: llvm-readobj --file-headers %t.abiver.any | FileCheck %s --match-full-lines --check-prefix=ABIVER-ANY-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.abiver.any | FileCheck %s --match-full-lines --check-prefix=ABIVER-ANY-GNU
|
||||
## EI_ABIVERSION is set to the maximum possible value.
|
||||
# RUN: yaml2obj %s --docnum=3 -o %t.abiver.max
|
||||
# RUN: llvm-readobj --file-headers %t.abiver.max | FileCheck %s --match-full-lines --check-prefix=ABIVER-MAX-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.abiver.max | FileCheck %s --match-full-lines --check-prefix=ABIVER-MAX-GNU
|
||||
|
||||
# ABIVER-ZERO-LLVM: ABIVersion: 0
|
||||
# ABIVER-ZERO-GNU: ABI Version: 0
|
||||
|
||||
## EI_ABIVERSION is set to an arbitrary number.
|
||||
# RUN: yaml2obj %s -DABIVERSION=52 -o %t.abiver.any
|
||||
# RUN: llvm-readobj --file-headers %t.abiver.any | FileCheck %s --match-full-lines --check-prefix=ABIVER-ANY-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.abiver.any | FileCheck %s --match-full-lines --check-prefix=ABIVER-ANY-GNU
|
||||
|
||||
# ABIVER-ANY-LLVM: ABIVersion: 52
|
||||
# ABIVER-ANY-GNU: ABI Version: 52
|
||||
|
||||
## EI_ABIVERSION is set to the maximum possible value.
|
||||
# RUN: yaml2obj %s -DABIVERSION=255 -o %t.abiver.max
|
||||
# RUN: llvm-readobj --file-headers %t.abiver.max | FileCheck %s --match-full-lines --check-prefix=ABIVER-MAX-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.abiver.max | FileCheck %s --match-full-lines --check-prefix=ABIVER-MAX-GNU
|
||||
|
||||
# ABIVER-MAX-LLVM: ABIVersion: 255
|
||||
# ABIVER-MAX-GNU: ABI Version: 255
|
||||
|
||||
|
@ -28,20 +30,4 @@ FileHeader:
|
|||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
ABIVersion: 0x0
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
ABIVersion: 0x34
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
ABIVersion: 0xFF
|
||||
ABIVersion: [[ABIVERSION]]
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
## This is a test to test how the OS/ABI identification field (EI_OSABI) of an ELF file header is dumped.
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_NONE.
|
||||
# RUN: yaml2obj %s --docnum=1 -o %t.osabi.none
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_NONE -o %t.osabi.none
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.none | FileCheck %s --match-full-lines --check-prefix=OSABI-NONE-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.none | FileCheck %s --match-full-lines --check-prefix=OSABI-NONE-GNU
|
||||
|
||||
|
@ -14,292 +14,148 @@ FileHeader:
|
|||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_NONE
|
||||
OSABI: [[OSABI]]
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_HPUX.
|
||||
# RUN: yaml2obj %s --docnum=2 -o %t.osabi.hpux
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_HPUX -o %t.osabi.hpux
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.hpux | FileCheck %s --match-full-lines --check-prefix=OSABI-HPUX-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.hpux | FileCheck %s --match-full-lines --check-prefix=OSABI-HPUX-GNU
|
||||
|
||||
# OSABI-HPUX-LLVM: OS/ABI: HPUX (0x1)
|
||||
# OSABI-HPUX-GNU: OS/ABI: UNIX - HP-UX
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_HPUX
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_NETBSD.
|
||||
# RUN: yaml2obj %s --docnum=3 -o %t.osabi.netbsd
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_NETBSD -o %t.osabi.netbsd
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.netbsd | FileCheck %s --match-full-lines --check-prefix=OSABI-NETBSD-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.netbsd | FileCheck %s --match-full-lines --check-prefix=OSABI-NETBSD-GNU
|
||||
|
||||
# OSABI-NETBSD-LLVM: OS/ABI: NetBSD (0x2)
|
||||
# OSABI-NETBSD-GNU: OS/ABI: UNIX - NetBSD
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_NETBSD
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_LINUX.
|
||||
# RUN: yaml2obj %s --docnum=4 -o %t.osabi.linux
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_LINUX -o %t.osabi.linux
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.linux | FileCheck %s --match-full-lines --check-prefix=OSABI-LINUX-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.linux | FileCheck %s --match-full-lines --check-prefix=OSABI-LINUX-GNU
|
||||
|
||||
# OSABI-LINUX-LLVM: OS/ABI: GNU/Linux (0x3)
|
||||
# OSABI-LINUX-GNU: OS/ABI: UNIX - GNU
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_LINUX
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_HURD.
|
||||
# RUN: yaml2obj %s --docnum=5 -o %t.osabi.hurd
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_HURD -o %t.osabi.hurd
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.hurd | FileCheck %s --match-full-lines --check-prefix=OSABI-HURD-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.hurd | FileCheck %s --match-full-lines --check-prefix=OSABI-HURD-GNU
|
||||
|
||||
# OSABI-HURD-LLVM: OS/ABI: GNU/Hurd (0x4)
|
||||
# OSABI-HURD-GNU: OS/ABI: GNU/Hurd
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_HURD
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_SOLARIS.
|
||||
# RUN: yaml2obj %s --docnum=6 -o %t.osabi.solaris
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_SOLARIS -o %t.osabi.solaris
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.solaris | FileCheck %s --match-full-lines --check-prefix=OSABI-SOLARIS-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.solaris | FileCheck %s --match-full-lines --check-prefix=OSABI-SOLARIS-GNU
|
||||
|
||||
# OSABI-SOLARIS-LLVM: OS/ABI: Solaris (0x6)
|
||||
# OSABI-SOLARIS-GNU: OS/ABI: UNIX - Solaris
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_SOLARIS
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_AIX.
|
||||
# RUN: yaml2obj %s --docnum=7 -o %t.osabi.aix
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_AIX -o %t.osabi.aix
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.aix | FileCheck %s --match-full-lines --check-prefix=OSABI-AIX-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.aix | FileCheck %s --match-full-lines --check-prefix=OSABI-AIX-GNU
|
||||
|
||||
# OSABI-AIX-LLVM: OS/ABI: AIX (0x7)
|
||||
# OSABI-AIX-GNU: OS/ABI: UNIX - AIX
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_AIX
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_IRIX.
|
||||
# RUN: yaml2obj %s --docnum=8 -o %t.osabi.irix
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_IRIX -o %t.osabi.irix
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.irix | FileCheck %s --match-full-lines --check-prefix=OSABI-IRIX-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.irix | FileCheck %s --match-full-lines --check-prefix=OSABI-IRIX-GNU
|
||||
|
||||
# OSABI-IRIX-LLVM: OS/ABI: IRIX (0x8)
|
||||
# OSABI-IRIX-GNU: OS/ABI: UNIX - IRIX
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_IRIX
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_FREEBSD.
|
||||
# RUN: yaml2obj %s --docnum=9 -o %t.osabi.freebsd
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_FREEBSD -o %t.osabi.freebsd
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.freebsd | FileCheck %s --match-full-lines --check-prefix=OSABI-FREEBSD-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.freebsd | FileCheck %s --match-full-lines --check-prefix=OSABI-FREEBSD-GNU
|
||||
|
||||
# OSABI-FREEBSD-LLVM: OS/ABI: FreeBSD (0x9)
|
||||
# OSABI-FREEBSD-GNU: OS/ABI: UNIX - FreeBSD
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_FREEBSD
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_TRU64.
|
||||
# RUN: yaml2obj %s --docnum=10 -o %t.osabi.tru64
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_TRU64 -o %t.osabi.tru64
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.tru64 | FileCheck %s --match-full-lines --check-prefix=OSABI-TRU64-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.tru64 | FileCheck %s --match-full-lines --check-prefix=OSABI-TRU64-GNU
|
||||
|
||||
# OSABI-TRU64-LLVM: OS/ABI: TRU64 (0xA)
|
||||
# OSABI-TRU64-GNU: OS/ABI: UNIX - TRU64
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_TRU64
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_MODESTO.
|
||||
# RUN: yaml2obj %s --docnum=11 -o %t.osabi.modesto
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_MODESTO -o %t.osabi.modesto
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.modesto | FileCheck %s --match-full-lines --check-prefix=OSABI-MODESTO-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.modesto | FileCheck %s --match-full-lines --check-prefix=OSABI-MODESTO-GNU
|
||||
|
||||
# OSABI-MODESTO-LLVM: OS/ABI: Modesto (0xB)
|
||||
# OSABI-MODESTO-GNU: OS/ABI: Novell - Modesto
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_MODESTO
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_OPENBSD.
|
||||
# RUN: yaml2obj %s --docnum=12 -o %t.osabi.openbsd
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_OPENBSD -o %t.osabi.openbsd
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.openbsd | FileCheck %s --match-full-lines --check-prefix=OSABI-OPENBSD-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.openbsd | FileCheck %s --match-full-lines --check-prefix=OSABI-OPENBSD-GNU
|
||||
|
||||
# OSABI-OPENBSD-LLVM: OS/ABI: OpenBSD (0xC)
|
||||
# OSABI-OPENBSD-GNU: OS/ABI: UNIX - OpenBSD
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_OPENBSD
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_OPENVMS.
|
||||
# RUN: yaml2obj %s --docnum=13 -o %t.osabi.openvms
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_OPENVMS -o %t.osabi.openvms
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.openvms | FileCheck %s --match-full-lines --check-prefix=OSABI-OPENVMS-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.openvms | FileCheck %s --match-full-lines --check-prefix=OSABI-OPENVMS-GNU
|
||||
|
||||
# OSABI-OPENVMS-LLVM: OS/ABI: OpenVMS (0xD)
|
||||
# OSABI-OPENVMS-GNU: OS/ABI: VMS - OpenVMS
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_OPENVMS
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_NSK.
|
||||
# RUN: yaml2obj %s --docnum=14 -o %t.osabi.nsk
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_NSK -o %t.osabi.nsk
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.nsk | FileCheck %s --match-full-lines --check-prefix=OSABI-NSK-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.nsk | FileCheck %s --match-full-lines --check-prefix=OSABI-NSK-GNU
|
||||
|
||||
# OSABI-NSK-LLVM: OS/ABI: NSK (0xE)
|
||||
# OSABI-NSK-GNU: OS/ABI: HP - Non-Stop Kernel
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_NSK
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_AROS.
|
||||
# RUN: yaml2obj %s --docnum=15 -o %t.osabi.aros
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_AROS -o %t.osabi.aros
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.aros | FileCheck %s --match-full-lines --check-prefix=OSABI-AROS-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.aros | FileCheck %s --match-full-lines --check-prefix=OSABI-AROS-GNU
|
||||
|
||||
# OSABI-AROS-LLVM: OS/ABI: AROS (0xF)
|
||||
# OSABI-AROS-GNU: OS/ABI: AROS
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_AROS
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_FENIXOS.
|
||||
# RUN: yaml2obj %s --docnum=16 -o %t.osabi.fenixos
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_FENIXOS -o %t.osabi.fenixos
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.fenixos | FileCheck %s --match-full-lines --check-prefix=OSABI-FENIXOS-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.fenixos | FileCheck %s --match-full-lines --check-prefix=OSABI-FENIXOS-GNU
|
||||
|
||||
# OSABI-FENIXOS-LLVM: OS/ABI: FenixOS (0x10)
|
||||
# OSABI-FENIXOS-GNU: OS/ABI: FenixOS
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_FENIXOS
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_CLOUDABI.
|
||||
# RUN: yaml2obj %s --docnum=17 -o %t.osabi.cloudabi
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_CLOUDABI -o %t.osabi.cloudabi
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.cloudabi | FileCheck %s --match-full-lines --check-prefix=OSABI-CLOUDABI-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.cloudabi | FileCheck %s --match-full-lines --check-prefix=OSABI-CLOUDABI-GNU
|
||||
|
||||
# OSABI-CLOUDABI-LLVM: OS/ABI: CloudABI (0x11)
|
||||
# OSABI-CLOUDABI-GNU: OS/ABI: CloudABI
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_CLOUDABI
|
||||
|
||||
## EI_OSABI is set to ELFOSABI_STANDALONE.
|
||||
# RUN: yaml2obj %s --docnum=18 -o %t.osabi.standalone
|
||||
# RUN: yaml2obj %s -DOSABI=ELFOSABI_STANDALONE -o %t.osabi.standalone
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.standalone | FileCheck %s --match-full-lines --check-prefix=OSABI-STANDALONE-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.standalone | FileCheck %s --match-full-lines --check-prefix=OSABI-STANDALONE-GNU
|
||||
|
||||
# OSABI-STANDALONE-LLVM: OS/ABI: Standalone (0xFF)
|
||||
# OSABI-STANDALONE-GNU: OS/ABI: Standalone App
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: ELFOSABI_STANDALONE
|
||||
|
||||
## EI_OSABI is set to an arbitrary value which is not supported by llvm-readobj/llvm-readelf.
|
||||
# RUN: yaml2obj %s --docnum=19 -o %t.osabi.unknown
|
||||
# RUN: yaml2obj %s -DOSABI=0xFE -o %t.osabi.unknown
|
||||
# RUN: llvm-readobj --file-headers %t.osabi.unknown | FileCheck %s --match-full-lines --check-prefix=OSABI-UNKNOWN-LLVM
|
||||
# RUN: llvm-readelf --file-headers %t.osabi.unknown | FileCheck %s --match-full-lines --check-prefix=OSABI-UNKNOWN-GNU
|
||||
|
||||
# OSABI-UNKNOWN-LLVM: OS/ABI: 0xFE
|
||||
# OSABI-UNKNOWN-GNU: OS/ABI: fe
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
OSABI: 0xFE
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
## Check llvm-readobj and llvm-readelf can dump files of the different ELF types.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=1 -o %t1
|
||||
# RUN: yaml2obj %s -DTYPE=ET_NONE -o %t1
|
||||
# RUN: llvm-readobj -h %t1 | FileCheck %s --match-full-lines --check-prefix LLVM-NONE
|
||||
# RUN: llvm-readelf -h %t1 | FileCheck %s --match-full-lines --check-prefix GNU-NONE
|
||||
|
||||
|
@ -14,10 +14,10 @@
|
|||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_NONE
|
||||
Type: [[TYPE]]
|
||||
Machine: EM_X86_64
|
||||
|
||||
# RUN: yaml2obj %s --docnum=2 -o %t2
|
||||
# RUN: yaml2obj %s -DTYPE=ET_REL -o %t2
|
||||
# RUN: llvm-readobj -h %t2 | FileCheck %s --match-full-lines --check-prefix LLVM-REL
|
||||
# RUN: llvm-readelf -h %t2 | FileCheck %s --match-full-lines --check-prefix GNU-REL
|
||||
|
||||
|
@ -27,14 +27,7 @@ FileHeader:
|
|||
# GNU-REL: ELF Header:
|
||||
# GNU-REL: Type: REL (Relocatable file)
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
|
||||
# RUN: yaml2obj %s --docnum=3 -o %t3
|
||||
# RUN: yaml2obj %s -DTYPE=ET_EXEC -o %t3
|
||||
# RUN: llvm-readobj -h %t3 | FileCheck %s --match-full-lines --check-prefix LLVM-EXEC
|
||||
# RUN: llvm-readelf -h %t3 | FileCheck %s --match-full-lines --check-prefix GNU-EXEC
|
||||
|
||||
|
@ -44,14 +37,7 @@ FileHeader:
|
|||
# GNU-EXEC: ELF Header:
|
||||
# GNU-EXEC: Type: EXEC (Executable file)
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
|
||||
# RUN: yaml2obj %s --docnum=4 -o %t4
|
||||
# RUN: yaml2obj %s -DTYPE=ET_DYN -o %t4
|
||||
# RUN: llvm-readobj -h %t4 | FileCheck %s --match-full-lines --check-prefix LLVM-DYN
|
||||
# RUN: llvm-readelf -h %t4 | FileCheck %s --match-full-lines --check-prefix GNU-DYN
|
||||
|
||||
|
@ -61,14 +47,7 @@ FileHeader:
|
|||
# GNU-DYN: ELF Header:
|
||||
# GNU-DYN: Type: DYN (Shared object file)
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
|
||||
# RUN: yaml2obj %s --docnum=5 -o %t5
|
||||
# RUN: yaml2obj %s -DTYPE=ET_CORE -o %t5
|
||||
# RUN: llvm-readobj -h %t5 | FileCheck %s --match-full-lines --check-prefix LLVM-CORE
|
||||
# RUN: llvm-readelf -h %t5 | FileCheck %s --match-full-lines --check-prefix GNU-CORE
|
||||
|
||||
|
@ -78,14 +57,7 @@ FileHeader:
|
|||
# GNU-CORE: ELF Header:
|
||||
# GNU-CORE: Type: CORE (Core file)
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_CORE
|
||||
Machine: EM_X86_64
|
||||
|
||||
# RUN: yaml2obj %s --docnum=6 -o %t6
|
||||
# RUN: yaml2obj %s -DTYPE=0xfe00 -o %t6
|
||||
# RUN: llvm-readobj -h %t6 | FileCheck %s --match-full-lines --check-prefix LLVM-LOOS
|
||||
# RUN: llvm-readelf -h %t6 | FileCheck %s --match-full-lines --check-prefix GNU-LOOS
|
||||
|
||||
|
@ -95,14 +67,7 @@ FileHeader:
|
|||
# GNU-LOOS: ELF Header:
|
||||
# GNU-LOOS: Type: fe00
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: 0xfe00
|
||||
Machine: EM_X86_64
|
||||
|
||||
# RUN: yaml2obj %s --docnum=7 -o %t7
|
||||
# RUN: yaml2obj %s -DTYPE=0xfeff -o %t7
|
||||
# RUN: llvm-readobj -h %t7 | FileCheck %s --match-full-lines --check-prefix LLVM-HIOS
|
||||
# RUN: llvm-readelf -h %t7 | FileCheck %s --match-full-lines --check-prefix GNU-HIOS
|
||||
|
||||
|
@ -112,14 +77,7 @@ FileHeader:
|
|||
# GNU-HIOS: ELF Header:
|
||||
# GNU-HIOS: Type: feff
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: 0xfeff
|
||||
Machine: EM_X86_64
|
||||
|
||||
# RUN: yaml2obj %s --docnum=8 -o %t8
|
||||
# RUN: yaml2obj %s -DTYPE=0xff00 -o %t8
|
||||
# RUN: llvm-readobj -h %t8 | FileCheck %s --match-full-lines --check-prefix LLVM-LOPROC
|
||||
# RUN: llvm-readelf -h %t8 | FileCheck %s --match-full-lines --check-prefix GNU-LOPROC
|
||||
|
||||
|
@ -129,14 +87,7 @@ FileHeader:
|
|||
# GNU-LOPROC: ELF Header:
|
||||
# GNU-LOPROC: Type: ff00
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: 0xff00
|
||||
Machine: EM_X86_64
|
||||
|
||||
# RUN: yaml2obj %s --docnum=9 -o %t9
|
||||
# RUN: yaml2obj %s -DTYPE=0xffff -o %t9
|
||||
# RUN: llvm-readobj -h %t9 | FileCheck %s --match-full-lines --check-prefix LLVM-HIPROC
|
||||
# RUN: llvm-readelf -h %t9 | FileCheck %s --match-full-lines --check-prefix GNU-HIPROC
|
||||
|
||||
|
@ -145,10 +96,3 @@ FileHeader:
|
|||
|
||||
# GNU-HIPROC: ELF Header:
|
||||
# GNU-HIPROC: Type: ffff
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: 0xffff
|
||||
Machine: EM_X86_64
|
||||
|
|
|
@ -87,8 +87,8 @@ FileHeader:
|
|||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
EPhEntSize: [[PHENTSIZE=56]]
|
||||
EShNum: [[SHNUM=6]]
|
||||
EPhEntSize: [[PHENTSIZE=<none>]]
|
||||
EShNum: [[SHNUM=<none>]]
|
||||
Sections:
|
||||
- Name: .note.ABI-tag
|
||||
Type: SHT_NOTE
|
||||
|
|
|
@ -109,7 +109,6 @@ FileHeader:
|
|||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: [[MACHINE]]
|
||||
Entry: 0x12345678
|
||||
Sections:
|
||||
- Name: .foo.begin
|
||||
Type: SHT_PROGBITS
|
||||
|
@ -374,8 +373,8 @@ FileHeader:
|
|||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
EPhEntSize: [[PHENTSIZE=56]]
|
||||
EPhOff: [[PHOFF=64]]
|
||||
EPhEntSize: [[PHENTSIZE=<none>]]
|
||||
EPhOff: [[PHOFF=<none>]]
|
||||
Sections:
|
||||
- Name: .foo
|
||||
Type: SHT_PROGBITS
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
## Test the behaviour of --section-mapping when there are no section headers in an object.
|
||||
## Test the behaviour of --section-mapping when there are no program headers in an object.
|
||||
# RUN: yaml2obj %s -o %t
|
||||
# RUN: llvm-readelf --section-mapping %t | FileCheck %s --strict-whitespace --match-full-lines
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ FileHeader:
|
|||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
EPhEntSize: [[PHENTSIZE=56]]
|
||||
EPhEntSize: [[PHENTSIZE=<none>]]
|
||||
Sections:
|
||||
- Name: .foo.begin
|
||||
Type: SHT_PROGBITS
|
||||
|
|
|
@ -1,23 +1,24 @@
|
|||
## In this test case we check how we print section and flag descriptions for different targets.
|
||||
|
||||
## EM_386 is a target that does not have any processor and OS specific flags,
|
||||
## EM_NONE is a target that does not have any processor and OS specific flags,
|
||||
## we use it to show how the default flag key is printed.
|
||||
|
||||
# RUN: yaml2obj --docnum=1 %s -o %t-i386.o
|
||||
# RUN: llvm-readelf -S %t-i386.o | FileCheck %s --check-prefix=ELF32 --strict-whitespace --match-full-lines
|
||||
# RUN: yaml2obj -DBITS=32 %s -o %t-default.o
|
||||
# RUN: llvm-readelf -S %t-default.o | FileCheck %s --check-prefix=ELF32 --strict-whitespace --match-full-lines
|
||||
|
||||
# ELF32:There are 8 section headers, starting at offset 0x90:
|
||||
# ELF32:There are 9 section headers, starting at offset 0x9c:
|
||||
# ELF32-EMPTY:
|
||||
# ELF32-NEXT:Section Headers:
|
||||
# ELF32-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al
|
||||
# ELF32-NEXT: [ 0] NULL 00000000 000000 000000 00 0 0 0
|
||||
# ELF32-NEXT: [ 1] .text PROGBITS 00000000 000034 000001 00 AX 0 0 4
|
||||
# ELF32-NEXT: [ 2] .rel.text REL 00000000 000038 000000 08 5 1 4
|
||||
# ELF32-NEXT: [ 3] .data PROGBITS 00000000 000038 000000 00 WA 0 0 4
|
||||
# ELF32-NEXT: [ 4] .bss NOBITS 00000000 000038 000000 00 WA 0 0 4
|
||||
# ELF32-NEXT: [ 5] .symtab SYMTAB 00000000 000038 000020 10 6 2 8
|
||||
# ELF32-NEXT: [ 6] .strtab STRTAB 00000000 000058 000007 00 0 0 1
|
||||
# ELF32-NEXT: [ 7] .shstrtab STRTAB 00000000 00005f 000030 00 0 0 1
|
||||
# ELF32-NEXT: [ 2] .rel.text REL 00000000 000038 000000 08 6 1 4
|
||||
# ELF32-NEXT: [ 3] .rela.text RELA 00000000 000038 000000 18 6 1 8
|
||||
# ELF32-NEXT: [ 4] .data PROGBITS 00000000 000038 000000 00 WA 0 0 4
|
||||
# ELF32-NEXT: [ 5] .bss NOBITS 00000000 000038 000000 00 WA 0 0 4
|
||||
# ELF32-NEXT: [ 6] .symtab SYMTAB 00000000 000038 000020 10 7 2 8
|
||||
# ELF32-NEXT: [ 7] .strtab STRTAB 00000000 000058 000007 00 0 0 1
|
||||
# ELF32-NEXT: [ 8] .shstrtab STRTAB 00000000 00005f 00003b 00 0 0 1
|
||||
# ELF32-NEXT:Key to Flags:
|
||||
# ELF32-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
|
||||
# ELF32-NEXT: L (link order), O (extra OS processing required), G (group), T (TLS),
|
||||
|
@ -26,11 +27,11 @@
|
|||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS32
|
||||
Class: ELFCLASS[[BITS=64]]
|
||||
Data: ELFDATA2LSB
|
||||
OSABI: ELFOSABI_GNU
|
||||
Type: ET_REL
|
||||
Machine: EM_386
|
||||
Machine: [[MACHINE=EM_NONE]]
|
||||
Sections:
|
||||
- Name: .text
|
||||
Type: SHT_PROGBITS
|
||||
|
@ -44,6 +45,13 @@ Sections:
|
|||
EntSize: 0x0000000000000008
|
||||
Info: .text
|
||||
Relocations:
|
||||
- Name: .rela.text
|
||||
Type: SHT_RELA
|
||||
Link: .symtab
|
||||
AddressAlign: 0x0000000000000008
|
||||
EntSize: 0x0000000000000018
|
||||
Info: .text
|
||||
Relocations:
|
||||
- Name: .data
|
||||
Type: SHT_PROGBITS
|
||||
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
||||
|
@ -61,7 +69,7 @@ Symbols:
|
|||
## For an EM_X86_64 target we print "l" for the SHF_X86_64_LARGE section flag.
|
||||
## Check we mention it in the flag key.
|
||||
|
||||
# RUN: yaml2obj --docnum=2 %s -o %t-x64.o
|
||||
# RUN: yaml2obj -DMACHINE=EM_X86_64 %s -o %t-x64.o
|
||||
# RUN: llvm-readelf -S %t-x64.o | FileCheck %s --check-prefix=ELF64 --strict-whitespace --match-full-lines
|
||||
|
||||
## Check that --wide is the same as -W and ignored and also
|
||||
|
@ -72,62 +80,29 @@ Symbols:
|
|||
# RUN: | FileCheck %s --check-prefix=ELF64
|
||||
# RUN: llvm-readelf -W -S %t-x64.o | FileCheck %s --check-prefix=ELF64
|
||||
|
||||
# ELF64:There are 8 section headers, starting at offset 0xb0:
|
||||
# ELF64:There are 9 section headers, starting at offset 0xc0:
|
||||
# ELF64-EMPTY:
|
||||
# ELF64-NEXT:Section Headers:
|
||||
# ELF64-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al
|
||||
# ELF64-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0
|
||||
# ELF64-NEXT: [ 1] .text PROGBITS 0000000000000000 000040 000001 00 AX 0 0 4
|
||||
# ELF64-NEXT: [ 2] .rela.text RELA 0000000000000000 000048 000000 18 5 1 8
|
||||
# ELF64-NEXT: [ 3] .data PROGBITS 0000000000000000 000048 000000 00 WA 0 0 4
|
||||
# ELF64-NEXT: [ 4] .bss NOBITS 0000000000000000 000048 000000 00 WA 0 0 4
|
||||
# ELF64-NEXT: [ 5] .symtab SYMTAB 0000000000000000 000048 000030 18 6 2 8
|
||||
# ELF64-NEXT: [ 6] .strtab STRTAB 0000000000000000 000078 000007 00 0 0 1
|
||||
# ELF64-NEXT: [ 7] .shstrtab STRTAB 0000000000000000 00007f 000031 00 0 0 1
|
||||
# ELF64-NEXT: [ 2] .rel.text REL 0000000000000000 000044 000000 08 6 1 4
|
||||
# ELF64-NEXT: [ 3] .rela.text RELA 0000000000000000 000048 000000 18 6 1 8
|
||||
# ELF64-NEXT: [ 4] .data PROGBITS 0000000000000000 000048 000000 00 WA 0 0 4
|
||||
# ELF64-NEXT: [ 5] .bss NOBITS 0000000000000000 000048 000000 00 WA 0 0 4
|
||||
# ELF64-NEXT: [ 6] .symtab SYMTAB 0000000000000000 000048 000030 18 7 2 8
|
||||
# ELF64-NEXT: [ 7] .strtab STRTAB 0000000000000000 000078 000007 00 0 0 1
|
||||
# ELF64-NEXT: [ 8] .shstrtab STRTAB 0000000000000000 00007f 00003b 00 0 0 1
|
||||
# ELF64-NEXT:Key to Flags:
|
||||
# ELF64-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
|
||||
# ELF64-NEXT: L (link order), O (extra OS processing required), G (group), T (TLS),
|
||||
# ELF64-NEXT: C (compressed), x (unknown), o (OS specific), E (exclude),
|
||||
# ELF64-NEXT: l (large), p (processor specific)
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
OSABI: ELFOSABI_GNU
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .text
|
||||
Type: SHT_PROGBITS
|
||||
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
||||
AddressAlign: 0x0000000000000004
|
||||
Content: 00
|
||||
- Name: .rela.text
|
||||
Type: SHT_RELA
|
||||
Link: .symtab
|
||||
AddressAlign: 0x0000000000000008
|
||||
EntSize: 0x0000000000000018
|
||||
Info: .text
|
||||
Relocations:
|
||||
- Name: .data
|
||||
Type: SHT_PROGBITS
|
||||
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
||||
AddressAlign: 0x0000000000000004
|
||||
Content: ''
|
||||
- Name: .bss
|
||||
Type: SHT_NOBITS
|
||||
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
||||
AddressAlign: 0x0000000000000004
|
||||
Symbols:
|
||||
- Name: .text
|
||||
Type: STT_SECTION
|
||||
Section: .text
|
||||
|
||||
## For an EM_ARM target we print "y" for the SHF_ARM_PURECODE section flag.
|
||||
## Check we mention it in the flag key.
|
||||
|
||||
# RUN: yaml2obj --docnum=3 %s -o %t-arm.o
|
||||
# RUN: yaml2obj -DMACHINE=EM_ARM %s -o %t-arm.o
|
||||
# RUN: llvm-readelf -S %t-arm.o | FileCheck %s --check-prefix=ARM --strict-whitespace --match-full-lines
|
||||
|
||||
# ARM:Key to Flags:
|
||||
|
@ -135,11 +110,3 @@ Symbols:
|
|||
# ARM-NEXT: L (link order), O (extra OS processing required), G (group), T (TLS),
|
||||
# ARM-NEXT: C (compressed), x (unknown), o (OS specific), E (exclude),
|
||||
# ARM-NEXT: y (purecode), p (processor specific)
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_ARM
|
||||
Sections: []
|
||||
|
|
|
@ -7,36 +7,30 @@
|
|||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
Entry: 0x0000000000201000
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .gnu.version
|
||||
Type: SHT_GNU_versym
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Address: 0x0000000000200210
|
||||
Link: .dynsym
|
||||
AddressAlign: 0x0000000000000002
|
||||
EntSize: 0x0000000000000002
|
||||
Entries: [ 0, 0x8003 ]
|
||||
- Name: .gnu.version_r
|
||||
Type: SHT_GNU_verneed
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Address: 0x0000000000200250
|
||||
Link: .dynstr
|
||||
AddressAlign: 0x0000000000000004
|
||||
Info: 0x0000000000000001
|
||||
- Name: .gnu.version
|
||||
Type: SHT_GNU_versym
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Address: 0x0000000000200210
|
||||
Link: .dynsym
|
||||
Entries: [ 0, 0x8003 ]
|
||||
- Name: .gnu.version_r
|
||||
Type: SHT_GNU_verneed
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Link: .dynstr
|
||||
Info: 0x0000000000000001
|
||||
Dependencies:
|
||||
- Version: 1
|
||||
File: somefile
|
||||
- Version: 1
|
||||
File: somefile
|
||||
Entries:
|
||||
- Name: hiddensym
|
||||
Hash: 1234
|
||||
Flags: 0
|
||||
Other: 3
|
||||
- Name: hiddensym
|
||||
Hash: 1234
|
||||
Flags: 0
|
||||
Other: 3
|
||||
DynamicSymbols:
|
||||
- Name: h
|
||||
Binding: STB_GLOBAL
|
||||
...
|
||||
- Name: h
|
||||
Binding: STB_GLOBAL
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
# Check merged args produce identical output to when not merged.
|
||||
RUN: llvm-readelf -aeWhSrnudlVgIs %p/Inputs/trivial.obj.elf-i386 > %t.merged
|
||||
RUN: llvm-readelf -a -e -W -h -S -r -n -u -d -l -V -g -I -s %p/Inputs/trivial.obj.elf-i386 > %t.not-merged
|
||||
RUN: cmp %t.merged %t.not-merged
|
||||
RUN: FileCheck %s --input-file %t.merged
|
||||
## Check merged args produce identical output to when not merged.
|
||||
# RUN: llvm-readelf -aeWhSrnudlVgIs %p/Inputs/trivial.obj.elf-i386 > %t.merged
|
||||
# RUN: llvm-readelf -a -e -W -h -S -r -n -u -d -l -V -g -I -s %p/Inputs/trivial.obj.elf-i386 > %t.not-merged
|
||||
# RUN: cmp %t.merged %t.not-merged
|
||||
# RUN: FileCheck %s --input-file %t.merged
|
||||
|
||||
# llvm-readobj does not support merged args, because it also supports some old
|
||||
# flags (-st, -sd, etc.), and it would be confusing if only some merged args
|
||||
# were supported.
|
||||
RUN: not llvm-readobj -aeWhSrnudlVgIs %p/Inputs/trivial.obj.elf-i386 2>&1 | FileCheck %s --check-prefix=UNKNOWN
|
||||
## llvm-readobj does not support merged args, because it also supports some old
|
||||
## flags (-st, -sd, etc.), and it would be confusing if only some merged args
|
||||
## were supported.
|
||||
# RUN: not llvm-readobj -aeWhSrnudlVgIs %p/Inputs/trivial.obj.elf-i386 2>&1 | FileCheck %s --check-prefix=UNKNOWN
|
||||
|
||||
CHECK-NOT: Unknown command line argument
|
||||
UNKNOWN: for the --section-headers option: may only occur zero or one times!
|
||||
# CHECK-NOT: Unknown command line argument
|
||||
# UNKNOWN: for the --section-headers option: may only occur zero or one times!
|
||||
|
|
|
@ -3,43 +3,43 @@
|
|||
# address as the .got. got-over.exe.elf-mips has zero-sized .data
|
||||
# section at the same offset .got section.
|
||||
|
||||
RUN: llvm-readobj -A %p/Inputs/got-over.exe.elf-mips | FileCheck %s
|
||||
# RUN: llvm-readobj -A %p/Inputs/got-over.exe.elf-mips | FileCheck %s
|
||||
|
||||
GOT-OBJ: Cannot find PLTGOT dynamic table tag.
|
||||
# GOT-OBJ: Cannot find PLTGOT dynamic table tag.
|
||||
|
||||
CHECK: Primary GOT {
|
||||
CHECK-NEXT: Canonical gp value: 0x418270
|
||||
CHECK-NEXT: Reserved entries [
|
||||
CHECK-NEXT: Entry {
|
||||
CHECK-NEXT: Address: 0x410280
|
||||
CHECK-NEXT: Access: -32752
|
||||
CHECK-NEXT: Initial: 0x0
|
||||
CHECK-NEXT: Purpose: Lazy resolver
|
||||
CHECK-NEXT: }
|
||||
CHECK-NEXT: Entry {
|
||||
CHECK-NEXT: Address: 0x410284
|
||||
CHECK-NEXT: Access: -32748
|
||||
CHECK-NEXT: Initial: 0x80000000
|
||||
CHECK-NEXT: Purpose: Module pointer (GNU extension)
|
||||
CHECK-NEXT: }
|
||||
CHECK-NEXT: ]
|
||||
CHECK-NEXT: Local entries [
|
||||
CHECK-NEXT: Entry {
|
||||
CHECK-NEXT: Address: 0x410288
|
||||
CHECK-NEXT: Access: -32744
|
||||
CHECK-NEXT: Initial: 0x4001B8
|
||||
CHECK-NEXT: }
|
||||
CHECK-NEXT: ]
|
||||
CHECK-NEXT: Global entries [
|
||||
CHECK-NEXT: Entry {
|
||||
CHECK-NEXT: Address: 0x41028C
|
||||
CHECK-NEXT: Access: -32740
|
||||
CHECK-NEXT: Initial: 0x0
|
||||
CHECK-NEXT: Value: 0x0
|
||||
CHECK-NEXT: Type: None
|
||||
CHECK-NEXT: Section: Undefined
|
||||
CHECK-NEXT: Name: _foo
|
||||
CHECK-NEXT: }
|
||||
CHECK-NEXT: ]
|
||||
CHECK-NEXT: Number of TLS and multi-GOT entries: 0
|
||||
CHECK-NEXT: }
|
||||
# CHECK: Primary GOT {
|
||||
# CHECK-NEXT: Canonical gp value: 0x418270
|
||||
# CHECK-NEXT: Reserved entries [
|
||||
# CHECK-NEXT: Entry {
|
||||
# CHECK-NEXT: Address: 0x410280
|
||||
# CHECK-NEXT: Access: -32752
|
||||
# CHECK-NEXT: Initial: 0x0
|
||||
# CHECK-NEXT: Purpose: Lazy resolver
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Entry {
|
||||
# CHECK-NEXT: Address: 0x410284
|
||||
# CHECK-NEXT: Access: -32748
|
||||
# CHECK-NEXT: Initial: 0x80000000
|
||||
# CHECK-NEXT: Purpose: Module pointer (GNU extension)
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Local entries [
|
||||
# CHECK-NEXT: Entry {
|
||||
# CHECK-NEXT: Address: 0x410288
|
||||
# CHECK-NEXT: Access: -32744
|
||||
# CHECK-NEXT: Initial: 0x4001B8
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Global entries [
|
||||
# CHECK-NEXT: Entry {
|
||||
# CHECK-NEXT: Address: 0x41028C
|
||||
# CHECK-NEXT: Access: -32740
|
||||
# CHECK-NEXT: Initial: 0x0
|
||||
# CHECK-NEXT: Value: 0x0
|
||||
# CHECK-NEXT: Type: None
|
||||
# CHECK-NEXT: Section: Undefined
|
||||
# CHECK-NEXT: Name: _foo
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Number of TLS and multi-GOT entries: 0
|
||||
# CHECK-NEXT: }
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
# Check DT_MIPS_OPTIONS .dynamic section tag reading
|
||||
## Check DT_MIPS_OPTIONS .dynamic section tag reading
|
||||
|
||||
RUN: llvm-readobj --dynamic-table %p/Inputs/mips-options.elf-mips64el | \
|
||||
RUN: FileCheck %s
|
||||
# RUN: llvm-readobj --dynamic-table %p/Inputs/mips-options.elf-mips64el | \
|
||||
# RUN: FileCheck %s
|
||||
|
||||
CHECK: DynamicSection [ (14 entries)
|
||||
CHECK-NEXT: Tag Type Name/Value
|
||||
CHECK-NEXT: 0x0000000000000004 HASH 0x158
|
||||
CHECK-NEXT: 0x0000000000000005 STRTAB 0x1C0
|
||||
CHECK-NEXT: 0x0000000000000006 SYMTAB 0x178
|
||||
CHECK-NEXT: 0x000000000000000A STRSZ 7 (bytes)
|
||||
CHECK-NEXT: 0x000000000000000B SYMENT 24 (bytes)
|
||||
CHECK-NEXT: 0x0000000070000001 MIPS_RLD_VERSION 1
|
||||
CHECK-NEXT: 0x0000000070000005 MIPS_FLAGS NOTPOT
|
||||
CHECK-NEXT: 0x0000000070000006 MIPS_BASE_ADDRESS 0x0
|
||||
CHECK-NEXT: 0x000000007000000A MIPS_LOCAL_GOTNO 2
|
||||
CHECK-NEXT: 0x0000000070000011 MIPS_SYMTABNO 3
|
||||
CHECK-NEXT: 0x0000000070000013 MIPS_GOTSYM 0x3
|
||||
CHECK-NEXT: 0x0000000000000003 PLTGOT 0x2000
|
||||
CHECK-NEXT: 0x0000000070000029 MIPS_OPTIONS 0x1000
|
||||
CHECK-NEXT: 0x0000000000000000 NULL 0x0
|
||||
CHECK-NEXT: ]
|
||||
# CHECK: DynamicSection [ (14 entries)
|
||||
# CHECK-NEXT: Tag Type Name/Value
|
||||
# CHECK-NEXT: 0x0000000000000004 HASH 0x158
|
||||
# CHECK-NEXT: 0x0000000000000005 STRTAB 0x1C0
|
||||
# CHECK-NEXT: 0x0000000000000006 SYMTAB 0x178
|
||||
# CHECK-NEXT: 0x000000000000000A STRSZ 7 (bytes)
|
||||
# CHECK-NEXT: 0x000000000000000B SYMENT 24 (bytes)
|
||||
# CHECK-NEXT: 0x0000000070000001 MIPS_RLD_VERSION 1
|
||||
# CHECK-NEXT: 0x0000000070000005 MIPS_FLAGS NOTPOT
|
||||
# CHECK-NEXT: 0x0000000070000006 MIPS_BASE_ADDRESS 0x0
|
||||
# CHECK-NEXT: 0x000000007000000A MIPS_LOCAL_GOTNO 2
|
||||
# CHECK-NEXT: 0x0000000070000011 MIPS_SYMTABNO 3
|
||||
# CHECK-NEXT: 0x0000000070000013 MIPS_GOTSYM 0x3
|
||||
# CHECK-NEXT: 0x0000000000000003 PLTGOT 0x2000
|
||||
# CHECK-NEXT: 0x0000000070000029 MIPS_OPTIONS 0x1000
|
||||
# CHECK-NEXT: 0x0000000000000000 NULL 0x0
|
||||
# CHECK-NEXT: ]
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
# Check DT_MIPS_RLD_MAP_REL .dynamic section tag reading
|
||||
## Check DT_MIPS_RLD_MAP_REL .dynamic section tag reading
|
||||
|
||||
RUN: llvm-readobj --dynamic-table %p/Inputs/mips-rld-map-rel.elf-mipsel | \
|
||||
RUN: FileCheck %s
|
||||
# RUN: llvm-readobj --dynamic-table %p/Inputs/mips-rld-map-rel.elf-mipsel | \
|
||||
# RUN: FileCheck %s
|
||||
|
||||
CHECK: DynamicSection [ (16 entries)
|
||||
CHECK-NEXT: Tag Type Name/Value
|
||||
CHECK-NEXT: 0x00000004 HASH 0x220
|
||||
CHECK-NEXT: 0x00000005 STRTAB 0x2FC
|
||||
CHECK-NEXT: 0x00000006 SYMTAB 0x25C
|
||||
CHECK-NEXT: 0x0000000A STRSZ 72 (bytes)
|
||||
CHECK-NEXT: 0x0000000B SYMENT 16 (bytes)
|
||||
CHECK-NEXT: 0x70000035 MIPS_RLD_MAP_REL 0x101E0
|
||||
CHECK-NEXT: 0x00000015 DEBUG 0x0
|
||||
CHECK-NEXT: 0x00000003 PLTGOT 0x10390
|
||||
CHECK-NEXT: 0x70000001 MIPS_RLD_VERSION 1
|
||||
CHECK-NEXT: 0x70000005 MIPS_FLAGS NOTPOT
|
||||
CHECK-NEXT: 0x70000006 MIPS_BASE_ADDRESS 0x0
|
||||
CHECK-NEXT: 0x7000000A MIPS_LOCAL_GOTNO 2
|
||||
CHECK-NEXT: 0x70000011 MIPS_SYMTABNO 10
|
||||
CHECK-NEXT: 0x70000012 MIPS_UNREFEXTNO 15
|
||||
CHECK-NEXT: 0x70000013 MIPS_GOTSYM 0xA
|
||||
CHECK-NEXT: 0x00000000 NULL 0x0
|
||||
CHECK-NEXT: ]
|
||||
# CHECK: DynamicSection [ (16 entries)
|
||||
# CHECK-NEXT: Tag Type Name/Value
|
||||
# CHECK-NEXT: 0x00000004 HASH 0x220
|
||||
# CHECK-NEXT: 0x00000005 STRTAB 0x2FC
|
||||
# CHECK-NEXT: 0x00000006 SYMTAB 0x25C
|
||||
# CHECK-NEXT: 0x0000000A STRSZ 72 (bytes)
|
||||
# CHECK-NEXT: 0x0000000B SYMENT 16 (bytes)
|
||||
# CHECK-NEXT: 0x70000035 MIPS_RLD_MAP_REL 0x101E0
|
||||
# CHECK-NEXT: 0x00000015 DEBUG 0x0
|
||||
# CHECK-NEXT: 0x00000003 PLTGOT 0x10390
|
||||
# CHECK-NEXT: 0x70000001 MIPS_RLD_VERSION 1
|
||||
# CHECK-NEXT: 0x70000005 MIPS_FLAGS NOTPOT
|
||||
# CHECK-NEXT: 0x70000006 MIPS_BASE_ADDRESS 0x0
|
||||
# CHECK-NEXT: 0x7000000A MIPS_LOCAL_GOTNO 2
|
||||
# CHECK-NEXT: 0x70000011 MIPS_SYMTABNO 10
|
||||
# CHECK-NEXT: 0x70000012 MIPS_UNREFEXTNO 15
|
||||
# CHECK-NEXT: 0x70000013 MIPS_GOTSYM 0xA
|
||||
# CHECK-NEXT: 0x00000000 NULL 0x0
|
||||
# CHECK-NEXT: ]
|
||||
|
|
|
@ -46,7 +46,7 @@ Sections:
|
|||
- Tag: DT_NEEDED
|
||||
Value: 0x1111111
|
||||
- Tag: DT_STRSZ
|
||||
Value: 0xD
|
||||
Value: [[SIZE=0xD]]
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0
|
||||
ProgramHeaders:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
## Check the behavior on ET_EXEC input.
|
||||
|
||||
# RUN: yaml2obj --docnum=1 %s -o %t.exe
|
||||
# RUN: yaml2obj -DTYPE=ET_EXEC %s -o %t.exe
|
||||
# RUN: llvm-readobj %t.exe | FileCheck %s -DFILE=%t.exe --check-prefix LLVM
|
||||
# RUN: llvm-readelf %t.exe | FileCheck %s -DFILE=%t.exe --check-prefix GNU --allow-empty
|
||||
|
||||
|
@ -20,31 +20,17 @@
|
|||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Type: [[TYPE]]
|
||||
Machine: EM_X86_64
|
||||
|
||||
## Check the behavior on ET_REL input.
|
||||
|
||||
# RUN: yaml2obj --docnum=2 %s -o %t.o
|
||||
# RUN: yaml2obj -DTYPE=ET_REL %s -o %t.o
|
||||
# RUN: llvm-readobj %t.o | FileCheck %s -DFILE=%t.o --check-prefix LLVM
|
||||
# RUN: llvm-readelf %t.o | FileCheck %s -DFILE=%t.o --check-prefix GNU --allow-empty
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
|
||||
## Check the behavior on ET_DYN input.
|
||||
|
||||
# RUN: yaml2obj --docnum=3 %s -o %t.so
|
||||
# RUN: yaml2obj -DTYPE=ET_DYN %s -o %t.so
|
||||
# RUN: llvm-readobj %t.so | FileCheck %s -DFILE=%t.so --check-prefix LLVM
|
||||
# RUN: llvm-readelf %t.so | FileCheck %s -DFILE=%t.so --check-prefix GNU --allow-empty
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
|
|
|
@ -27,25 +27,21 @@
|
|||
# elf-packed-relocs1.s
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Entry: 0x0000000000001000
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .rela.dyn
|
||||
Type: SHT_ANDROID_RELA
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Address: 0x00000000000001C8
|
||||
Link: .symtab
|
||||
AddressAlign: 0x0000000000000001
|
||||
Content: 41505332088020020108800280010202088180808010818080802002080181808080100802818080802004020C7E048180808010088180808020
|
||||
- Name: .rela.dyn
|
||||
Type: SHT_ANDROID_RELA
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Link: .symtab
|
||||
Content: 41505332088020020108800280010202088180808010818080802002080181808080100802818080802004020C7E048180808010088180808020
|
||||
Symbols:
|
||||
- Name: sym1
|
||||
Binding: STB_GLOBAL
|
||||
- Name: sym2
|
||||
Binding: STB_GLOBAL
|
||||
...
|
||||
- Name: sym1
|
||||
Binding: STB_GLOBAL
|
||||
- Name: sym2
|
||||
Binding: STB_GLOBAL
|
||||
|
||||
# RUN: yaml2obj --docnum=2 %s | llvm-readobj --relocations - | FileCheck --check-prefix=LLVM2 %s
|
||||
# LLVM2: Section (1) .rel.dyn {
|
||||
|
@ -77,25 +73,21 @@ Symbols:
|
|||
# elf-packed-relocs2.s
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS32
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_386
|
||||
Entry: 0x0000000000001000
|
||||
Class: ELFCLASS32
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_386
|
||||
Sections:
|
||||
- Name: .rel.dyn
|
||||
Type: SHT_ANDROID_REL
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Address: 0x00000000000001C8
|
||||
Link: .symtab
|
||||
AddressAlign: 0x0000000000000001
|
||||
Content: 415053320A80200202088102830408037C08
|
||||
- Name: .rel.dyn
|
||||
Type: SHT_ANDROID_REL
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Link: .symtab
|
||||
Content: 415053320A80200202088102830408037C08
|
||||
Symbols:
|
||||
- Name: sym1
|
||||
Binding: STB_GLOBAL
|
||||
- Name: sym2
|
||||
Binding: STB_GLOBAL
|
||||
...
|
||||
- Name: sym1
|
||||
Binding: STB_GLOBAL
|
||||
- Name: sym2
|
||||
Binding: STB_GLOBAL
|
||||
|
||||
# RUN: yaml2obj --docnum=3 %s | llvm-readobj --relocations - | FileCheck --check-prefix=LLVM3 %s
|
||||
#
|
||||
|
@ -120,22 +112,18 @@ Symbols:
|
|||
# elf-packed-relocs3.s
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Entry: 0x0000000000001000
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .rela.dyn
|
||||
Type: SHT_ANDROID_RELA
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Address: 0x00000000000001C8
|
||||
Link: .symtab
|
||||
AddressAlign: 0x0000000000000001
|
||||
Content: 415053320680200208800208008001080802008001818080801008818080802002080881808080100008818080802008
|
||||
- Name: .rela.dyn
|
||||
Type: SHT_ANDROID_RELA
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Link: .symtab
|
||||
Content: 415053320680200208800208008001080802008001818080801008818080802002080881808080100008818080802008
|
||||
Symbols:
|
||||
- Name: sym1
|
||||
Binding: STB_GLOBAL
|
||||
- Name: sym2
|
||||
Binding: STB_GLOBAL
|
||||
...
|
||||
- Name: sym1
|
||||
Binding: STB_GLOBAL
|
||||
- Name: sym2
|
||||
Binding: STB_GLOBAL
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
# RUN: llvm-readelf --program-headers %t | FileCheck %s --check-prefix=GNU
|
||||
# RUN: llvm-readobj --program-headers %t | FileCheck %s --check-prefix=LLVM
|
||||
|
||||
## TODO: merge this test with program-headers.test.
|
||||
|
||||
# GNU: {{ }}GNU_PROPERTY{{ }}
|
||||
|
||||
# LLVM: ProgramHeader {
|
||||
|
|
|
@ -21,88 +21,69 @@
|
|||
# LLVM-NEXT: ]
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
Entry: 0x0000000000000000
|
||||
Sections:
|
||||
- Name: .gnu.version
|
||||
Type: SHT_GNU_versym
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Link: .dynsym
|
||||
AddressAlign: 0x0000000000000002
|
||||
EntSize: 0x0000000000000002
|
||||
Entries: [ 0, 2, 3, 4, 2 ]
|
||||
- Name: .gnu.version_r
|
||||
Type: SHT_GNU_verneed
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Link: .dynstr
|
||||
AddressAlign: 0x0000000000000004
|
||||
Info: 0x0000000000000002
|
||||
Dependencies:
|
||||
- Version: 1
|
||||
File: verneed1.so.0
|
||||
Entries:
|
||||
- Name: v2
|
||||
Hash: 1938
|
||||
Flags: 0
|
||||
Other: 3
|
||||
- Name: v3
|
||||
Hash: 1939
|
||||
Flags: 0
|
||||
Other: 2
|
||||
- Version: 1
|
||||
File: verneed2.so.0
|
||||
Entries:
|
||||
- Name: v1
|
||||
Hash: 1937
|
||||
Flags: 0
|
||||
Other: 4
|
||||
- Name: .rela.plt
|
||||
Type: SHT_RELA
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Info: 0
|
||||
Link: .dynsym
|
||||
AddressAlign: 0x0000000000000008
|
||||
EntSize: 0x0000000000000018
|
||||
Relocations:
|
||||
- Offset: 0x0000000000013018
|
||||
Symbol: f1
|
||||
Type: R_X86_64_JUMP_SLOT
|
||||
- Offset: 0x0000000000013020
|
||||
Symbol: f2
|
||||
Type: R_X86_64_JUMP_SLOT
|
||||
- Offset: 0x0000000000013028
|
||||
Symbol: g1
|
||||
Type: R_X86_64_JUMP_SLOT
|
||||
- Offset: 0x0000000000013040
|
||||
Symbol: _Z2f1v
|
||||
Type: R_X86_64_JUMP_SLOT
|
||||
- Offset: 0x0000000000013058
|
||||
Symbol: f3
|
||||
Type: R_X86_64_JUMP_SLOT
|
||||
Symbols:
|
||||
- Name: f1
|
||||
Binding: STB_GLOBAL
|
||||
- Name: f2
|
||||
Binding: STB_GLOBAL
|
||||
- Name: g1
|
||||
Binding: STB_GLOBAL
|
||||
- Name: _Z2f1v
|
||||
Binding: STB_GLOBAL
|
||||
- Name: f3
|
||||
Binding: STB_GLOBAL
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .gnu.version
|
||||
Type: SHT_GNU_versym
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Entries: [ 0, 2, 3, 4, 2 ]
|
||||
- Name: .gnu.version_r
|
||||
Type: SHT_GNU_verneed
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Link: .dynstr
|
||||
AddressAlign: 0x0000000000000004
|
||||
Info: 0x0000000000000002
|
||||
Dependencies:
|
||||
- Version: 1
|
||||
File: verneed1.so.0
|
||||
Entries:
|
||||
- Name: v2
|
||||
Hash: 1938
|
||||
Flags: 0
|
||||
Other: 3
|
||||
- Name: v3
|
||||
Hash: 1939
|
||||
Flags: 0
|
||||
Other: 2
|
||||
- Version: 1
|
||||
File: verneed2.so.0
|
||||
Entries:
|
||||
- Name: v1
|
||||
Hash: 1937
|
||||
Flags: 0
|
||||
Other: 4
|
||||
- Name: .rela.plt
|
||||
Type: SHT_RELA
|
||||
Flags: [ SHF_ALLOC ]
|
||||
Link: .dynsym
|
||||
Relocations:
|
||||
- Offset: 0x0000000000013018
|
||||
Symbol: f1
|
||||
Type: R_X86_64_JUMP_SLOT
|
||||
- Offset: 0x0000000000013020
|
||||
Symbol: f2
|
||||
Type: R_X86_64_JUMP_SLOT
|
||||
- Offset: 0x0000000000013028
|
||||
Symbol: g1
|
||||
Type: R_X86_64_JUMP_SLOT
|
||||
- Offset: 0x0000000000013040
|
||||
Symbol: _Z2f1v
|
||||
Type: R_X86_64_JUMP_SLOT
|
||||
- Offset: 0x0000000000013058
|
||||
Symbol: f3
|
||||
Type: R_X86_64_JUMP_SLOT
|
||||
DynamicSymbols:
|
||||
- Name: f1
|
||||
Binding: STB_GLOBAL
|
||||
- Name: f2
|
||||
Binding: STB_GLOBAL
|
||||
- Name: g1
|
||||
Binding: STB_GLOBAL
|
||||
- Name: _Z2f1v
|
||||
Binding: STB_GLOBAL
|
||||
- Name: f3
|
||||
Binding: STB_GLOBAL
|
||||
...
|
||||
- Name: f1
|
||||
Binding: STB_GLOBAL
|
||||
- Name: f2
|
||||
Binding: STB_GLOBAL
|
||||
- Name: g1
|
||||
Binding: STB_GLOBAL
|
||||
- Name: _Z2f1v
|
||||
Binding: STB_GLOBAL
|
||||
- Name: f3
|
||||
Binding: STB_GLOBAL
|
||||
|
|
|
@ -136,14 +136,8 @@ FileHeader:
|
|||
Type: ET_REL
|
||||
Machine: EM_AARCH64
|
||||
Sections:
|
||||
- Name: .text
|
||||
Type: SHT_PROGBITS
|
||||
Content: 00
|
||||
- Name: .rela.text
|
||||
Type: SHT_RELA
|
||||
AddressAlign: 0x0000000000000008
|
||||
EntSize: 0x0000000000000018
|
||||
Info: .text
|
||||
- Name: .rela.text
|
||||
Type: SHT_RELA
|
||||
Relocations:
|
||||
- Type: R_AARCH64_NONE
|
||||
- Type: R_AARCH64_ABS64
|
||||
|
|
|
@ -142,16 +142,9 @@ FileHeader:
|
|||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_ARM
|
||||
Flags: [ EF_ARM_EABI_VER5 ]
|
||||
Sections:
|
||||
- Name: .text
|
||||
Type: SHT_PROGBITS
|
||||
Content: 00
|
||||
- Name: .rel.text
|
||||
Type: SHT_REL
|
||||
AddressAlign: 0x0000000000000004
|
||||
EntSize: 0x0000000000000008
|
||||
Info: .text
|
||||
- Name: .rel.text
|
||||
Type: SHT_REL
|
||||
Relocations:
|
||||
- Type: R_ARM_NONE
|
||||
- Type: R_ARM_PC24
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
# LLVM: Type: R_386_IRELATIVE (42)
|
||||
# LLVM: Type: R_386_GOT32X (43)
|
||||
|
||||
# GNU: Relocation section '.rel.text' at offset 0x38 contains 41 entries:
|
||||
# GNU: Relocation section '.rel.text' at offset 0x34 contains 41 entries:
|
||||
# GNU-NEXT: Offset Info Type Sym. Value Symbol's Name
|
||||
# GNU-NEXT: 00000002 00000100 R_386_NONE 00000000 foo
|
||||
# GNU-NEXT: 00000008 00000101 R_386_32 00000000 foo
|
||||
|
@ -93,21 +93,14 @@
|
|||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS32
|
||||
Data: ELFDATA2LSB
|
||||
OSABI: ELFOSABI_GNU
|
||||
Type: ET_REL
|
||||
Machine: EM_386
|
||||
Class: ELFCLASS32
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_386
|
||||
Sections:
|
||||
- Name: .text
|
||||
Type: SHT_PROGBITS
|
||||
Content: 00
|
||||
- Name: .rel.text
|
||||
Type: SHT_REL
|
||||
Link: .symtab
|
||||
AddressAlign: 0x0000000000000004
|
||||
EntSize: 0x0000000000000008
|
||||
Info: .text
|
||||
- Name: .rel.text
|
||||
Type: SHT_REL
|
||||
Link: .symtab
|
||||
Relocations:
|
||||
- Offset: 0x0000000000000002
|
||||
Type: R_386_NONE
|
||||
|
|
|
@ -19,16 +19,8 @@ FileHeader:
|
|||
Type: ET_REL
|
||||
Machine: EM_LANAI
|
||||
Sections:
|
||||
- Name: .text
|
||||
Type: SHT_PROGBITS
|
||||
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
||||
AddressAlign: 0x0000000000000004
|
||||
Content: 00
|
||||
- Name: .rela.text
|
||||
Type: SHT_RELA
|
||||
AddressAlign: 0x0000000000000004
|
||||
EntSize: 0x000000000000000C
|
||||
Info: .text
|
||||
- Name: .rela.text
|
||||
Type: SHT_RELA
|
||||
Relocations:
|
||||
- Type: R_LANAI_NONE
|
||||
- Type: R_LANAI_21
|
||||
|
|
|
@ -61,18 +61,11 @@
|
|||
FileHeader:
|
||||
Class: ELFCLASS32
|
||||
Data: ELFDATA2MSB
|
||||
OSABI: ELFOSABI_GNU
|
||||
Type: ET_REL
|
||||
Machine: EM_MIPS
|
||||
Sections:
|
||||
- Name: .text
|
||||
Type: SHT_PROGBITS
|
||||
Content: 00
|
||||
- Name: .rel.text
|
||||
Type: SHT_REL
|
||||
AddressAlign: 0x0000000000000004
|
||||
EntSize: 0x0000000000000008
|
||||
Info: .text
|
||||
- Name: .rel.text
|
||||
Type: SHT_REL
|
||||
Relocations:
|
||||
- Type: R_MIPS_NONE
|
||||
- Type: R_MIPS_16
|
||||
|
|
|
@ -61,18 +61,11 @@
|
|||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
OSABI: ELFOSABI_GNU
|
||||
Type: ET_REL
|
||||
Machine: EM_MIPS
|
||||
Sections:
|
||||
- Name: .text
|
||||
Type: SHT_PROGBITS
|
||||
Content: 00
|
||||
- Name: .rela.text
|
||||
Type: SHT_RELA
|
||||
AddressAlign: 0x0000000000000008
|
||||
EntSize: 0x0000000000000018
|
||||
Info: .text
|
||||
- Name: .rela.text
|
||||
Type: SHT_RELA
|
||||
Relocations:
|
||||
- Type: R_MIPS_NONE
|
||||
- Type: R_MIPS_16
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
# LLVM: Type: R_X86_64_GOTPCRELX (41)
|
||||
# LLVM: Type: R_X86_64_REX_GOTPCRELX (42)
|
||||
|
||||
# GNU: Relocation section '.rela.text' at offset 0x48 contains 40 entries:
|
||||
# GNU: Relocation section '.rela.text' at offset 0x40 contains 40 entries:
|
||||
# GNU-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend
|
||||
# GNU-NEXT: 0000000000000003 0000000100000000 R_X86_64_NONE 0000000000000000 foo + 0
|
||||
# GNU-NEXT: 000000000000000a 0000000100000001 R_X86_64_64 0000000000000000 foo + 0
|
||||
|
@ -93,19 +93,11 @@
|
|||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
OSABI: ELFOSABI_GNU
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .text
|
||||
Type: SHT_PROGBITS
|
||||
Content: 00
|
||||
- Name: .rela.text
|
||||
Type: SHT_RELA
|
||||
Link: .symtab
|
||||
AddressAlign: 0x0000000000000008
|
||||
EntSize: 0x0000000000000018
|
||||
Info: .text
|
||||
- Name: .rela.text
|
||||
Type: SHT_RELA
|
||||
Relocations:
|
||||
- Offset: 0x0000000000000003
|
||||
Type: R_X86_64_NONE
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
## Check how llvm-readobj prints sections with --sections.
|
||||
## We test the --sections flag for llvm-readelf in the gnu-sections.test.
|
||||
|
||||
# RUN: yaml2obj --docnum=1 %s -o %t64
|
||||
# RUN: yaml2obj %s -o %t64
|
||||
# RUN: llvm-readobj --sections %t64 | FileCheck %s --check-prefixes=ELF,ELF64
|
||||
# RUN: yaml2obj --docnum=2 %s -o %t32
|
||||
# RUN: yaml2obj -DBITS=32 %s -o %t32
|
||||
# RUN: llvm-readobj --sections %t32 | FileCheck %s --check-prefixes=ELF,ELF32
|
||||
|
||||
## Check flag aliases produce identical output.
|
||||
|
@ -89,27 +89,10 @@
|
|||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Class: ELFCLASS[[BITS=64]]
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .foo
|
||||
Type: SHT_PROGBITS
|
||||
Info: 1
|
||||
Address: 0x2
|
||||
Size: 0x3
|
||||
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
||||
Link: 4
|
||||
AddressAlign: 5
|
||||
EntSize: 6
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS32
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_386
|
||||
Machine: EM_NONE
|
||||
Sections:
|
||||
- Name: .foo
|
||||
Type: SHT_PROGBITS
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Show that llvm-readobj can handle all standard ELF types.
|
||||
# RUN: yaml2obj %s --docnum=1 -o %t.none
|
||||
# RUN: yaml2obj %s -DTYPE=ET_NONE -o %t.none
|
||||
# RUN: llvm-readobj --file-headers %t.none | FileCheck %s --check-prefix=LLVM-NONE
|
||||
# RUN: llvm-readelf --file-headers %t.none | FileCheck %s --check-prefix=GNU-NONE
|
||||
|
||||
|
@ -10,107 +10,57 @@
|
|||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_NONE
|
||||
Type: [[TYPE]]
|
||||
Machine: EM_X86_64
|
||||
|
||||
# RUN: yaml2obj %s --docnum=2 -o %t.rel
|
||||
# RUN: yaml2obj %s -DTYPE=ET_REL -o %t.rel
|
||||
# RUN: llvm-readobj --file-headers %t.rel | FileCheck %s --check-prefix=LLVM-REL
|
||||
# RUN: llvm-readelf --file-headers %t.rel | FileCheck %s --check-prefix=GNU-REL
|
||||
|
||||
# LLVM-REL: Type: Relocatable (0x1)
|
||||
# GNU-REL: Type: REL (Relocatable file)
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
|
||||
|
||||
# RUN: yaml2obj %s --docnum=3 -o %t.exec
|
||||
# RUN: yaml2obj %s -DTYPE=ET_EXEC -o %t.exec
|
||||
# RUN: llvm-readobj --file-headers %t.exec | FileCheck %s --check-prefix=LLVM-EXEC
|
||||
# RUN: llvm-readelf --file-headers %t.exec | FileCheck %s --check-prefix=GNU-EXEC
|
||||
|
||||
# LLVM-EXEC: Type: Executable (0x2)
|
||||
# GNU-EXEC: Type: EXEC (Executable file)
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
|
||||
# RUN: yaml2obj %s --docnum=4 -o %t.so
|
||||
# RUN: yaml2obj %s -DTYPE=ET_DYN -o %t.so
|
||||
# RUN: llvm-readobj --file-headers %t.so | FileCheck %s --check-prefix=LLVM-SO
|
||||
# RUN: llvm-readelf --file-headers %t.so | FileCheck %s --check-prefix=GNU-SO
|
||||
|
||||
# LLVM-SO: Type: SharedObject (0x3)
|
||||
# GNU-SO: Type: DYN (Shared object file)
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
|
||||
# RUN: yaml2obj %s --docnum=5 -o %t.core
|
||||
# RUN: yaml2obj %s -DTYPE=ET_CORE -o %t.core
|
||||
# RUN: llvm-readobj --file-headers %t.core | FileCheck %s --check-prefix=LLVM-CORE
|
||||
# RUN: llvm-readelf --file-headers %t.core | FileCheck %s --check-prefix=GNU-CORE
|
||||
|
||||
# LLVM-CORE: Type: Core (0x4)
|
||||
# GNU-CORE: Type: CORE (Core file)
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_CORE
|
||||
Machine: EM_X86_64
|
||||
|
||||
# Show that llvm-readobj can handle an unknown ELF type.
|
||||
# RUN: yaml2obj %s --docnum=6 -o %t.unknown
|
||||
# RUN: yaml2obj %s -DTYPE=0x42 -o %t.unknown
|
||||
# RUN: llvm-readobj --file-headers %t.unknown | FileCheck %s --check-prefix=LLVM-UNKNOWN
|
||||
# RUN: llvm-readelf --file-headers %t.unknown | FileCheck %s --check-prefix=GNU-UNKNOWN
|
||||
|
||||
# LLVM-UNKNOWN: Type: 0x42
|
||||
# GNU-UNKNOWN: Type: 42
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: 0x42
|
||||
Machine: EM_X86_64
|
||||
|
||||
# Show that llvm-readobj can handle an unknown OS-specific ELF type.
|
||||
# RUN: yaml2obj %s --docnum=7 -o %t.os
|
||||
# RUN: yaml2obj %s -DTYPE=0xfe00 -o %t.os
|
||||
# RUN: llvm-readobj --file-headers %t.os | FileCheck %s --check-prefix=LLVM-OS
|
||||
# RUN: llvm-readelf --file-headers %t.os | FileCheck %s --check-prefix=GNU-OS
|
||||
|
||||
# LLVM-OS: Type: 0xFE00
|
||||
# GNU-OS: Type: fe00
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: 0xfe00
|
||||
Machine: EM_X86_64
|
||||
|
||||
# Show that llvm-readobj can handle an unknown machine-specific ELF type.
|
||||
# RUN: yaml2obj %s --docnum=8 -o %t.proc
|
||||
# RUN: yaml2obj %s -DTYPE=0xff00 -o %t.proc
|
||||
# RUN: llvm-readobj --file-headers %t.proc | FileCheck %s --check-prefix=LLVM-PROC
|
||||
# RUN: llvm-readelf --file-headers %t.proc | FileCheck %s --check-prefix=GNU-PROC
|
||||
|
||||
# LLVM-PROC: Type: 0xFF00
|
||||
# GNU-PROC: Type: ff00
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: 0xff00
|
||||
Machine: EM_X86_64
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
## Check that we report a warning when sh_link references a non-existent section.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=1 -o %t1
|
||||
# RUN: yaml2obj %s --docnum=1 -DLINK=0xFF -o %t1
|
||||
# RUN: llvm-readobj -V %t1 2>&1 | FileCheck %s --check-prefix=INVALID-LINK-LLVM --implicit-check-not="warning:" -DFILE=%t1
|
||||
# RUN: llvm-readelf -V %t1 2>&1 | FileCheck %s --check-prefix=INVALID-LINK-GNU --implicit-check-not="warning:" -DFILE=%t1
|
||||
|
||||
|
@ -21,34 +21,21 @@ FileHeader:
|
|||
Sections:
|
||||
- Name: .gnu.version_d
|
||||
Type: SHT_GNU_verdef
|
||||
Link: 0xFF
|
||||
Link: [[LINK]]
|
||||
Info: 0x0
|
||||
Entries: []
|
||||
|
||||
## Check that we report a warning when the sh_link field of a SHT_GNU_verdef section references a non-string table section.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=2 -o %t2
|
||||
# RUN: yaml2obj %s --docnum=1 -DLINK=0x0 -o %t2
|
||||
# RUN: llvm-readobj -V %t2 2>&1 | FileCheck %s --check-prefix=INVALID-STRING-TABLE -DFILE=%t2
|
||||
# RUN: llvm-readelf -V %t2 2>&1 | FileCheck %s --check-prefix=INVALID-STRING-TABLE -DFILE=%t2
|
||||
|
||||
# INVALID-STRING-TABLE: warning: '[[FILE]]': invalid string table linked to SHT_GNU_verdef section with index 1: invalid sh_type for string table section [index 0]: expected SHT_STRTAB, but got SHT_NULL
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .gnu.version_d
|
||||
Type: SHT_GNU_verdef
|
||||
Link: 0x0
|
||||
Info: 0x0
|
||||
Entries: []
|
||||
|
||||
## Check that we report a warning when we can't read the content of the SHT_GNU_verdef section.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=3 -o %t3
|
||||
# RUN: yaml2obj %s --docnum=2 -o %t3
|
||||
# RUN: llvm-readobj -V %t3 2>&1 | FileCheck %s --check-prefix=INVALID-DATA -DFILE=%t3
|
||||
# RUN: llvm-readelf -V %t3 2>&1 | FileCheck %s --check-prefix=INVALID-DATA -DFILE=%t3
|
||||
|
||||
|
@ -73,7 +60,7 @@ DynamicSymbols:
|
|||
## Check that we report a warning when a SHT_GNU_verdef section contains a version definition
|
||||
## that goes past the end of the section.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=4 -o %t4
|
||||
# RUN: yaml2obj %s --docnum=3 -o %t4
|
||||
# RUN: llvm-readobj -V %t4 2>&1 | FileCheck %s --check-prefix=DEF-PAST-END -DFILE=%t4
|
||||
# RUN: llvm-readelf -V %t4 2>&1 | FileCheck %s --check-prefix=DEF-PAST-END -DFILE=%t4
|
||||
|
||||
|
@ -104,7 +91,7 @@ DynamicSymbols:
|
|||
## Check that we report a warning when a SHT_GNU_verdef section contains a version definition
|
||||
## that refers to an auxiliary entry that goes past the end of the section.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=5 -o %t5
|
||||
# RUN: yaml2obj %s --docnum=4 -o %t5
|
||||
# RUN: llvm-readobj -V %t5 2>&1 | FileCheck %s --check-prefix=AUX-PAST-END -DFILE=%t5
|
||||
# RUN: llvm-readelf -V %t5 2>&1 | FileCheck %s --check-prefix=AUX-PAST-END -DFILE=%t5
|
||||
|
||||
|
@ -135,7 +122,7 @@ DynamicSymbols:
|
|||
## Check that we can dump a SHT_GNU_verdef section properly even if it contains version names strings
|
||||
## that overrun the linked string table.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=6 -o %t6
|
||||
# RUN: yaml2obj %s --docnum=5 -o %t6
|
||||
# RUN: llvm-readobj -V %t6 2>&1 | FileCheck %s --check-prefix=PAST-STRTAB-END-LLVM --implicit-check-not="warning:" -DFILE=%t6
|
||||
# RUN: llvm-readelf -V %t6 2>&1 | FileCheck %s --check-prefix=PAST-STRTAB-END-GNU --implicit-check-not="warning:" -DFILE=%t6
|
||||
|
||||
|
@ -180,7 +167,7 @@ DynamicSymbols:
|
|||
|
||||
## Check we report a warning when a version definition is not correctly aligned in memory.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=7 -o %t7
|
||||
# RUN: yaml2obj %s --docnum=6 -o %t7
|
||||
# RUN: llvm-readobj -V %t7 2>&1 | FileCheck %s --check-prefix=MISALIGNED-DEF -DFILE=%t7
|
||||
# RUN: llvm-readelf -V %t7 2>&1 | FileCheck %s --check-prefix=MISALIGNED-DEF -DFILE=%t7
|
||||
|
||||
|
@ -211,7 +198,7 @@ DynamicSymbols:
|
|||
|
||||
## Check we report a warning when an auxiliary entry is not correctly aligned in memory.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=8 -o %t8
|
||||
# RUN: yaml2obj %s --docnum=7 -o %t8
|
||||
# RUN: llvm-readobj -V %t8 2>&1 | FileCheck %s --check-prefix=MISALIGNED-AUX -DFILE=%t8
|
||||
# RUN: llvm-readelf -V %t8 2>&1 | FileCheck %s --check-prefix=MISALIGNED-AUX -DFILE=%t8
|
||||
|
||||
|
@ -237,7 +224,7 @@ DynamicSymbols:
|
|||
|
||||
## Check how we handle a version definition entry with an unsupported version.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=9 -o %t9
|
||||
# RUN: yaml2obj %s --docnum=8 -o %t9
|
||||
# RUN: llvm-readobj -V %t9 2>&1 | FileCheck %s --check-prefix=UNSUPPORTED-VERSION -DFILE=%t9
|
||||
# RUN: llvm-readelf -V %t9 2>&1 | FileCheck %s --check-prefix=UNSUPPORTED-VERSION -DFILE=%t9
|
||||
|
||||
|
@ -266,7 +253,7 @@ DynamicSymbols:
|
|||
## Check we report a warning when trying to print version symbols, but SHT_GNU_verdef
|
||||
## is invalid due to any reason.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=10 -o %t10
|
||||
# RUN: yaml2obj %s --docnum=9 -o %t10
|
||||
# RUN: llvm-readobj -V %t10 2>&1 | FileCheck %s --check-prefix=INVALID-VERDEF-LLVM -DFILE=%t10
|
||||
# RUN: llvm-readelf -V %t10 2>&1 | FileCheck %s --check-prefix=INVALID-VERDEF-GNU -DFILE=%t10
|
||||
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
## Check that we report a warning when sh_link references a non-existent section.
|
||||
|
||||
# RUN: yaml2obj --docnum=1 %s -o %t1
|
||||
# RUN: yaml2obj --docnum=1 -DLINK=0xFF %s -o %t1
|
||||
# RUN: llvm-readelf -V %t1 2>&1 | FileCheck -DFILE=%t1 %s --check-prefix=GNU-INVALID-LINK
|
||||
# RUN: llvm-readobj -V %t1 2>&1 | FileCheck -DFILE=%t1 %s --check-prefix=LLVM-INVALID-LINK
|
||||
|
||||
# GNU-INVALID-LINK: Version symbols section '.gnu.version' contains 0 entries:
|
||||
# GNU-INVALID-LINK: Version symbols section '.gnu.version' contains 1 entries:
|
||||
# GNU-INVALID-LINK-NEXT: warning: '[[FILE]]': invalid section linked to SHT_GNU_versym section with index 1: invalid section index: 255
|
||||
# GNU-INVALID-LINK-NEXT: Addr: 0000000000000000 Offset: 0x000040 Link: 255 (<corrupt>)
|
||||
|
||||
|
@ -23,13 +23,13 @@ FileHeader:
|
|||
Sections:
|
||||
- Name: .gnu.version
|
||||
Type: SHT_GNU_versym
|
||||
Link: 0xFF
|
||||
Entries: [ ]
|
||||
Link: [[LINK]]
|
||||
Entries: [ 0 ]
|
||||
|
||||
## Check that we report a warning when the sh_link field of a SHT_GNU_versym section does not reference
|
||||
## a dynamic symbol table section.
|
||||
|
||||
# RUN: yaml2obj --docnum=2 %s -o %t2
|
||||
# RUN: yaml2obj --docnum=1 -DLINK=0x0 %s -o %t2
|
||||
# RUN: llvm-readelf -V %t2 2>&1 | FileCheck -DFILE=%t2 %s --check-prefix=INVALID-SYMBOL-TABLE-GNU
|
||||
# RUN: llvm-readobj -V %t2 2>&1 | FileCheck -DFILE=%t2 %s --check-prefix=INVALID-SYMBOL-TABLE-LLVM
|
||||
|
||||
|
@ -42,23 +42,11 @@ Sections:
|
|||
# INVALID-SYMBOL-TABLE-LLVM-NEXT: warning: '[[FILE]]': invalid section linked to SHT_GNU_versym section with index 1: expected SHT_DYNSYM, but got SHT_NULL
|
||||
# INVALID-SYMBOL-TABLE-LLVM-NEXT: ]
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .gnu.version
|
||||
Type: SHT_GNU_versym
|
||||
Link: 0x0
|
||||
Entries: [ 0 ]
|
||||
|
||||
## Check we report a warning when something is wrong with a string table linked to a symbol table that
|
||||
## is linked with SHT_GNU_versym. In this case we are unable to produce LLVM style output,
|
||||
## but GNU style is fine because it does not need that string table.
|
||||
|
||||
# RUN: yaml2obj --docnum=3 %s -o %t3
|
||||
# RUN: yaml2obj --docnum=2 %s -o %t3
|
||||
# RUN: llvm-readelf -V %t3 2>&1 | FileCheck -DFILE=%t3 %s --check-prefix=INVALID-STRING-TABLE-GNU
|
||||
# RUN: llvm-readobj -V %t3 2>&1 | FileCheck -DFILE=%t3 %s --check-prefix=INVALID-STRING-TABLE-LLVM
|
||||
|
||||
|
@ -88,7 +76,7 @@ DynamicSymbols: []
|
|||
|
||||
## Check we report a warning when a SHT_GNU_versym section is not correctly aligned in memory.
|
||||
|
||||
# RUN: yaml2obj --docnum=4 %s -o %t4
|
||||
# RUN: yaml2obj --docnum=3 %s -o %t4
|
||||
# RUN: llvm-readelf -V %t4 2>&1 | FileCheck -DFILE=%t4 %s --check-prefix=MISALIGNED-GNU
|
||||
# RUN: llvm-readobj -V %t4 2>&1 | FileCheck -DFILE=%t4 %s --check-prefix=MISALIGNED-LLVM
|
||||
|
||||
|
@ -114,7 +102,7 @@ Sections:
|
|||
|
||||
## Check we report a warning when a SHT_GNU_versym section has an invalid entry size.
|
||||
|
||||
# RUN: yaml2obj --docnum=5 %s -o %t5
|
||||
# RUN: yaml2obj --docnum=4 %s -o %t5
|
||||
# RUN: llvm-readelf -V --dyn-syms %t5 2>&1 | FileCheck -DFILE=%t5 %s --check-prefix=INVALID-ENT-SIZE-GNU
|
||||
# RUN: llvm-readobj -V --dyn-syms %t5 2>&1 | FileCheck -DFILE=%t5 %s --check-prefix=INVALID-ENT-SIZE-LLVM
|
||||
|
||||
|
@ -168,7 +156,7 @@ DynamicSymbols:
|
|||
|
||||
## Check we report a warning when the number of version entries does not match the number of symbols in the associated symbol table.
|
||||
|
||||
# RUN: yaml2obj --docnum=6 %s -o %t6
|
||||
# RUN: yaml2obj --docnum=5 %s -o %t6
|
||||
# RUN: llvm-readelf -V %t6 2>&1 | FileCheck -DFILE=%t6 %s --check-prefix=SYMBOLS-NUM-MISMATCH-GNU
|
||||
# RUN: llvm-readobj -V %t6 2>&1 | FileCheck -DFILE=%t6 %s --check-prefix=SYMBOLS-NUM-MISMATCH-LLVM
|
||||
|
||||
|
@ -199,7 +187,7 @@ DynamicSymbols:
|
|||
## Check we can dump a SHT_GNU_versym section when it is linked to a custom dynamic symbol
|
||||
## table that is not called ".dynsym".
|
||||
|
||||
# RUN: yaml2obj --docnum=7 %s -o %t7
|
||||
# RUN: yaml2obj --docnum=6 %s -o %t7
|
||||
# RUN: llvm-readelf -V %t7 2>&1 | FileCheck -DFILE=%t7 %s --check-prefix=CUSTOM-SYMTAB-GNU
|
||||
# RUN: llvm-readobj -V %t7 2>&1 | FileCheck -DFILE=%t7 %s --check-prefix=CUSTOM-SYMTAB-LLVM
|
||||
|
||||
|
@ -238,7 +226,7 @@ DynamicSymbols:
|
|||
## Version index in a SHT_GNU_versym section overflows the version map.
|
||||
## Check we report it when trying to dump dynamic symbols.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=8 -o %t8
|
||||
# RUN: yaml2obj %s --docnum=7 -o %t8
|
||||
# RUN: llvm-readobj --dyn-syms %t8 2>&1 \
|
||||
# RUN: | FileCheck -DFILE=%t8 --implicit-check-not=warning --check-prefix=VERSION-OVERFLOW-LLVM %s
|
||||
# RUN: llvm-readelf --dyn-syms %t8 2>&1 \
|
||||
|
|
Loading…
Reference in New Issue