[llvm] 1a2d2b4 - [llvm-readobj] - Merge `gnu-symbols.test` to `symbols.test` and cleanup.

Georgii Rymar via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 25 04:31:31 PST 2019


Author: Georgii Rymar
Date: 2019-12-25T15:30:36+03:00
New Revision: 1a2d2b492a3d16cd9d743c4eb2cafaf11b50092a

URL: https://github.com/llvm/llvm-project/commit/1a2d2b492a3d16cd9d743c4eb2cafaf11b50092a
DIFF: https://github.com/llvm/llvm-project/commit/1a2d2b492a3d16cd9d743c4eb2cafaf11b50092a.diff

LOG: [llvm-readobj] - Merge `gnu-symbols.test` to `symbols.test` and cleanup.

This cleans up and merges `gnu-symbols.test` to `symbols.test`.
Initially `gnu-symbols.test` tested the following things:
1) How symbols are printed in GNU style.
   It does not make sense to have a separate file for such tests.
2) It tried to test proc-specific symbol indexes. The test was incomplete and
   also we already have `symbol-shndx.test` for that, so this part was removed.
3) It tested `--dyn-symbols` and `--symbols` correlation. All following
   cases were moved to `symbols.test`:
   a) That `--dyn-symbols` does not trigger showing regular symbols..
   b) That `--symbols` triggers `--dyn-symbols` implicitly.
   c) That `--dyn-symbols` and `--symbols` works fine together.

Differential revision: https://reviews.llvm.org/D71697

Added: 
    

Modified: 
    llvm/test/tools/llvm-readobj/ELF/symbols.test

Removed: 
    llvm/test/tools/llvm-readobj/ELF/Inputs/relocs.obj.elf-x86_64
    llvm/test/tools/llvm-readobj/ELF/Inputs/symbols-proc-specific.elf-hexagon
    llvm/test/tools/llvm-readobj/ELF/gnu-symbols.test


################################################################################
diff  --git a/llvm/test/tools/llvm-readobj/ELF/Inputs/relocs.obj.elf-x86_64 b/llvm/test/tools/llvm-readobj/ELF/Inputs/relocs.obj.elf-x86_64
deleted file mode 100644
index 3ca9d8c6939f..000000000000
Binary files a/llvm/test/tools/llvm-readobj/ELF/Inputs/relocs.obj.elf-x86_64 and /dev/null 
diff er

diff  --git a/llvm/test/tools/llvm-readobj/ELF/Inputs/symbols-proc-specific.elf-hexagon b/llvm/test/tools/llvm-readobj/ELF/Inputs/symbols-proc-specific.elf-hexagon
deleted file mode 100644
index f6979086937a..000000000000
Binary files a/llvm/test/tools/llvm-readobj/ELF/Inputs/symbols-proc-specific.elf-hexagon and /dev/null 
diff er

