Files
clang-p2996/lld/test/ELF/reloc-sec-before-relocated.test
Georgii Rymar af16a45683 [LLD][ELF] - Allow relocation sections to appear before their target sections.
It allows handling cases when we have SHT_REL[A] sections before target
sections in objects.

This fixes https://bugs.llvm.org/show_bug.cgi?id=46632

which says: "Normally it is not what compilers would emit. We have to support it,
because some custom tools might want to use this feature, which is not restricted by ELF gABI"

Differential revision: https://reviews.llvm.org/D83469
2020-07-13 13:59:54 +03:00

39 lines
1.2 KiB
Plaintext

## If the section header index of a SHT_REL[A] section is smaller than the
## section header index of the relocated section, we should handle it properly.
## Normally it is not what compilers would emit, but some custom tools might
## want to use this feature, which is not restricted by ELF gABI.
## GNU ld supports this as well.
# RUN: yaml2obj %s -DTYPE=SHT_RELA -o %t1.o
# RUN: ld.lld -shared %t1.o -o %t1
# RUN: llvm-readelf --relocs %t1 | FileCheck %s
# RUN: yaml2obj %s -DTYPE=SHT_REL -o %t2.o
# RUN: ld.lld -shared %t2.o -o %t2
# RUN: llvm-readelf --relocs %t2 | FileCheck %s
## Check we handle the relocation properly.
# CHECK: Relocation section '.rela.dyn' at offset 0x238 contains 1 entries:
# CHECK-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend
# CHECK-NEXT: 00000000000022f0 0000000100000001 R_X86_64_64 0000000000000000 foo + 0
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_X86_64
Sections:
- Name: .relx.data
Type: [[TYPE]]
Info: .data
Relocations:
- Symbol: foo
Type: R_X86_64_64
- Name: .data
Type: SHT_PROGBITS
Flags: [ SHF_ALLOC, SHF_WRITE ]
Symbols:
- Name: foo
Binding: STB_GLOBAL