[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