[llvm] cf6037b - [llvm-readobj][test] - Cleanup testing of the --sections command line option.
Georgii Rymar via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 31 01:58:30 PST 2020
Author: Georgii Rymar
Date: 2020-01-31T12:58:12+03:00
New Revision: cf6037b5619037be993ee9d5850737f25cdd82c1
URL: https://github.com/llvm/llvm-project/commit/cf6037b5619037be993ee9d5850737f25cdd82c1
DIFF: https://github.com/llvm/llvm-project/commit/cf6037b5619037be993ee9d5850737f25cdd82c1.diff
LOG: [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
Added:
Modified:
llvm/test/tools/llvm-readobj/ELF/sections.test
Removed:
llvm/test/Object/readobj-shared-object.test
llvm/test/tools/llvm-readobj/ELF/Inputs/trivial.obj.elf-mipsel
llvm/test/tools/llvm-readobj/ELF/readelf-s-alias.test
################################################################################
diff --git a/llvm/test/Object/readobj-shared-object.test b/llvm/test/Object/readobj-shared-object.test
deleted file mode 100644
index 64f916987069..000000000000
--- a/llvm/test/Object/readobj-shared-object.test
+++ /dev/null
@@ -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: ]
diff --git a/llvm/test/tools/llvm-readobj/ELF/Inputs/trivial.obj.elf-mipsel b/llvm/test/tools/llvm-readobj/ELF/Inputs/trivial.obj.elf-mipsel
deleted file mode 100644
index c523908605cf..000000000000
Binary files a/llvm/test/tools/llvm-readobj/ELF/Inputs/trivial.obj.elf-mipsel and /dev/null
diff er
diff --git a/llvm/test/tools/llvm-readobj/ELF/readelf-s-alias.test b/llvm/test/tools/llvm-readobj/ELF/readelf-s-alias.test
deleted file mode 100644
index b50d0e2442a0..000000000000
--- a/llvm/test/tools/llvm-readobj/ELF/readelf-s-alias.test
+++ /dev/null
@@ -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
diff --git a/llvm/test/tools/llvm-readobj/ELF/sections.test b/llvm/test/tools/llvm-readobj/ELF/sections.test
index 9eecd18545bc..d2865c041798 100644
--- a/llvm/test/tools/llvm-readobj/ELF/sections.test
+++ b/llvm/test/tools/llvm-readobj/ELF/sections.test
@@ -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
+# ELF64-NEXT: Offset: 0x44
+# ELF32-NEXT: Offset: 0x3A
+# ELF-NEXT: Size: 1
+# ELF-NEXT: Link: 0
+# ELF-NEXT: Info: 0
+# 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
-# ELF-NEXT: Offset: 0x40
-# ELF-NEXT: Size: 42
+# ELF64-NEXT: Offset: 0x45
+# ELF32-NEXT: Offset: 0x3B
+# ELF-NEXT: Size: 24
# ELF-NEXT: Link: 0
# ELF-NEXT: Info: 0
-# ELF-NEXT: AddressAlignment: 16
+# ELF-NEXT: AddressAlignment: 1
# ELF-NEXT: EntrySize: 0
# ELF-NEXT: }
+# ELF-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-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: 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
More information about the llvm-commits
mailing list