[test/Object, obj2yaml] - Move test cases from test/Object and cleanup.
authorGeorge Rimar <grimar@accesssoftek.com>
Fri, 12 Jul 2019 10:29:29 +0000 (10:29 +0000)
committerGeorge Rimar <grimar@accesssoftek.com>
Fri, 12 Jul 2019 10:29:29 +0000 (10:29 +0000)
test/Object is not correct place to have tests that check obj2yaml
functionality, because we have test/tools/obj2yaml folder for that.

In this patch I merged a few test cases with their YAMLs from Inputs
folder, converted one of binary inputs and moved them to
tools/obj2yaml folder.

There are still another tests that might need the same, so it is initial step.

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

llvm-svn: 365891

14 files changed:
llvm/test/Object/Inputs/COFF/long-file-symbol.yaml [deleted file]
llvm/test/Object/Inputs/invalid-reloc.elf-x86-64 [deleted file]
llvm/test/Object/obj2yaml-coff-long-file-symbol.test [deleted file]
llvm/test/Object/obj2yaml-coff-long-section-name.test [deleted file]
llvm/test/Object/obj2yaml-coff-section-aux-symbol.test [deleted file]
llvm/test/Object/obj2yaml-coff-weak-external.test [deleted file]
llvm/test/Object/obj2yaml-invalid-reloc.test [deleted file]
llvm/test/Object/obj2yaml-sectiongroup.test [deleted file]
llvm/test/tools/obj2yaml/coff-long-file-symbol.test [new file with mode: 0644]
llvm/test/tools/obj2yaml/coff-long-section-name.test [moved from llvm/test/Object/Inputs/COFF/long-section-name.yaml with 75% similarity]
llvm/test/tools/obj2yaml/coff-section-aux-symbol.test [moved from llvm/test/Object/Inputs/COFF/section-aux-symbol.yaml with 54% similarity]
llvm/test/tools/obj2yaml/coff-weak-external.test [moved from llvm/test/Object/Inputs/COFF/weak-external.yaml with 92% similarity]
llvm/test/tools/obj2yaml/no-symbol-reloc.test [new file with mode: 0644]
llvm/test/tools/obj2yaml/section-group.test [new file with mode: 0644]

