[llvm-readobj][test] - Cleanup testing of the --sections command line option.
We have the `ELF\sections.test` to test --sections. `ELF\sections.test` uses precompiled objects, it has a bug (does not test -s alias properly). Also, we test machine specific section types in `ELF\machine-specific-section-types.test`, so we probably do not need to test `--sections` for a MIPS object in `ELF\sections.test`. I think it is enough to test ELF32 and ELF64 (we do not test ELF64 in this test). `Object/readobj-shared-object.test` also tests how llvm-readobj handles `--sections`. It is location is wrong, it is not complete, it uses precompiled binaries and it duplicates the `ELF\sections.test` partially (it tests both ELF32 and ELF64). We have `ELF\readelf-s-alias.test` that tests the `-s` alias for `--sections` in llvm-readobj and `-s` as an alias for `--symbols` in llvm-readelf. There is no need to have a separate test for such things. The test for the `-s` alias for `--sections` can be included into the `ELF\sections.test`. And the test for `-s` for llvm-readelf is already included into `ELF\symbols.test`. So, this patch: 1) Removes `Object/readobj-shared-object.test`. 2) Removes `ELF\readelf-s-alias.test` 3) Rewrites the `ELF\sections.test`. 4) Removes ELF/Inputs/trivial.obj.elf-mipsel. Differential revision: https://reviews.llvm.org/D73686
This commit is contained in:
parent
3f6a2f1ec5
commit
cf6037b561
@ -1,109 +0,0 @@
|
||||
# RUN: llvm-readobj --sections \
|
||||
# RUN: %p/Inputs/shared-object-test.elf-i386 | FileCheck %s
|
||||
|
||||
# RUN: llvm-readobj --sections \
|
||||
# RUN: %p/Inputs/shared-object-test.elf-x86-64 | FileCheck %s
|
||||
|
||||
# CHECK: Sections [
|
||||
# CHECK: Section {
|
||||
# CHECK: Name: (0)
|
||||
# CHECK: Type: SHT_NULL
|
||||
# CHECK: Flags [ (0x0)
|
||||
# CHECK: ]
|
||||
# CHECK: }
|
||||
# CHECK: Section {
|
||||
# CHECK: Name: .hash
|
||||
# CHECK: Type: SHT_HASH
|
||||
# CHECK: Flags [ (0x2)
|
||||
# CHECK: SHF_ALLOC
|
||||
# CHECK: ]
|
||||
# CHECK: }
|
||||
# CHECK: Section {
|
||||
# CHECK: Name: .dynsym
|
||||
# CHECK: Type: SHT_DYNSYM
|
||||
# CHECK: Flags [ (0x2)
|
||||
# CHECK: SHF_ALLOC
|
||||
# CHECK: ]
|
||||
# CHECK: }
|
||||
# CHECK: Section {
|
||||
# CHECK: Name: .dynstr
|
||||
# CHECK: Type: SHT_STRTAB
|
||||
# CHECK: Flags [ (0x2)
|
||||
# CHECK: SHF_ALLOC
|
||||
# CHECK: ]
|
||||
# CHECK: }
|
||||
# CHECK: Section {
|
||||
# CHECK: Name: .text
|
||||
# CHECK: Type: SHT_PROGBITS
|
||||
# CHECK: Flags [ (0x6)
|
||||
# CHECK: SHF_ALLOC
|
||||
# CHECK: SHF_EXECINSTR
|
||||
# CHECK: ]
|
||||
# CHECK: }
|
||||
# CHECK: Section {
|
||||
# CHECK: Name: .eh_frame
|
||||
# CHECK: Type: SHT_PROGBITS
|
||||
# CHECK: Flags [ (0x2)
|
||||
# CHECK: SHF_ALLOC
|
||||
# CHECK: ]
|
||||
# CHECK: }
|
||||
# CHECK: Section {
|
||||
# CHECK: Name: .tdata
|
||||
# CHECK: Type: SHT_PROGBITS
|
||||
# CHECK: Flags [ (0x403)
|
||||
# CHECK: SHF_ALLOC
|
||||
# CHECK: SHF_TLS
|
||||
# CHECK: SHF_WRITE
|
||||
# CHECK: ]
|
||||
# CHECK: }
|
||||
# CHECK: Section {
|
||||
# CHECK: Name: .dynamic
|
||||
# CHECK: Type: SHT_DYNAMIC
|
||||
# CHECK: Flags [ (0x3)
|
||||
# CHECK: SHF_ALLOC
|
||||
# CHECK: SHF_WRITE
|
||||
# CHECK: ]
|
||||
# CHECK: }
|
||||
# CHECK: Section {
|
||||
# CHECK: Name: .got.plt
|
||||
# CHECK: Type: SHT_PROGBITS
|
||||
# CHECK: Flags [ (0x3)
|
||||
# CHECK: SHF_ALLOC
|
||||
# CHECK: SHF_WRITE
|
||||
# CHECK: ]
|
||||
# CHECK: }
|
||||
# CHECK: Section {
|
||||
# CHECK: Name: .data
|
||||
# CHECK: Type: SHT_PROGBITS
|
||||
# CHECK: Flags [ (0x3)
|
||||
# CHECK: SHF_ALLOC
|
||||
# CHECK: SHF_WRITE
|
||||
# CHECK: ]
|
||||
# CHECK: }
|
||||
# CHECK: Section {
|
||||
# CHECK: Name: .bss
|
||||
# CHECK: Type: SHT_NOBITS
|
||||
# CHECK: Flags [ (0x3)
|
||||
# CHECK: SHF_ALLOC
|
||||
# CHECK: SHF_WRITE
|
||||
# CHECK: ]
|
||||
# CHECK: }
|
||||
# CHECK: Section {
|
||||
# CHECK: Name: .shstrtab
|
||||
# CHECK: Type: SHT_STRTAB
|
||||
# CHECK: Flags [ (0x0)
|
||||
# CHECK: ]
|
||||
# CHECK: }
|
||||
# CHECK: Section {
|
||||
# CHECK: Name: .symtab
|
||||
# CHECK: Type: SHT_SYMTAB
|
||||
# CHECK: Flags [ (0x0)
|
||||
# CHECK: ]
|
||||
# CHECK: }
|
||||
# CHECK: Section {
|
||||
# CHECK: Name: .strtab
|
||||
# CHECK: Type: SHT_STRTAB
|
||||
# CHECK: Flags [ (0x0)
|
||||
# CHECK: ]
|
||||
# CHECK: }
|
||||
# CHECK: ]
|
||||
Binary file not shown.
@ -1,49 +0,0 @@
|
||||
# In llvm-readobj, -s is an alias for --sections.
|
||||
RUN: llvm-readobj -S %p/Inputs/trivial.obj.elf-i386 \
|
||||
RUN: | FileCheck %s -check-prefix SEC
|
||||
RUN: llvm-readobj --sections %p/Inputs/trivial.obj.elf-i386 \
|
||||
RUN: | FileCheck %s -check-prefix SEC
|
||||
|
||||
# In llvm-readelf, -s is an alias for --symbols.
|
||||
RUN: llvm-readelf -s %p/Inputs/trivial.obj.elf-i386 \
|
||||
RUN: | FileCheck %s -check-prefix SYM
|
||||
RUN: llvm-readelf --symbols %p/Inputs/trivial.obj.elf-i386 \
|
||||
RUN: | FileCheck %s -check-prefix SYM
|
||||
|
||||
SEC: Sections [
|
||||
SEC-NEXT: Section {
|
||||
SEC-NEXT: Index: 0
|
||||
SEC-NEXT: Name: (0)
|
||||
SEC-NEXT: Type: SHT_NULL (0x0)
|
||||
SEC-NEXT: Flags [ (0x0)
|
||||
SEC-NEXT: ]
|
||||
SEC-NEXT: Address: 0x0
|
||||
SEC-NEXT: Offset: 0x0
|
||||
SEC-NEXT: Size: 0
|
||||
SEC-NEXT: Link: 0
|
||||
SEC-NEXT: Info: 0
|
||||
SEC-NEXT: AddressAlignment: 0
|
||||
SEC-NEXT: EntrySize: 0
|
||||
SEC-NEXT: }
|
||||
SEC-NEXT: Section {
|
||||
SEC-NEXT: Index: 1
|
||||
SEC-NEXT: Name: .text (5)
|
||||
SEC-NEXT: Type: SHT_PROGBITS (0x1)
|
||||
SEC-NEXT: Flags [ (0x6)
|
||||
SEC-NEXT: SHF_ALLOC (0x2)
|
||||
SEC-NEXT: SHF_EXECINSTR (0x4)
|
||||
SEC-NEXT: ]
|
||||
SEC-NEXT: Address: 0x0
|
||||
SEC-NEXT: Offset: 0x40
|
||||
SEC-NEXT: Size: 42
|
||||
SEC-NEXT: Link: 0
|
||||
SEC-NEXT: Info: 0
|
||||
SEC-NEXT: AddressAlignment: 16
|
||||
SEC-NEXT: EntrySize: 0
|
||||
SEC-NEXT: }
|
||||
|
||||
SYM: Symbol table '.symtab' contains {{.*}} entries:
|
||||
SYM-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
SYM-NEXT: 0: {{.*}} NOTYPE {{.*}} UND
|
||||
SYM-NEXT: 1: {{.*}} FILE {{.*}} trivial.ll
|
||||
SYM-NEXT: 2: {{.*}} OBJECT {{.*}} .L.str
|
||||
@ -1,16 +1,27 @@
|
||||
## Check how we print sections.
|
||||
## Check how llvm-readobj prints sections with --sections.
|
||||
## We test the --sections flag for llvm-readelf in the gnu-sections.test.
|
||||
|
||||
# RUN: llvm-readobj --sections %p/Inputs/trivial.obj.elf-i386 \
|
||||
# RUN: | FileCheck %s --check-prefix ELF
|
||||
# RUN: llvm-readobj --sections %p/Inputs/trivial.obj.elf-mipsel \
|
||||
# RUN: | FileCheck %s --check-prefix ELF-MIPSEL
|
||||
# RUN: yaml2obj --docnum=1 %s -o %t64
|
||||
# RUN: llvm-readobj --sections %t64 | FileCheck %s --check-prefixes=ELF,ELF64
|
||||
# RUN: yaml2obj --docnum=2 %s -o %t32
|
||||
# RUN: llvm-readobj --sections %t32 | FileCheck %s --check-prefixes=ELF,ELF32
|
||||
|
||||
## Check flag aliases produce identical output.
|
||||
# RUN: llvm-readobj --sections %p/Inputs/trivial.obj.elf-i386 > %t.sections
|
||||
# RUN: llvm-readobj -S %p/Inputs/trivial.obj.elf-i386 > %t.uppers
|
||||
# RUN: cmp %t.sections %t.uppers
|
||||
# RUN: llvm-readobj -S %p/Inputs/trivial.obj.elf-i386 > %t.lowers
|
||||
# RUN: cmp %t.sections %t.lowers
|
||||
# RUN: llvm-readobj --sections %t64 > %t64.llvm.sections
|
||||
# RUN: llvm-readobj -S %t64 > %t64.llvm.upper.s
|
||||
# RUN: cmp %t64.llvm.sections %t64.llvm.upper.s
|
||||
# RUN: llvm-readobj -s %t64 > %t64.llvm.lower.s
|
||||
# RUN: cmp %t64.llvm.sections %t64.llvm.lower.s
|
||||
# RUN: llvm-readobj --section-headers %t64 > %t64.llvm.section-headers
|
||||
# RUN: cmp %t64.llvm.sections %t64.llvm.section-headers
|
||||
|
||||
# RUN: llvm-readobj --sections %t32 > %t32.llvm.sections
|
||||
# RUN: llvm-readobj -S %t32 > %t32.llvm.upper.s
|
||||
# RUN: cmp %t32.llvm.sections %t32.llvm.upper.s
|
||||
# RUN: llvm-readobj -s %t32 > %t32.llvm.lower.s
|
||||
# RUN: cmp %t32.llvm.sections %t32.llvm.lower.s
|
||||
# RUN: llvm-readobj --section-headers %t32 > %t32.llvm.section-headers
|
||||
# RUN: cmp %t32.llvm.sections %t32.llvm.section-headers
|
||||
|
||||
# ELF: Sections [
|
||||
# ELF-NEXT: Section {
|
||||
@ -29,48 +40,83 @@
|
||||
# ELF-NEXT: }
|
||||
# ELF-NEXT: Section {
|
||||
# ELF-NEXT: Index: 1
|
||||
# ELF-NEXT: Name: .text (5)
|
||||
# ELF-NEXT: Name: .foo (1)
|
||||
# ELF-NEXT: Type: SHT_PROGBITS (0x1)
|
||||
# ELF-NEXT: Flags [ (0x6)
|
||||
# ELF-NEXT: Flags [ (0x3)
|
||||
# ELF-NEXT: SHF_ALLOC (0x2)
|
||||
# ELF-NEXT: SHF_EXECINSTR (0x4)
|
||||
# ELF-NEXT: SHF_WRITE (0x1)
|
||||
# ELF-NEXT: ]
|
||||
# ELF-NEXT: Address: 0x2
|
||||
# ELF64-NEXT: Offset: 0x41
|
||||
# ELF32-NEXT: Offset: 0x37
|
||||
# ELF-NEXT: Size: 3
|
||||
# ELF-NEXT: Link: 4
|
||||
# ELF-NEXT: Info: 1
|
||||
# ELF-NEXT: AddressAlignment: 5
|
||||
# ELF-NEXT: EntrySize: 6
|
||||
# ELF-NEXT: }
|
||||
# ELF-NEXT: Section {
|
||||
# ELF-NEXT: Index: 2
|
||||
# ELF-NEXT: Name: .strtab (16)
|
||||
# ELF-NEXT: Type: SHT_STRTAB (0x3)
|
||||
# ELF-NEXT: Flags [ (0x0)
|
||||
# ELF-NEXT: ]
|
||||
# ELF-NEXT: Address: 0x0
|
||||
# ELF-NEXT: Offset: 0x40
|
||||
# ELF-NEXT: Size: 42
|
||||
# ELF64-NEXT: Offset: 0x44
|
||||
# ELF32-NEXT: Offset: 0x3A
|
||||
# ELF-NEXT: Size: 1
|
||||
# ELF-NEXT: Link: 0
|
||||
# ELF-NEXT: Info: 0
|
||||
# ELF-NEXT: AddressAlignment: 16
|
||||
# ELF-NEXT: AddressAlignment: 1
|
||||
# ELF-NEXT: EntrySize: 0
|
||||
# ELF-NEXT: }
|
||||
# ELF-NEXT: Section {
|
||||
# ELF-NEXT: Index: 3
|
||||
# ELF-NEXT: Name: .shstrtab (6)
|
||||
# ELF-NEXT: Type: SHT_STRTAB (0x3)
|
||||
# ELF-NEXT: Flags [ (0x0)
|
||||
# ELF-NEXT: ]
|
||||
# ELF-NEXT: Address: 0x0
|
||||
# ELF64-NEXT: Offset: 0x45
|
||||
# ELF32-NEXT: Offset: 0x3B
|
||||
# ELF-NEXT: Size: 24
|
||||
# ELF-NEXT: Link: 0
|
||||
# ELF-NEXT: Info: 0
|
||||
# ELF-NEXT: AddressAlignment: 1
|
||||
# ELF-NEXT: EntrySize: 0
|
||||
# ELF-NEXT: }
|
||||
# ELF-NEXT: ]
|
||||
|
||||
# ELF-MIPSEL: Section {
|
||||
# ELF-MIPSEL: Index: 4
|
||||
# ELF-MIPSEL-NEXT: Name: .reginfo (27)
|
||||
# ELF-MIPSEL-NEXT: Type: SHT_MIPS_REGINFO (0x70000006)
|
||||
# ELF-MIPSEL-NEXT: Flags [ (0x2)
|
||||
# ELF-MIPSEL-NEXT: SHF_ALLOC (0x2)
|
||||
# ELF-MIPSEL-NEXT: ]
|
||||
# ELF-MIPSEL-NEXT: Address: 0x0
|
||||
# ELF-MIPSEL-NEXT: Offset: 0x34
|
||||
# ELF-MIPSEL-NEXT: Size: 24
|
||||
# ELF-MIPSEL-NEXT: Link: 0
|
||||
# ELF-MIPSEL-NEXT: Info: 0
|
||||
# ELF-MIPSEL-NEXT: AddressAlignment: 1
|
||||
# ELF-MIPSEL-NEXT: EntrySize: 0
|
||||
# ELF-MIPSEL-NEXT: }
|
||||
# ELF-MIPSEL-NEXT: Section {
|
||||
# ELF-MIPSEL-NEXT: Index: 5
|
||||
# ELF-MIPSEL-NEXT: Name: .MIPS.abiflags (12)
|
||||
# ELF-MIPSEL-NEXT: Type: SHT_MIPS_ABIFLAGS (0x7000002A)
|
||||
# ELF-MIPSEL-NEXT: Flags [ (0x2)
|
||||
# ELF-MIPSEL-NEXT: SHF_ALLOC (0x2)
|
||||
# ELF-MIPSEL-NEXT: ]
|
||||
# ELF-MIPSEL-NEXT: Address: 0x0
|
||||
# ELF-MIPSEL-NEXT: Offset: 0x50
|
||||
# ELF-MIPSEL-NEXT: Size: 24
|
||||
# ELF-MIPSEL-NEXT: Link: 0
|
||||
# ELF-MIPSEL-NEXT: Info: 0
|
||||
# ELF-MIPSEL-NEXT: AddressAlignment: 8
|
||||
# ELF-MIPSEL-NEXT: EntrySize: 0
|
||||
# ELF-MIPSEL-NEXT: }
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
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
|
||||
Sections:
|
||||
- Name: .foo
|
||||
Type: SHT_PROGBITS
|
||||
Info: 1
|
||||
Address: 0x2
|
||||
Size: 0x3
|
||||
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
||||
Link: 4
|
||||
AddressAlign: 5
|
||||
EntSize: 6
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user