mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-14 07:09:08 +00:00
[MC] Produce proper section relative relocations for COFF in .debug_frame
The third parameter to Streamer.EmitSymbolValue() is "bool IsSectionRelative = false". For ELF, these debug sections are mapped to address zero, so a normal, absolute address relocation works just fine, but COFF needs a section relative relocation, and COFF is the only target where needsDwarfSectionOffsetDirective() returns true. This matches how EmitSymbolValue is called elsewhere in the same source file. Differential Revision: https://reviews.llvm.org/D70661
This commit is contained in:
parent
0523b5daa7
commit
d4cfd0a451
@ -1701,7 +1701,8 @@ void FrameEmitterImpl::EmitFDE(const MCSymbol &cieStart,
|
||||
MakeStartMinusEndExpr(Streamer, SectionStart, cieStart, 0);
|
||||
emitAbsValue(Streamer, offset, 4);
|
||||
} else {
|
||||
Streamer.EmitSymbolValue(&cieStart, 4);
|
||||
Streamer.EmitSymbolValue(&cieStart, 4,
|
||||
asmInfo->needsDwarfSectionOffsetDirective());
|
||||
}
|
||||
|
||||
// PC Begin
|
||||
|
26
test/MC/COFF/cfi-sections.s
Normal file
26
test/MC/COFF/cfi-sections.s
Normal file
@ -0,0 +1,26 @@
|
||||
// RUN: llvm-mc -filetype=obj -triple x86_64-mingw32 %s -o - | llvm-objdump -r - | FileCheck --check-prefix=COFF_X86_64 %s
|
||||
// RUN: llvm-mc -filetype=obj -triple i686-mingw32 %s -o - | llvm-objdump -r - | FileCheck --check-prefix=COFF_I686 %s
|
||||
|
||||
.cfi_sections .debug_frame
|
||||
|
||||
f1:
|
||||
.cfi_startproc
|
||||
nop
|
||||
.cfi_endproc
|
||||
|
||||
f2:
|
||||
.cfi_startproc
|
||||
nop
|
||||
.cfi_endproc
|
||||
|
||||
// COFF_X86_64: RELOCATION RECORDS FOR [.debug_frame]:
|
||||
// COFF_X86_64-NEXT: {{.*}} IMAGE_REL_AMD64_SECREL .debug_frame
|
||||
// COFF_X86_64-NEXT: {{.*}} IMAGE_REL_AMD64_ADDR64 .text
|
||||
// COFF_X86_64-NEXT: {{.*}} IMAGE_REL_AMD64_SECREL .debug_frame
|
||||
// COFF_X86_64-NEXT: {{.*}} IMAGE_REL_AMD64_ADDR64 .text
|
||||
|
||||
// COFF_I686: RELOCATION RECORDS FOR [.debug_frame]:
|
||||
// COFF_I686-NEXT: {{.*}} IMAGE_REL_I386_SECREL .debug_frame
|
||||
// COFF_I686-NEXT: {{.*}} IMAGE_REL_I386_DIR32 .text
|
||||
// COFF_I686-NEXT: {{.*}} IMAGE_REL_I386_SECREL .debug_frame
|
||||
// COFF_I686-NEXT: {{.*}} IMAGE_REL_I386_DIR32 .text
|
Loading…
Reference in New Issue
Block a user