diff --git a/llvm/test/Object/Inputs/COFF/long-file-symbol.yaml b/llvm/test/Object/Inputs/COFF/long-file-symbol.yaml
deleted file mode 100644 (file)
index 4a37a43..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
---- !COFF
-header:
-  Machine:         IMAGE_FILE_MACHINE_AMD64
-  Characteristics: [ IMAGE_FILE_RELOCS_STRIPPED, IMAGE_FILE_LINE_NUMS_STRIPPED ]
-sections:
-symbols:
-  - Name:            .file
-    Value:           0
-    SectionNumber:   65534
-    SimpleType:      IMAGE_SYM_TYPE_NULL
-    ComplexType:     IMAGE_SYM_DTYPE_NULL
-    StorageClass:    IMAGE_SYM_CLASS_FILE
-    File:            filename_with_22_chars
-...
diff --git a/llvm/test/Object/Inputs/invalid-reloc.elf-x86-64 b/llvm/test/Object/Inputs/invalid-reloc.elf-x86-64
deleted file mode 100644 (file)
index ce742de..0000000
Binary files a/llvm/test/Object/Inputs/invalid-reloc.elf-x86-64 and /dev/null differ
diff --git a/llvm/test/Object/obj2yaml-coff-long-file-symbol.test b/llvm/test/Object/obj2yaml-coff-long-file-symbol.test
deleted file mode 100644 (file)
index 3a4d380..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-RUN: yaml2obj %p/Inputs/COFF/long-file-symbol.yaml | obj2yaml | FileCheck %s --check-prefix COFF-I386
-
-COFF-I386: File:            filename_with_22_chars
diff --git a/llvm/test/Object/obj2yaml-coff-long-section-name.test b/llvm/test/Object/obj2yaml-coff-long-section-name.test
deleted file mode 100644 (file)
index 5457aef..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-RUN: yaml2obj %p/Inputs/COFF/long-section-name.yaml | obj2yaml | FileCheck %s --check-prefix COFF-I386
-
-COFF-I386: Name:            .long_section_name
diff --git a/llvm/test/Object/obj2yaml-coff-section-aux-symbol.test b/llvm/test/Object/obj2yaml-coff-section-aux-symbol.test
deleted file mode 100644 (file)
index 55ce5f0..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-RUN: yaml2obj %p/Inputs/COFF/section-aux-symbol.yaml | obj2yaml | FileCheck %s --check-prefix COFF-I386
-
-COFF-I386:     sections:
-COFF-I386-NEXT:  - Name:            .CRT
-COFF-I386:     symbols:
-COFF-I386:       - Name:            '.CRT$XCAA'
-COFF-I386-NEXT:    Value:           4
-COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
-COFF-I386-NEXT:    SectionDefinition:
-COFF-I386-NEXT:      Length:          4
-COFF-I386-NEXT:      NumberOfRelocations: 1
-COFF-I386-NEXT:      NumberOfLinenumbers: 0
-COFF-I386:       - Name:            '.CRT$XIAA'
-COFF-I386-NEXT:    Value:           16
-COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
-COFF-I386-NEXT:    SectionDefinition:
-COFF-I386-NEXT:      Length:          4
-COFF-I386-NEXT:      NumberOfRelocations: 1
-COFF-I386-NEXT:      NumberOfLinenumbers: 0
-COFF-I386:       - Name:            '.CRT$XLD'
-COFF-I386-NEXT:    Value:           36
-COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
-COFF-I386-NEXT:    SectionDefinition:
-COFF-I386-NEXT:      Length:          4
-COFF-I386-NEXT:      NumberOfRelocations: 1
-COFF-I386-NEXT:      NumberOfLinenumbers: 0
-COFF-I386:       - Name:            '.CRT$XLC'
-COFF-I386-NEXT:    Value:           32
-COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
-COFF-I386-NEXT:    SectionDefinition:
-COFF-I386-NEXT:      Length:          4
-COFF-I386-NEXT:      NumberOfRelocations: 1
-COFF-I386-NEXT:      NumberOfLinenumbers: 0
-COFF-I386:       - Name:            '.CRT$XDZ'
-COFF-I386-NEXT:    Value:           48
-COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
-COFF-I386-NEXT:    SectionDefinition:
-COFF-I386-NEXT:      Length:          4
-COFF-I386-NEXT:      NumberOfRelocations: 0
-COFF-I386-NEXT:      NumberOfLinenumbers: 0
-COFF-I386:       - Name:            '.CRT$XDA'
-COFF-I386-NEXT:    Value:           44
-COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
-COFF-I386-NEXT:    SectionDefinition:
-COFF-I386-NEXT:      Length:          4
-COFF-I386-NEXT:      NumberOfRelocations: 0
-COFF-I386-NEXT:      NumberOfLinenumbers: 0
-COFF-I386:       - Name:            '.CRT$XLZ'
-COFF-I386-NEXT:    Value:           40
-COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
-COFF-I386-NEXT:    SectionDefinition:
-COFF-I386-NEXT:      Length:          4
-COFF-I386-NEXT:      NumberOfRelocations: 0
-COFF-I386-NEXT:      NumberOfLinenumbers: 0
-COFF-I386:       - Name:            '.CRT$XLA'
-COFF-I386-NEXT:    Value:           28
-COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
-COFF-I386-NEXT:    SectionDefinition:
-COFF-I386-NEXT:      Length:          4
-COFF-I386-NEXT:      NumberOfRelocations: 0
-COFF-I386-NEXT:      NumberOfLinenumbers: 0
-COFF-I386:       - Name:            '.CRT$XIC'
-COFF-I386-NEXT:    Value:           20
-COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
-COFF-I386-NEXT:    SectionDefinition:
-COFF-I386-NEXT:      Length:          4
-COFF-I386-NEXT:      NumberOfRelocations: 1
-COFF-I386-NEXT:      NumberOfLinenumbers: 0
-COFF-I386:       - Name:            '.CRT$XCZ'
-COFF-I386-NEXT:    Value:           8
-COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
-COFF-I386-NEXT:    SectionDefinition:
-COFF-I386-NEXT:      Length:          4
-COFF-I386-NEXT:      NumberOfRelocations: 0
-COFF-I386-NEXT:      NumberOfLinenumbers: 0
-COFF-I386:       - Name:            '.CRT$XCA'
-COFF-I386-NEXT:    Value:           0
-COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
-COFF-I386-NEXT:    SectionDefinition:
-COFF-I386-NEXT:      Length:          4
-COFF-I386-NEXT:      NumberOfRelocations: 0
-COFF-I386-NEXT:      NumberOfLinenumbers: 0
-COFF-I386:       - Name:            '.CRT$XIZ'
-COFF-I386-NEXT:    Value:           24
-COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
-COFF-I386-NEXT:    SectionDefinition:
-COFF-I386-NEXT:      Length:          4
-COFF-I386-NEXT:      NumberOfRelocations: 0
-COFF-I386-NEXT:      NumberOfLinenumbers: 0
-COFF-I386:       - Name:            '.CRT$XIA'
-COFF-I386-NEXT:    Value:           12
-COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
-COFF-I386-NEXT:    SectionDefinition:
-COFF-I386-NEXT:      Length:          4
-COFF-I386-NEXT:      NumberOfRelocations: 0
-COFF-I386-NEXT:      NumberOfLinenumbers: 0
diff --git a/llvm/test/Object/obj2yaml-coff-weak-external.test b/llvm/test/Object/obj2yaml-coff-weak-external.test
deleted file mode 100644 (file)
index 4ecdc1b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-RUN: yaml2obj %p/Inputs/COFF/weak-external.yaml | obj2yaml | FileCheck %s --check-prefix COFF-I386
-
-COFF-I386: Characteristics: 0
diff --git a/llvm/test/Object/obj2yaml-invalid-reloc.test b/llvm/test/Object/obj2yaml-invalid-reloc.test
deleted file mode 100644 (file)
index c854d79..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-RUN: obj2yaml %p/Inputs/invalid-reloc.elf-x86-64 | FileCheck %s
-
-CHECK: --- !ELF
-CHECK-NEXT: FileHeader:
-CHECK-NEXT:   Class:           ELFCLASS64
-CHECK-NEXT:   Data:            ELFDATA2LSB
-CHECK-NEXT:   OSABI:           ELFOSABI_FREEBSD
-CHECK-NEXT:   Type:            ET_REL
-CHECK-NEXT:   Machine:         EM_X86_64
-CHECK-NEXT: Sections:
-CHECK-NEXT:   - Name:            .text
-CHECK-NEXT:     Type:            SHT_PROGBITS
-CHECK-NEXT:     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
-CHECK-NEXT:     AddressAlign:    0x0000000000000004
-CHECK-NEXT:     Content:         4833C0C390
-CHECK-NEXT:   - Name:            .rela.text
-CHECK-NEXT:     Type:            SHT_RELA
-CHECK-NEXT:     Link:            .symtab
-CHECK-NEXT:     AddressAlign:    0x0000000000000008
-CHECK-NEXT:     EntSize:         0x0000000000000018
-CHECK-NEXT:     Info:            .text
-CHECK-NEXT:     Relocations:
-CHECK-NEXT:       - Offset:          0x0000000000000000
-CHECK-NEXT:         Symbol:          ''
-CHECK-NEXT:         Type:            R_X86_64_NONE
-CHECK-NEXT: Symbols:
-CHECK-NEXT:     - Name:            rb_ary_new_capa
-CHECK-NEXT:       Type:            STT_FUNC
-CHECK-NEXT:       Section:         .text
-CHECK-NEXT:       Size:            0x0000000000000005
-CHECK-NEXT:     - Name:            __dtraceenabled_ruby___array-create
-CHECK-NEXT:       Index:            SHN_ABS
-CHECK-NEXT:       Binding:         STB_GLOBAL
-CHECK-NEXT:     - Name:            '$dtrace1316529.rb_ary_new_capa'
-CHECK-NEXT:       Type:            STT_FUNC
-CHECK-NEXT:       Section:         .text
-CHECK-NEXT:       Binding:         STB_GLOBAL
-CHECK-NEXT:       Size:            0x0000000000000005
-CHECK-NEXT:       Visibility:      STV_HIDDEN
diff --git a/llvm/test/Object/obj2yaml-sectiongroup.test b/llvm/test/Object/obj2yaml-sectiongroup.test
deleted file mode 100644 (file)
index 29492a0..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-# Checks that the tool is able to read section groups with ELF.
-RUN: obj2yaml %p/Inputs/sectionGroup.elf.x86-64 > %t1.sectiongroup.yaml
-RUN: FileCheck %s --check-prefix ELF-GROUP < %t1.sectiongroup.yaml
-RUN: yaml2obj %t1.sectiongroup.yaml -o %t2.o.elf
-RUN: llvm-readobj --sections %t2.o.elf | FileCheck %s -check-prefix=SECTIONS
-#ELF-GROUP:  - Name:            .group
-#ELF-GROUP:    Type:            SHT_GROUP
-#ELF-GROUP:    Link:            .symtab
-#ELF-GROUP:    Info:            a
-#ELF-GROUP:    Members:
-#ELF-GROUP:      - SectionOrType:   GRP_COMDAT
-#ELF-GROUP:      - SectionOrType:   .rodata.a
-#SECTIONS: Format: ELF64-x86-64
-#SECTIONS: Arch: x86_64
-#SECTIONS: AddressSize: 64bit
-#SECTIONS:   Section {
-#SECTIONS:     Index: 1
-#SECTIONS:     Name: .group (21)
-#SECTIONS:     Type: SHT_GROUP (0x11)
-#SECTIONS:     Flags [ (0x0)
-#SECTIONS:     ]
-#SECTIONS:     Address: 0x0
-#SECTIONS:     Size: 8
-#SECTIONS:     AddressAlignment: 4
-#SECTIONS:     EntrySize: 4
-#SECTIONS:   }
diff --git a/llvm/test/tools/obj2yaml/coff-long-file-symbol.test b/llvm/test/tools/obj2yaml/coff-long-file-symbol.test
new file mode 100644 (file)
index 0000000..9139068
--- /dev/null
@@ -0,0 +1,18 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s --check-prefix COFF-I386
+
+# COFF-I386: File: filename_with_22_chars
+
+--- !COFF
+header:
+  Machine:         IMAGE_FILE_MACHINE_AMD64
+  Characteristics: [ IMAGE_FILE_RELOCS_STRIPPED, IMAGE_FILE_LINE_NUMS_STRIPPED ]
+sections:
+symbols:
+  - Name:          .file
+    Value:         0
+    SectionNumber: 65534
+    SimpleType:    IMAGE_SYM_TYPE_NULL
+    ComplexType:   IMAGE_SYM_DTYPE_NULL
+    StorageClass:  IMAGE_SYM_CLASS_FILE
+    File:          filename_with_22_chars
+...
@@ -1,3 +1,7 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s --check-prefix COFF-I386
+
+# COFF-I386: Name: .long_section_name
+
 --- !COFF
 header:
   Machine:         IMAGE_FILE_MACHINE_I386