diff  --git a/llvm/test/tools/llvm-readobj/ELF/gnu-symbols.test b/llvm/test/tools/llvm-readobj/ELF/gnu-symbols.test
deleted file mode 100644
index 3d087ac459b2..000000000000
--- a/llvm/test/tools/llvm-readobj/ELF/gnu-symbols.test
+++ /dev/null
@@ -1,57 +0,0 @@
-RUN: llvm-readelf --symbols %p/Inputs/symbols-proc-specific.elf-hexagon \
-RUN:  | FileCheck %s --check-prefix ELF32
-RUN: llvm-readelf --symbols %p/Inputs/relocs.obj.elf-x86_64 \
-RUN:   | FileCheck %s --check-prefix ELF64
-RUN: llvm-readelf --symbols %p/Inputs/gnuhash.so.elf-x86_64 \
-RUN:   | FileCheck %s --check-prefixes=SYMTAB,DYN
-RUN: llvm-readelf --dyn-symbols %p/Inputs/gnuhash.so.elf-x86_64 \
-RUN:   | FileCheck %s --check-prefixes=NO-SYMTAB,DYN
-RUN: llvm-readelf --symbols --dyn-symbols %p/Inputs/gnuhash.so.elf-x86_64 \
-RUN:   | FileCheck %s --check-prefixes=SYMTAB,DYN
-
-ELF32: Symbol table '.symtab' contains 5 entries:
-ELF32-NEXT:    Num:    Value  Size Type    Bind   Vis      Ndx Name
-ELF32-NEXT:      0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND
-ELF32-NEXT:      1: 00000000     0 FILE    LOCAL  DEFAULT  ABS a.c
-ELF32-NEXT:      2: 00000000    20 FUNC    GLOBAL DEFAULT    2 main
-ELF32-NEXT:      3: 00000004     4 OBJECT  GLOBAL DEFAULT PRC[0xff03] x
-ELF32-NEXT:      4: 00000000     4 OBJECT  GLOBAL DEFAULT    3 y
-
-ELF64: Symbol table '.symtab' contains 6 entries:
-ELF64-NEXT:   Num:    Value          Size Type    Bind   Vis      Ndx Name
-ELF64-NEXT:     0:  0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
-ELF64-NEXT:     1:  0000000000000000     0 SECTION LOCAL  DEFAULT    1 .text
-ELF64-NEXT:     2:  0000000000000000     0 SECTION LOCAL  DEFAULT    3 .data
-ELF64-NEXT:     3:  0000000000000000     0 SECTION LOCAL  DEFAULT    4 .bss
-ELF64-NEXT:     4:  0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND _GLOBAL_OFFSET_TABLE_
-ELF64-NEXT:     5:  0000000000000000     0 TLS     GLOBAL DEFAULT  UND sym
-
-NO-SYMTAB-NOT: Symbol table '.symtab'
-
-DYN: Symbol table '.dynsym' contains 5 entries:
-DYN-NEXT:   Num:    Value          Size Type    Bind   Vis      Ndx Name
-DYN-NEXT:     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
-DYN-NEXT:     1: 00000000000001b8     0 NOTYPE  GLOBAL DEFAULT    4 foo
-DYN-NEXT:     2: 0000000000200268     0 NOTYPE  GLOBAL DEFAULT    5 _edata
-DYN-NEXT:     3: 0000000000200268     0 NOTYPE  GLOBAL DEFAULT    5 _end
-DYN-NEXT:     4: 0000000000200268     0 NOTYPE  GLOBAL DEFAULT    5 __bss_start
-
-DYN-NOT: .dynsym
-NO-SYMTAB-NOT: Symbol table '.symtab'
-
-SYMTAB: Symbol table '.symtab' contains 12 entries:
-SYMTAB-NEXT:   Num:    Value          Size Type    Bind   Vis      Ndx Name
-SYMTAB-NEXT:     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
-SYMTAB-NEXT:     1: 00000000000000e8     0 SECTION LOCAL  DEFAULT    1 .gnu.hash
-SYMTAB-NEXT:     2: 0000000000000120     0 SECTION LOCAL  DEFAULT    2 .dynsym
-SYMTAB-NEXT:     3: 0000000000000198     0 SECTION LOCAL  DEFAULT    3 .dynstr
-SYMTAB-NEXT:     4: 00000000000001b8     0 SECTION LOCAL  DEFAULT    4 .eh_frame
-SYMTAB-NEXT:     5: 00000000002001b8     0 SECTION LOCAL  DEFAULT    5 .dynamic
-SYMTAB-NEXT:     6: 00000000002001b8     0 OBJECT  LOCAL  DEFAULT    5 _DYNAMIC
-SYMTAB-NEXT:     7: 0000000000200268     0 OBJECT  LOCAL  DEFAULT    5 _GLOBAL_OFFSET_TABLE_
-SYMTAB-NEXT:     8: 0000000000200268     0 NOTYPE  GLOBAL DEFAULT    5 __bss_start
-SYMTAB-NEXT:     9: 00000000000001b8     0 NOTYPE  GLOBAL DEFAULT    4 foo
-SYMTAB-NEXT:    10: 0000000000200268     0 NOTYPE  GLOBAL DEFAULT    5 _edata
-SYMTAB-NEXT:    11: 0000000000200268     0 NOTYPE  GLOBAL DEFAULT    5 _end
-
-DYN-NOT: .dynsym

diff  --git a/llvm/test/tools/llvm-readobj/ELF/symbols.test b/llvm/test/tools/llvm-readobj/ELF/symbols.test
index 31bb9ae7b2fe..e6d7ba0eed7f 100644
--- a/llvm/test/tools/llvm-readobj/ELF/symbols.test
+++ b/llvm/test/tools/llvm-readobj/ELF/symbols.test
@@ -1,42 +1,117 @@
 ## This is a general test for --symbols option and its aliases.
 ## There are also other symbols* tests that check specific things.
 
