forked from OSchip/llvm-project
[elf2] Add 32S and 64 relocations (needed for musl).
It wasn't obvious what the assembly was to generate these relocations, so I did the test with yaml. llvm-svn: 246902
This commit is contained in:
parent
baae538cc6
commit
1b3fffa6e0
|
@ -271,8 +271,12 @@ template <class ELFT> void OutputSection<ELFT>::writeTo(uint8_t *Buf) {
|
|||
SymVA + (RI.r_addend - (P + Offset)));
|
||||
break;
|
||||
case llvm::ELF::R_X86_64_32:
|
||||
case llvm::ELF::R_X86_64_32S:
|
||||
support::endian::write32le(Location, SymVA + RI.r_addend);
|
||||
break;
|
||||
case llvm::ELF::R_X86_64_64:
|
||||
support::endian::write64le(Location, SymVA + RI.r_addend);
|
||||
break;
|
||||
default:
|
||||
llvm::errs() << Twine("unrecognized reloc ") + Twine(Type) << '\n';
|
||||
break;
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
# RUN: yaml2obj -format elf %s -o %t
|
||||
# RUN: lld -flavor gnu2 %t -o %tout
|
||||
# RUN: llvm-objdump -s %tout | FileCheck %s
|
||||
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .text
|
||||
Type: SHT_PROGBITS
|
||||
Size: 512
|
||||
- Name: .rela.text
|
||||
Type: SHT_RELA
|
||||
Info: .text
|
||||
Relocations:
|
||||
- Offset: 0x0000000000000000
|
||||
Symbol: _start
|
||||
Type: R_X86_64_32S
|
||||
- Offset: 0x0000000000000004
|
||||
Symbol: _start
|
||||
Type: R_X86_64_64
|
||||
|
||||
Symbols:
|
||||
Global:
|
||||
- Name: _start
|
||||
Section: .text
|
||||
Value: 0x42
|
||||
|
||||
# CHECK: 0000 42000000 42000000 00000000 00000000
|
Loading…
Reference in New Issue