When --compress-debug-sections is given, llvm-objcopy removes the uncompressed sections and adds compressed to the section list. This makes all the pointers to old sections to be outdated. Currently, code already has logic for replacing the target sections of the relocation sections. But we also have to update the relocations by themselves. This fixes https://bugs.llvm.org/show_bug.cgi?id=40885. Differential revision: https://reviews.llvm.org/D58960 llvm-svn: 355821
65 lines
2.1 KiB
Plaintext
65 lines
2.1 KiB
Plaintext
# REQUIRES: zlib
|
|
|
|
# RUN: yaml2obj %p/Inputs/compress-debug-sections.yaml -o %t.o
|
|
# RUN: llvm-objcopy --compress-debug-sections=zlib-gnu %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: Index: 1
|
|
# CHECK-HEADER-NEXT: 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: .zdebug_foo:
|
|
# CHECK-COMPRESSED: ZLIB
|
|
# CHECK-COMPRESSED: .notdebug_foo:
|
|
|
|
# CHECK-FLAGS-NOT: Name: .debug_foo
|
|
# CHECK-FLAGS: Index: 1
|
|
# CHECK-FLAGS-NEXT: Name: .zdebug_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: 23
|
|
|
|
# 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-NEXT: Info: 1
|
|
|
|
# CHECK-FLAGS: Relocations [
|
|
# CHECK-FLAGS-NEXT: .rela.debug_foo {
|
|
# CHECK-FLAGS-NEXT: 0x1 R_X86_64_32 .zdebug_foo 0x0
|
|
# CHECK-FLAGS-NEXT: 0x2 R_X86_64_32 .notdebug_foo 0x0
|
|
# CHECK-FLAGS-NEXT: }
|
|
# CHECK-FLAGS-NEXT: ]
|
|
|