-# RUN: llvm-readobj --symbols %p/Inputs/trivial.obj.elf-i386 | FileCheck %s
+## Case 1: Test how llvm-readobj and llvm-readelf dumps symbols.
+# RUN: yaml2obj %s --docnum=1 -o %t64
+# RUN: llvm-readobj --symbols %t64 | FileCheck %s --match-full-lines --strict-whitespace --check-prefix=SYMBOLS-LLVM
+# RUN: llvm-readelf --symbols %t64 | FileCheck %s --match-full-lines --strict-whitespace --check-prefix=SYMBOLS-GNU64
+# RUN: yaml2obj %s --docnum=2 -o %t32
+# RUN: llvm-readobj --symbols %t32 | FileCheck %s --match-full-lines --strict-whitespace --check-prefix=SYMBOLS-LLVM
+# RUN: llvm-readelf --symbols %t32 | FileCheck %s --match-full-lines --strict-whitespace --check-prefix=SYMBOLS-GNU32
 
-## Check flag aliases produce identical output.
-# RUN: llvm-readobj --symbols %p/Inputs/trivial.obj.elf-i386 > %t.symbols
-# RUN: llvm-readobj --syms %p/Inputs/trivial.obj.elf-i386 > %t.syms
+#      SYMBOLS-LLVM:Symbols [
+# SYMBOLS-LLVM-NEXT:  Symbol {
+# SYMBOLS-LLVM-NEXT:    Name:  (0)
+# SYMBOLS-LLVM-NEXT:    Value: 0x0
+# SYMBOLS-LLVM-NEXT:    Size: 0
+# SYMBOLS-LLVM-NEXT:    Binding: Local (0x0)
+# SYMBOLS-LLVM-NEXT:    Type: None (0x0)
+# SYMBOLS-LLVM-NEXT:    Other: 0
+# SYMBOLS-LLVM-NEXT:    Section: Undefined (0x0)
+# SYMBOLS-LLVM-NEXT:  }
+# SYMBOLS-LLVM-NEXT:  Symbol {
+# SYMBOLS-LLVM-NEXT:    Name: foo (5)
+# SYMBOLS-LLVM-NEXT:    Value: 0x1
+# SYMBOLS-LLVM-NEXT:    Size: 0
+# SYMBOLS-LLVM-NEXT:    Binding: Local (0x0)
+# SYMBOLS-LLVM-NEXT:    Type: None (0x0)
+# SYMBOLS-LLVM-NEXT:    Other: 0
+# SYMBOLS-LLVM-NEXT:    Section: Undefined (0x0)
+# SYMBOLS-LLVM-NEXT:  }
+# SYMBOLS-LLVM-NEXT:  Symbol {
+# SYMBOLS-LLVM-NEXT:    Name: bar (1)
+# SYMBOLS-LLVM-NEXT:    Value: 0x2
+# SYMBOLS-LLVM-NEXT:    Size: 0
+# SYMBOLS-LLVM-NEXT:    Binding: Local (0x0)
+# SYMBOLS-LLVM-NEXT:    Type: None (0x0)
+# SYMBOLS-LLVM-NEXT:    Other: 0
+# SYMBOLS-LLVM-NEXT:    Section: Undefined (0x0)
+# SYMBOLS-LLVM-NEXT:  }
+# SYMBOLS-LLVM-NEXT:]
+
+#      SYMBOLS-GNU64:Symbol table '.symtab' contains 3 entries:
+# SYMBOLS-GNU64-NEXT:   Num:    Value          Size Type    Bind   Vis       Ndx Name
+# SYMBOLS-GNU64-NEXT:     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT   UND 
+# SYMBOLS-GNU64-NEXT:     1: 0000000000000001     0 NOTYPE  LOCAL  DEFAULT   UND foo
+# SYMBOLS-GNU64-NEXT:     2: 0000000000000002     0 NOTYPE  LOCAL  DEFAULT   UND bar
+
+#      SYMBOLS-GNU32:Symbol table '.symtab' contains 3 entries:
+# SYMBOLS-GNU32-NEXT:   Num:    Value  Size Type    Bind   Vis       Ndx Name
+# SYMBOLS-GNU32-NEXT:     0: 00000000     0 NOTYPE  LOCAL  DEFAULT   UND 
+# SYMBOLS-GNU32-NEXT:     1: 00000001     0 NOTYPE  LOCAL  DEFAULT   UND foo
+# SYMBOLS-GNU32-NEXT:     2: 00000002     0 NOTYPE  LOCAL  DEFAULT   UND bar
+
+## Case 2: Check flag aliases produce identical output
+# RUN: llvm-readobj --symbols %t64 > %t.symbols
+# RUN: llvm-readobj --syms %t64 > %t.syms
 # RUN: cmp %t.symbols %t.syms
