[llvm-readobj] - Convert gnu-sections.test to use YAML.
authorGeorge Rimar <grimar@accesssoftek.com>
Mon, 3 Jun 2019 09:58:41 +0000 (09:58 +0000)
committerGeorge Rimar <grimar@accesssoftek.com>
Mon, 3 Jun 2019 09:58:41 +0000 (09:58 +0000)
gnu-sections.test currently use relocs.obj.elf-x86_64 and
relocs.obj.elf-i386 precompiled objects as an inputs.

These inputs actually initially were introduced to test the
dump of relocations and have almost nothing common with dumping
sections.

Patch converts the test to use yaml2obj. That allows to remove
relocs.obj.elf-i386 binary.
(relocs.obj.elf-x86_64 is still used by another test and can't be removed atm).

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

llvm-svn: 362377

llvm/test/tools/llvm-readobj/Inputs/relocs.obj.elf-i386 [deleted file]
llvm/test/tools/llvm-readobj/gnu-sections.test

diff --git a/llvm/test/tools/llvm-readobj/Inputs/relocs.obj.elf-i386 b/llvm/test/tools/llvm-readobj/Inputs/relocs.obj.elf-i386
deleted file mode 100644 (file)
index 7860df6..0000000
Binary files a/llvm/test/tools/llvm-readobj/Inputs/relocs.obj.elf-i386 and /dev/null differ
index faf00d9..17a0c4c 100644 (file)
-RUN: llvm-readelf -S %p/Inputs/relocs.obj.elf-i386 \
-RUN:   | FileCheck %s -check-prefix ELF32
-RUN: llvm-readelf -S %p/Inputs/relocs.obj.elf-x86_64 \
-RUN:   | FileCheck %s -check-prefix ELF64
-RUN: llvm-readobj --wide --sections \
-RUN:   %p/Inputs/relocs.obj.elf-x86_64 --elf-output-style=GNU \
-RUN:   | FileCheck %s -check-prefix ELF64
-RUN: llvm-readobj -W --sections \
-RUN:   %p/Inputs/relocs.obj.elf-x86_64 --elf-output-style=GNU \
-RUN:   | FileCheck %s -check-prefix ELF64
-RUN: llvm-readelf -W -S %p/Inputs/relocs.obj.elf-x86_64 \
-RUN:   | FileCheck %s -check-prefix ELF64
+# RUN: yaml2obj --docnum=1 %s -o %t-i386.o
+# RUN: llvm-readelf -S %t-i386.o | FileCheck %s -check-prefix ELF32
 
-ELF32:    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 0000f6 00  AX  0   0  4
-ELF32-NEXT:      [ 2] .rel.text         REL             00000000 000318 000148 08      6   1  4
-ELF32-NEXT:      [ 3] .data             PROGBITS        00000000 00012c 000000 00  WA  0   0  4
-ELF32-NEXT:      [ 4] .bss              NOBITS          00000000 00012c 000000 00  WA  0   0  4
-ELF32-NEXT:      [ 5] .shstrtab         STRTAB          00000000 00012c 000030 00      0   0  1
-ELF32-NEXT:      [ 6] .symtab           SYMTAB          00000000 00029c 000060 10      7   4  4
-ELF32-NEXT:      [ 7] .strtab           STRTAB          00000000 0002fc 00001b 00      0   0  1
-ELF32-NEXT:    Key to Flags:
-ELF32-NEXT:      W (write), A (alloc), X (execute), M (merge), S (strings), l (large)
-ELF32-NEXT:      I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
-ELF32-NEXT:      O (extra OS processing required) o (OS specific), p (processor specific)
+# ELF32:      There are 8 section headers, starting at offset 0x34:
+# 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 000174 000001 00  AX  0   0  4
+# ELF32-NEXT:   [ 2] .rel.text         REL             00000000 000178 000000 08      5   1  4
+# ELF32-NEXT:   [ 3] .data             PROGBITS        00000000 000178 000000 00  WA  0   0  4
+# ELF32-NEXT:   [ 4] .bss              NOBITS          00000000 000178 000000 00  WA  0   0  4
+# ELF32-NEXT:   [ 5] .symtab           SYMTAB          00000000 000178 000020 10      6   2  8
+# ELF32-NEXT:   [ 6] .strtab           STRTAB          00000000 000198 000007 00      0   0  1
+# ELF32-NEXT:   [ 7] .shstrtab         STRTAB          00000000 00019f 000030 00      0   0  1
+# ELF32-NEXT: Key to Flags:
+# ELF32-NEXT:   W (write), A (alloc), X (execute), M (merge), S (strings), l (large)
+# ELF32-NEXT:   I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
+# ELF32-NEXT:   O (extra OS processing required) o (OS specific), p (processor specific)
 
-ELF64:    There are 8 section headers, starting at offset 0x180:
-ELF64:    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 00010a 00  AX 0   0  4
-ELF64-NEXT:      [ 2] .rela.text        RELA            0000000000000000 000430 000390 18     6   1  8
-ELF64-NEXT:      [ 3] .data             PROGBITS        0000000000000000 00014c 000000 00  WA 0   0  4
-ELF64-NEXT:      [ 4] .bss              NOBITS          0000000000000000 00014c 000000 00  WA 0   0  4
-ELF64-NEXT:      [ 5] .shstrtab         STRTAB          0000000000000000 00014c 000031 00     0   0  1
-ELF64-NEXT:      [ 6] .symtab           SYMTAB          0000000000000000 000380 000090 18     7   4  8
-ELF64-NEXT:      [ 7] .strtab           STRTAB          0000000000000000 000410 00001b 00     0   0  1
-ELF64-NEXT:    Key to Flags:
-ELF64-NEXT:      W (write), A (alloc), X (execute), M (merge), S (strings), l (large)
-ELF64-NEXT:      I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
-ELF64-NEXT:      O (extra OS processing required) o (OS specific), p (processor specific)
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS32
+  Data:    ELFDATA2LSB
+  OSABI:   ELFOSABI_GNU
+  Type:    ET_REL
+  Machine: EM_386
+Sections:
+  - Name:         .text
+    Type:         SHT_PROGBITS
+    Flags:        [ SHF_ALLOC, SHF_EXECINSTR ]
+    AddressAlign: 0x0000000000000004
+    Content:      00
+  - Name:         .rel.text
+    Type:         SHT_REL
+    Link:         .symtab
+    AddressAlign: 0x0000000000000004
+    EntSize:      0x0000000000000008
+    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
+
+# RUN: yaml2obj --docnum=2 %s -o %t-x64.o
+# RUN: llvm-readelf -S %t-x64.o | FileCheck %s -check-prefix ELF64
+
+## Check that --wide is the same as -W and ignored and also
+## that --section is the same as -S.
+# RUN: llvm-readobj --wide --sections %t-x64.o --elf-output-style=GNU \
+# RUN:   | FileCheck %s -check-prefix ELF64
+# RUN: llvm-readobj -W --sections %t-x64.o --elf-output-style=GNU \
+# 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 0x40:
+# 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 000240 000001 00  AX 0   0  4
+# ELF64-NEXT:   [ 2] .rela.text        RELA            0000000000000000 000248 000000 18  5  1  8
+# ELF64-NEXT:   [ 3] .data             PROGBITS        0000000000000000 000248 000000 00  WA 0   0  4
+# ELF64-NEXT:   [ 4] .bss              NOBITS          0000000000000000 000248 000000 00  WA 0   0  4
+# ELF64-NEXT:   [ 5] .symtab           SYMTAB          0000000000000000 000248 000030 18  6  2  8
+# ELF64-NEXT:   [ 6] .strtab           STRTAB          0000000000000000 000278 000007 00  0  0  1
+# ELF64-NEXT:   [ 7] .shstrtab         STRTAB          0000000000000000 00027f 000031 00  0  0  1
+# ELF64-NEXT: Key to Flags:
+# ELF64-NEXT:   W (write), A (alloc), X (execute), M (merge), S (strings), l (large)
+# ELF64-NEXT:   I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
+# ELF64-NEXT:   O (extra OS processing required) o (OS specific), 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