mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
b34be145e0
Summary: When llvm-objcopy sorts sections during finalization, it only sorts based on the offset, which can cause the group section to come after the sections it contains. This causes link failures when using gold to link objects created by llvm-objcopy. Fix this for now by copying GNU objcopy's behavior of placing SHT_GROUP sections first. In the future, we may want to remove this sorting entirely to more closely preserve the input file layout. This fixes https://bugs.llvm.org/show_bug.cgi?id=42052. Reviewers: jakehehrlich, jhenderson, MaskRay, espindola, alexshap Reviewed By: MaskRay Subscribers: phuongtrang148993, emaste, arichardson, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D62620 llvm-svn: 362973
61 lines
2.0 KiB
Plaintext
61 lines
2.0 KiB
Plaintext
# REQUIRES: zlib
|
|
|
|
# RUN: yaml2obj %p/Inputs/compress-debug-sections.yaml -o %t.o
|
|
# RUN: llvm-objcopy --compress-debug-sections=zlib %t.o %t-compressed.o
|
|
# RUN: llvm-objcopy --decompress-debug-sections %t-compressed.o %t-decompressed.o
|
|
|
|
# RUN: llvm-objdump -s %t.o --section=.debug_foo | FileCheck %s
|
|
# RUN: llvm-objdump -s %t-compressed.o | FileCheck %s --check-prefix=CHECK-COMPRESSED
|
|
# RUN: llvm-readobj --relocations -S %t-compressed.o | FileCheck %s --check-prefix=CHECK-FLAGS
|
|
# RUN: llvm-readobj --relocations -S %t-decompressed.o | FileCheck %s --check-prefix=CHECK-HEADER
|
|
# RUN: llvm-readobj --relocations -S %t.o | FileCheck %s --check-prefix=CHECK-HEADER
|
|
# RUN: llvm-objdump -s %t-decompressed.o --section=.debug_foo | FileCheck %s
|
|
|
|
# CHECK: .debug_foo:
|
|
# CHECK-NEXT: 0000 00000000 00000000
|
|
|
|
# CHECK-HEADER: Name: .debug_foo
|
|
# CHECK-HEADER-NEXT: Type: SHT_PROGBITS
|
|
# CHECK-HEADER-NEXT: Flags [
|
|
# CHECK-HEADER-NEXT: ]
|
|
# CHECK-HEADER-NEXT: Address:
|
|
# CHECK-HEADER-NEXT: Offset:
|
|
# CHECK-HEADER-NEXT: Size: 8
|
|
|
|
# CHECK-COMPRESSED: .debug_foo:
|
|
# CHECK-COMPRESSED: .notdebug_foo:
|
|
|
|
# CHECK-FLAGS: Name: .debug_foo
|
|
# CHECK-FLAGS-NEXT: Type: SHT_PROGBITS
|
|
# CHECK-FLAGS-NEXT: Flags [
|
|
# CHECK-FLAGS-NEXT: SHF_COMPRESSED
|
|
# CHECK-FLAGS-NEXT: ]
|
|
# CHECK-FLAGS-NEXT: Address:
|
|
# CHECK-FLAGS-NEXT: Offset:
|
|
# CHECK-FLAGS-NEXT: Size: 35
|
|
# CHECK-FLAGS-NOT: Name: .debug_foo
|
|
|
|
# CHECK-FLAGS: Name: .notdebug_foo
|
|
# CHECK-FLAGS-NEXT: Type: SHT_PROGBITS
|
|
# CHECK-FLAGS-NEXT: Flags [
|
|
# CHECK-FLAGS-NEXT: ]
|
|
# CHECK-FLAGS-NEXT: Address:
|
|
# CHECK-FLAGS-NEXT: Offset:
|
|
# CHECK-FLAGS-NEXT: Size: 8
|
|
|
|
# CHECK-FLAGS: Name: .rela.debug_foo
|
|
# CHECK-FLAGS-NEXT: Type: SHT_RELA
|
|
# CHECK-FLAGS-NEXT: Flags [
|
|
# CHECK-FLAGS-NEXT: ]
|
|
# CHECK-FLAGS-NEXT: Address:
|
|
# CHECK-FLAGS-NEXT: Offset:
|
|
# CHECK-FLAGS-NEXT: Size:
|
|
# CHECK-FLAGS-NEXT: Link:
|
|
|
|
# CHECK-FLAGS: Relocations [
|
|
# CHECK-FLAGS-NEXT: .rela.debug_foo {
|
|
# CHECK-FLAGS-NEXT: 0x1 R_X86_64_32 .debug_foo 0x0
|
|
# CHECK-FLAGS-NEXT: 0x2 R_X86_64_32 .notdebug_foo 0x0
|
|
# CHECK-FLAGS-NEXT: }
|
|
# CHECK-FLAGS-NEXT: ]
|