@@ -5,7 +9,5 @@ header:
 sections:
   - Name:            .long_section_name
     Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
-    Alignment:       1
-    SectionData:     ''
 symbols:
 ...
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s --check-prefix COFF-I386
+
+# COFF-I386:     sections:
+# COFF-I386-NEXT:  - Name:            .CRT
+# COFF-I386:     symbols:
+# COFF-I386:       - Name:            '.CRT$XCAA'
+# COFF-I386-NEXT:    Value:           4
+# COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
+# COFF-I386-NEXT:    SectionDefinition:
+# COFF-I386-NEXT:      Length:          4
+# COFF-I386-NEXT:      NumberOfRelocations: 1
+# COFF-I386-NEXT:      NumberOfLinenumbers: 0
+# COFF-I386:       - Name:            '.CRT$XIAA'
+# COFF-I386-NEXT:    Value:           16
+# COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
+# COFF-I386-NEXT:    SectionDefinition:
+# COFF-I386-NEXT:      Length:          4
+# COFF-I386-NEXT:      NumberOfRelocations: 1
+# COFF-I386-NEXT:      NumberOfLinenumbers: 0
+# COFF-I386:       - Name:            '.CRT$XLD'
+# COFF-I386-NEXT:    Value:           36
+# COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
+# COFF-I386-NEXT:    SectionDefinition:
+# COFF-I386-NEXT:      Length:          4
+# COFF-I386-NEXT:      NumberOfRelocations: 1
+# COFF-I386-NEXT:      NumberOfLinenumbers: 0
+# COFF-I386:       - Name:            '.CRT$XLC'
+# COFF-I386-NEXT:    Value:           32
+# COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
+# COFF-I386-NEXT:    SectionDefinition:
+# COFF-I386-NEXT:      Length:          4
+# COFF-I386-NEXT:      NumberOfRelocations: 1
+# COFF-I386-NEXT:      NumberOfLinenumbers: 0
+# COFF-I386:       - Name:            '.CRT$XDZ'
+# COFF-I386-NEXT:    Value:           48
+# COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
+# COFF-I386-NEXT:    SectionDefinition:
+# COFF-I386-NEXT:      Length:          4
+# COFF-I386-NEXT:      NumberOfRelocations: 0
+# COFF-I386-NEXT:      NumberOfLinenumbers: 0
+# COFF-I386:       - Name:            '.CRT$XDA'
+# COFF-I386-NEXT:    Value:           44
+# COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
+# COFF-I386-NEXT:    SectionDefinition:
+# COFF-I386-NEXT:      Length:          4
+# COFF-I386-NEXT:      NumberOfRelocations: 0
+# COFF-I386-NEXT:      NumberOfLinenumbers: 0
+# COFF-I386:       - Name:            '.CRT$XLZ'
+# COFF-I386-NEXT:    Value:           40
+# COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
+# COFF-I386-NEXT:    SectionDefinition:
+# COFF-I386-NEXT:      Length:          4
+# COFF-I386-NEXT:      NumberOfRelocations: 0
+# COFF-I386-NEXT:      NumberOfLinenumbers: 0
+# COFF-I386:       - Name:            '.CRT$XLA'
+# COFF-I386-NEXT:    Value:           28
+# COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
+# COFF-I386-NEXT:    SectionDefinition:
+# COFF-I386-NEXT:      Length:          4
+# COFF-I386-NEXT:      NumberOfRelocations: 0
+# COFF-I386-NEXT:      NumberOfLinenumbers: 0
+# COFF-I386:       - Name:            '.CRT$XIC'
+# COFF-I386-NEXT:    Value:           20
+# COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
+# COFF-I386-NEXT:    SectionDefinition:
+# COFF-I386-NEXT:      Length:          4
+# COFF-I386-NEXT:      NumberOfRelocations: 1
+# COFF-I386-NEXT:      NumberOfLinenumbers: 0
+# COFF-I386:       - Name:            '.CRT$XCZ'
+# COFF-I386-NEXT:    Value:           8
+# COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
+# COFF-I386-NEXT:    SectionDefinition:
+# COFF-I386-NEXT:      Length:          4
+# COFF-I386-NEXT:      NumberOfRelocations: 0
+# COFF-I386-NEXT:      NumberOfLinenumbers: 0
+# COFF-I386:       - Name:            '.CRT$XCA'
+# COFF-I386-NEXT:    Value:           0
+# COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
+# COFF-I386-NEXT:    SectionDefinition:
+# COFF-I386-NEXT:      Length:          4
+# COFF-I386-NEXT:      NumberOfRelocations: 0
+# COFF-I386-NEXT:      NumberOfLinenumbers: 0
+# COFF-I386:       - Name:            '.CRT$XIZ'
+# COFF-I386-NEXT:    Value:           24
+# COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
+# COFF-I386-NEXT:    SectionDefinition:
+# COFF-I386-NEXT:      Length:          4
+# COFF-I386-NEXT:      NumberOfRelocations: 0
+# COFF-I386-NEXT:      NumberOfLinenumbers: 0
+# COFF-I386:       - Name:            '.CRT$XIA'
+# COFF-I386-NEXT:    Value:           12
+# COFF-I386:         StorageClass:    IMAGE_SYM_CLASS_STATIC
+# COFF-I386-NEXT:    SectionDefinition:
+# COFF-I386-NEXT:      Length:          4
+# COFF-I386-NEXT:      NumberOfRelocations: 0
+# COFF-I386-NEXT:      NumberOfLinenumbers: 0
+
 --- !COFF
