mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
Fix COFF section index relocation should be 16 bits, not 32
Original patch by Andrey Guskov! http://reviews.llvm.org/D5651 llvm-svn: 219327
This commit is contained in:
parent
b588ed4621
commit
7661ce203f
@ -166,6 +166,8 @@ void WinCodeViewLineTables::emitDebugInfoForFunction(const Function *GV) {
|
||||
// Identify the function this subsection is for.
|
||||
Asm->OutStreamer.EmitCOFFSecRel32(Fn);
|
||||
Asm->OutStreamer.EmitCOFFSectionIndex(Fn);
|
||||
// Insert padding after a 16-bit section index.
|
||||
Asm->EmitInt16(0);
|
||||
|
||||
// Length of the function's code, in bytes.
|
||||
EmitLabelDiff(Asm->OutStreamer, Fn, FI.End);
|
||||
|
@ -163,7 +163,7 @@ void MCWinCOFFStreamer::EmitCOFFSectionIndex(MCSymbol const *Symbol) {
|
||||
const MCSymbolRefExpr *SRE = MCSymbolRefExpr::Create(Symbol, getContext());
|
||||
MCFixup Fixup = MCFixup::Create(DF->getContents().size(), SRE, FK_SecRel_2);
|
||||
DF->getFixups().push_back(Fixup);
|
||||
DF->getContents().resize(DF->getContents().size() + 4, 0);
|
||||
DF->getContents().resize(DF->getContents().size() + 2, 0);
|
||||
}
|
||||
|
||||
void MCWinCOFFStreamer::EmitCOFFSecRel32(MCSymbol const *Symbol) {
|
||||
|
@ -28,6 +28,7 @@
|
||||
; X86-NEXT: [[F2_START]]:
|
||||
; X86-NEXT: .secrel32 _f
|
||||
; X86-NEXT: .secidx _f
|
||||
; X86-NEXT: .short 0
|
||||
; X86-NEXT: .long [[END_OF_F]]-_f
|
||||
; X86-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
|
||||
; X86-NEXT: .long 0
|
||||
@ -97,6 +98,7 @@
|
||||
; X64-NEXT: [[F2_START]]:
|
||||
; X64-NEXT: .secrel32 f
|
||||
; X64-NEXT: .secidx f
|
||||
; X64-NEXT: .short 0
|
||||
; X64-NEXT: .long [[END_OF_F]]-f
|
||||
; X64-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
|
||||
; X64-NEXT: .long 0
|
||||
|
@ -35,6 +35,7 @@
|
||||
; X86-NEXT: [[F2_START]]:
|
||||
; X86-NEXT: .secrel32 _f
|
||||
; X86-NEXT: .secidx _f
|
||||
; X86-NEXT: .short 0
|
||||
; X86-NEXT: .long [[END_OF_F]]-_f
|
||||
; Segment for file 'D:\\one.c' begins
|
||||
; X86-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
|
||||
@ -129,6 +130,7 @@
|
||||
; X64-NEXT: [[F2_START]]:
|
||||
; X64-NEXT: .secrel32 f
|
||||
; X64-NEXT: .secidx f
|
||||
; X64-NEXT: .short 0
|
||||
; X64-NEXT: .long [[END_OF_F]]-f
|
||||
; Segment for file 'D:\\input.c' begins
|
||||
; X64-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
|
||||
|
@ -58,6 +58,7 @@
|
||||
; X86-NEXT: [[F2_START]]:
|
||||
; X86-NEXT: .secrel32 _x
|
||||
; X86-NEXT: .secidx _x
|
||||
; X86-NEXT: .short 0
|
||||
; X86-NEXT: .long [[END_OF_X]]-_x
|
||||
; X86-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
|
||||
; X86-NEXT: .long 0
|
||||
@ -75,6 +76,7 @@
|
||||
; X86-NEXT: [[F2_START]]:
|
||||
; X86-NEXT: .secrel32 _y
|
||||
; X86-NEXT: .secidx _y
|
||||
; X86-NEXT: .short 0
|
||||
; X86-NEXT: .long [[END_OF_Y]]-_y
|
||||
; X86-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
|
||||
; X86-NEXT: .long 0
|
||||
@ -92,6 +94,7 @@
|
||||
; X86-NEXT: [[F2_START]]:
|
||||
; X86-NEXT: .secrel32 _f
|
||||
; X86-NEXT: .secidx _f
|
||||
; X86-NEXT: .short 0
|
||||
; X86-NEXT: .long [[END_OF_F]]-_f
|
||||
; X86-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
|
||||
; X86-NEXT: .long 0
|
||||
@ -208,6 +211,7 @@
|
||||
; X64-NEXT: [[F2_START]]:
|
||||
; X64-NEXT: .secrel32 x
|
||||
; X64-NEXT: .secidx x
|
||||
; X64-NEXT: .short 0
|
||||
; X64-NEXT: .long [[END_OF_X]]-x
|
||||
; X64-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
|
||||
; X64-NEXT: .long 0
|
||||
@ -227,6 +231,7 @@
|
||||
; X64-NEXT: [[F2_START]]:
|
||||
; X64-NEXT: .secrel32 y
|
||||
; X64-NEXT: .secidx y
|
||||
; X64-NEXT: .short 0
|
||||
; X64-NEXT: .long [[END_OF_Y]]-y
|
||||
; X64-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
|
||||
; X64-NEXT: .long 0
|
||||
@ -246,6 +251,7 @@
|
||||
; X64-NEXT: [[F2_START]]:
|
||||
; X64-NEXT: .secrel32 f
|
||||
; X64-NEXT: .secidx f
|
||||
; X64-NEXT: .short 0
|
||||
; X64-NEXT: .long [[END_OF_F]]-f
|
||||
; X64-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
|
||||
; X64-NEXT: .long 0
|
||||
|
@ -26,6 +26,7 @@
|
||||
; X86-NEXT: [[F2_START]]:
|
||||
; X86-NEXT: .secrel32 _f
|
||||
; X86-NEXT: .secidx _f
|
||||
; X86-NEXT: .short 0
|
||||
; X86-NEXT: .long [[END_OF_F]]-_f
|
||||
; X86-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
|
||||
; X86-NEXT: .long 0
|
||||
@ -88,6 +89,7 @@
|
||||
; X64-NEXT: [[F2_START]]:
|
||||
; X64-NEXT: .secrel32 f
|
||||
; X64-NEXT: .secidx f
|
||||
; X64-NEXT: .short 0
|
||||
; X64-NEXT: .long [[END_OF_F]]-f
|
||||
; X64-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
|
||||
; X64-NEXT: .long 0
|
||||
|
@ -4,7 +4,9 @@
|
||||
|
||||
Lfoo:
|
||||
.secidx Lfoo
|
||||
.short 0
|
||||
.secidx Lbar
|
||||
.short 0
|
||||
|
||||
.section spam
|
||||
Lbar:
|
||||
|
Loading…
Reference in New Issue
Block a user