diff options
author | George Rimar <grimar@accesssoftek.com> | 2019-03-22 10:24:37 +0000 |
---|---|---|
committer | George Rimar <grimar@accesssoftek.com> | 2019-03-22 10:24:37 +0000 |
commit | 73e1c4a0309d3c81ad21f2c769d33222f6615abb (patch) | |
tree | 66ca70e86fda2ffc0f78950da1f6209f1312731b /llvm/test/tools/llvm-objcopy/ELF | |
parent | c040d5de25f50887170e056dc854fe0a82e04640 (diff) | |
download | bcm5719-llvm-73e1c4a0309d3c81ad21f2c769d33222f6615abb.tar.gz bcm5719-llvm-73e1c4a0309d3c81ad21f2c769d33222f6615abb.zip |
[llvm-objcopy] - Implement replaceSectionReferences for GroupSection class.
Currently, llvm-objcopy incorrectly handles compression and decompression of the
sections from COMDAT groups, because we do not implement the
replaceSectionReferences for this type of the sections.
The patch does that.
Differential revision: https://reviews.llvm.org/D59638
llvm-svn: 356738
Diffstat (limited to 'llvm/test/tools/llvm-objcopy/ELF')
-rw-r--r-- | llvm/test/tools/llvm-objcopy/ELF/Inputs/compress-debug-sections.yaml | 19 | ||||
-rw-r--r-- | llvm/test/tools/llvm-objcopy/ELF/compress-debug-sections-groups.test | 53 |
2 files changed, 72 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objcopy/ELF/Inputs/compress-debug-sections.yaml b/llvm/test/tools/llvm-objcopy/ELF/Inputs/compress-debug-sections.yaml index a3c607cc72b..15fb7fdf58c 100644 --- a/llvm/test/tools/llvm-objcopy/ELF/Inputs/compress-debug-sections.yaml +++ b/llvm/test/tools/llvm-objcopy/ELF/Inputs/compress-debug-sections.yaml @@ -25,6 +25,23 @@ Sections: - Name: .debug_bar Type: SHT_PROGBITS Content: 0000000000000000 + - Name: .group + Type: SHT_GROUP + Link: .symtab + EntSize: 0x0000000000000004 + Info: groupname + Members: + - SectionOrType: GRP_COMDAT + - SectionOrType: .text.in.group + - SectionOrType: .debug_in_group + - Name: .text.in.group + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR, SHF_GROUP ] + Content: '00' + - Name: .debug_in_group + Type: SHT_PROGBITS + Flags: [ SHF_GROUP ] + Content: '00' Symbols: Global: - Name: .debug_foo @@ -35,4 +52,6 @@ Symbols: Section: .notdebug_foo - Name: .Linfo_string0 Section: .debug_bar + - Name: groupname + Section: .group ... diff --git a/llvm/test/tools/llvm-objcopy/ELF/compress-debug-sections-groups.test b/llvm/test/tools/llvm-objcopy/ELF/compress-debug-sections-groups.test new file mode 100644 index 00000000000..a72ecbfc04c --- /dev/null +++ b/llvm/test/tools/llvm-objcopy/ELF/compress-debug-sections-groups.test @@ -0,0 +1,53 @@ +# REQUIRES: zlib + +## In this test, we check how llvm-objcopy handles compression/decompression +## of debug sections included in a COMDAT group. + +# RUN: yaml2obj %p/Inputs/compress-debug-sections.yaml -o %t.o + +## Check compression of debug sections. +# RUN: llvm-objcopy --compress-debug-sections %t.o %t-compressed.o +# RUN: llvm-readobj -s -elf-section-groups %t-compressed.o | \ +# RUN: FileCheck %s --check-prefixes=CHECK,COMPRESS + +## Check zlib-gnu compression of debug sections. +# RUN: llvm-objcopy --compress-debug-sections=zlib-gnu %t.o %t-compressed-gnu.o +# RUN: llvm-readobj -s -elf-section-groups %t-compressed-gnu.o | \ +# RUN: FileCheck %s --check-prefixes=CHECK,COMPRESSZLIB + +## Check decompression of debug sections. +# RUN: llvm-objcopy --decompress-debug-sections %t-compressed.o %t-decompressed.o +# RUN: llvm-readobj -elf-section-groups %t-decompressed.o | \ +# RUN: FileCheck %s --check-prefixes=CHECK,DECOMPRESS + +## Check decompression of zlib-gnu debug sections. +# RUN: llvm-objcopy --decompress-debug-sections %t-compressed-gnu.o %t-decompressed-gnu.o +# RUN: llvm-readobj -elf-section-groups %t-decompressed-gnu.o | \ +# RUN: FileCheck %s --check-prefixes=CHECK,DECOMPRESS + +# COMPRESSZLIB: Name: .zdebug_in_group +# COMPRESSZLIB-NEXT: Type: SHT_PROGBITS +# COMPRESSZLIB-NEXT: Flags [ +# COMPRESSZLIB-NEXT: SHF_GROUP +# COMPRESSZLIB-NEXT: ] + +# COMPRESS: Name: .debug_in_group +# COMPRESS-NEXT: Type: SHT_PROGBITS +# COMPRESS-NEXT: Flags [ +# COMPRESS-NEXT: SHF_COMPRESSED +# COMPRESS-NEXT: SHF_GROUP +# COMPRESS-NEXT: ] + +# CHECK: Group { +# CHECK-NEXT: Name: .group +# CHECK-NEXT: Index: +# CHECK-NEXT: Link: +# CHECK-NEXT: Info: +# CHECK-NEXT: Type: COMDAT +# CHECK-NEXT: Signature: groupname +# CHECK-NEXT: Section(s) in group [ +# CHECK-NEXT: .text.in.group +# COMPRESSZLIB-NEXT: .zdebug_in_group +# COMPRESS-NEXT: .debug_in_group +# DECOMPRESS-NEXT: .debug_in_group +# CHECK-NEXT: ] |