-header:          
+header:
   Machine:         IMAGE_FILE_MACHINE_I386
   Characteristics: [ IMAGE_FILE_RELOCS_STRIPPED, IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LINE_NUMS_STRIPPED, IMAGE_FILE_32BIT_MACHINE, IMAGE_FILE_DEBUG_STRIPPED ]
-sections:        
+sections:
   - Name:            .CRT
     Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
     Alignment:       4
     SectionData:     0000000030114000000000000000000010104000401640000000000000000000B015400060154000000000000000000000000000
-symbols:         
+symbols:
   - Name:            '.CRT$XCAA'
     Value:           4
     SectionNumber:   1
@@ -1,3 +1,7 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s --check-prefix COFF-I386
+
+# COFF-I386: Characteristics: 0
+
 --- !COFF
 header:
   Machine:         IMAGE_FILE_MACHINE_I386
diff --git a/llvm/test/tools/obj2yaml/no-symbol-reloc.test b/llvm/test/tools/obj2yaml/no-symbol-reloc.test
new file mode 100644 (file)
index 0000000..351aad3
--- /dev/null
@@ -0,0 +1,49 @@
+## Check yaml2obj is able to dump relocations
+## that have no or a zero symbol associated.
+
+# RUN: yaml2obj %s -o %t.o
+# RUN: obj2yaml %t.o | FileCheck %s
+
+# CHECK:      --- !ELF
+# CHECK-NEXT: FileHeader:
+# CHECK-NEXT:   Class:   ELFCLASS64
+# CHECK-NEXT:   Data:    ELFDATA2LSB
+# CHECK-NEXT:   Type:    ET_REL
+# CHECK-NEXT:   Machine: EM_X86_64
+# CHECK-NEXT: Sections:
+# CHECK-NEXT:   - Name:    .text
+# CHECK-NEXT:     Type:    SHT_PROGBITS
+# CHECK-NEXT:     Flags:   [ SHF_ALLOC, SHF_EXECINSTR ]
+# CHECK-NEXT:   - Name:    .rela.text
+# CHECK-NEXT:     Type:    SHT_RELA
+# CHECK-NEXT:     Link:    .symtab
+# CHECK-NEXT:     EntSize: 0x0000000000000018
+# CHECK-NEXT:     Info:    .text
+# CHECK-NEXT:     Relocations:
+# CHECK-NEXT:       - Offset: 0x0000000000000000
+# CHECK-NEXT:         Symbol: ''
+# CHECK-NEXT:         Type:   R_X86_64_NONE
+# CHECK-NEXT:       - Offset: 0x0000000000000004
+# CHECK-NEXT:         Symbol: ''
+# CHECK-NEXT:         Type:   R_X86_64_NONE
+# CHECK-NEXT: ...
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name:  .text
+    Type:  SHT_PROGBITS
+    Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+  - Name:  .rela.text
+    Type:  SHT_RELA
+    Info:  .text
+    Relocations:
+      - Offset: 0x0
+        Type:   R_X86_64_NONE
+      - Offset: 0x4
+        Type:   R_X86_64_NONE
+        Symbol: 0
diff --git a/llvm/test/tools/obj2yaml/section-group.test b/llvm/test/tools/obj2yaml/section-group.test
new file mode 100644 (file)
index 0000000..78af00c
--- /dev/null
@@ -0,0 +1,48 @@
+## Checks that the tool is able to read section groups from ELF.
+
+# RUN: yaml2obj %s > %t1.o
+# RUN: llvm-readobj --elf-section-groups %t1.o | FileCheck %s -check-prefix=OBJ
+# RUN: obj2yaml %t1.o | FileCheck %s --check-prefix YAML
+
+# OBJ:      Groups {
+# OBJ-NEXT:   Group {
+# OBJ-NEXT:     Name: .group
+# OBJ-NEXT:     Index: 1
+# OBJ-NEXT:     Link: 3
+# OBJ-NEXT:     Info: 1
+# OBJ-NEXT:     Type: COMDAT (0x1)
+# OBJ-NEXT:     Signature: signature
+# OBJ-NEXT:     Section(s) in group [
+# OBJ-NEXT:       .rodata (2)
+# OBJ-NEXT:     ]
+# OBJ-NEXT:   }
+# OBJ-NEXT: }
+
+# YAML: - Name: .group
+# YAML:   Type: SHT_GROUP
+# YAML:   Link: .symtab
+# YAML:   Info: signature
+# YAML:   Members:
+# YAML:     - SectionOrType: GRP_COMDAT
+# YAML:     - SectionOrType: .rodata
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .group
+    Type: SHT_GROUP
+    Link: .symtab
+    Info: signature
+    Members:
+      - SectionOrType: GRP_COMDAT
+      - SectionOrType: .rodata
+  - Name: .rodata
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    signature
+    Type:    STT_OBJECT
+    Section: .rodata