-# RUN: llvm-readobj -t %p/Inputs/trivial.obj.elf-i386 > %t.t
+# RUN: llvm-readobj -t %t64 > %t.t
 # RUN: cmp %t.symbols %t.t
-# RUN: llvm-readelf -s --elf-output-style LLVM %p/Inputs/trivial.obj.elf-i386 > %t.lowers
+# RUN: llvm-readelf -s --elf-output-style=LLVM %t64 > %t.lowers
 # RUN: cmp %t.symbols %t.lowers
 
-# CHECK:      Symbols [
-# CHECK-NEXT:   Symbol {
-# CHECK-NEXT:     Name:  (0)
-# CHECK-NEXT:     Value: 0x0
-# CHECK-NEXT:     Size: 0
-# CHECK-NEXT:     Binding: Local (0x0)
-# CHECK-NEXT:     Type: None (0x0)
-# CHECK-NEXT:     Other: 0
-# CHECK-NEXT:     Section: Undefined (0x0)
-# CHECK-NEXT:   }
-# CHECK-NEXT:   Symbol {
-# CHECK-NEXT:     Name: trivial.ll (1)
-# CHECK-NEXT:     Value: 0x0
-# CHECK-NEXT:     Size: 0
-# CHECK-NEXT:     Binding: Local (0x0)
-# CHECK-NEXT:     Type: File (0x4)
-# CHECK-NEXT:     Other: 0
-# CHECK-NEXT:     Section: Absolute (0xFFF1)
-# CHECK-NEXT:   }
-# CHECK-NEXT:   Symbol {
-# CHECK-NEXT:     Name: .L.str (39)
-# CHECK-NEXT:     Value: 0x0
-# CHECK-NEXT:     Size: 13
-# CHECK-NEXT:     Binding: Local (0x0)
-# CHECK-NEXT:     Type: Object (0x1)
-# CHECK-NEXT:     Other: 0
-# CHECK-NEXT:     Section: .rodata.str1.1 (0x5)
-# CHECK-NEXT:   }
+# RUN: llvm-readelf --symbols %t64 > %t.symbols.gnu
+# RUN: llvm-readelf --syms %t64 > %t.syms.gnu
+# RUN: cmp %t.symbols.gnu %t.syms.gnu
+## There is no -t option in llvm-readelf.
+# RUN: not llvm-readelf -t %t64 2>&1 | FileCheck %s --check-prefix=NO-T-ERR
+# NO-T-ERR: Unknown command line argument '-t'
+## -s is an llvm-readobj option to dump sections.
+# RUN: llvm-readobj -s --elf-output-style=GNU %t64 | FileCheck %s --implicit-check-not="Symbol table"
+
+## Case 3: Test that both regular and dynamic symbols are dumped when `--symbols` and `--dyn-symbols`
+##         are specified together. Note that the order is 
diff erent for 
diff erent styles.
+# RUN: llvm-readobj --symbols --dyn-symbols %t64 | FileCheck %s --check-prefix=BOTH-LLVM
+# RUN: llvm-readelf --symbols --dyn-symbols %t64 | FileCheck %s --check-prefix=BOTH-GNU
+
+# BOTH-LLVM: Symbols [
+# BOTH-LLVM: DynamicSymbols [
+
+# BOTH-GNU: Symbol table '.dynsym'
+# BOTH-GNU: Symbol table '.symtab'
+
+## Case 4: --symbols implies --dyn-symbols for llvm-readelf.
+# RUN: llvm-readobj --symbols %t64 | FileCheck %s --implicit-check-not="DynamicSymbols ["
+# RUN: llvm-readelf --symbols %t64 | FileCheck %s --check-prefix=BOTH-GNU
+
+## Case 5: Test that `--dyn-symbols` does not trigger `--symbols` implicitly.
+# RUN: llvm-readobj --dyn-symbols %t64 | FileCheck %s --implicit-check-not="{{^}}Symbols ["
+# RUN: llvm-readelf --dyn-symbols %t64 | FileCheck %s --implicit-check-not="Symbol table '.symtab'"
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Symbols:
+  - Name:  foo
+    Value: 0x1
+  - Name:  bar
+    Value: 0x2
+DynamicSymbols:
+  - Name:  zed
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS32
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_386
+Symbols:
+  - Name:  foo
+    Value: 0x1
+  - Name:  bar
+    Value: 0x2
+DynamicSymbols:
+  - Name:  zed


        


More information about the llvm-commits mailing list