1
- diff -rpu llvm-3.8.0/include/llvm/MC/MCStreamer.h llvm-3.8.0-reloc/include/llvm/MC/MCStreamer.h
2
- --- llvm-3.8.0/include/llvm/MC/MCStreamer.h 2016-01-12 08:38:15.000000000 -0500
3
- +++ llvm-3.8.0-reloc/include/llvm/MC/MCStreamer.h 2016-05-23 18:54:01.830143100 -0400
4
- @@ -456,7 +456,7 @@ public:
1
+ diff --git a/include/llvm/MC/MCStreamer.h b/include/llvm/MC/MCStreamer.h
2
+ index 6b9b8a1..0113664 100644
3
+ --- a/include/llvm/MC/MCStreamer.h
4
+ +++ b/include/llvm/MC/MCStreamer.h
5
+ @@ -452,7 +452,7 @@ public:
5
6
/// \brief Emits a COFF section relative relocation.
6
7
///
7
8
/// \param Symbol - Symbol the section relative relocation should point to.
8
9
- virtual void EmitCOFFSecRel32(MCSymbol const *Symbol);
9
10
+ virtual void EmitCOFFSecRel32(MCSymbol const *Symbol, uint64_t Offset);
10
-
11
+
11
12
/// \brief Emit an ELF .size directive.
12
13
///
13
- diff -rpu llvm-3.8.0/include/llvm/MC/MCWinCOFFStreamer.h llvm-3.8.0-reloc/include/llvm/MC/MCWinCOFFStreamer.h
14
- --- llvm-3.8.0/include/llvm/MC/MCWinCOFFStreamer.h 2015-11-17 05:00:43.000000000 -0500
15
- +++ llvm-3.8.0-reloc/include/llvm/MC/MCWinCOFFStreamer.h 2016-05-23 18:54:01.845722400 -0400
14
+ diff --git a/include/llvm/MC/MCWinCOFFStreamer.h b/include/llvm/MC/MCWinCOFFStreamer.h
15
+ index 6fbc754..500b1c0 100644
16
+ --- a/include/llvm/MC/MCWinCOFFStreamer.h
17
+ +++ b/include/llvm/MC/MCWinCOFFStreamer.h
16
18
@@ -52,7 +52,7 @@ public:
17
19
void EndCOFFSymbolDef() override;
18
20
void EmitCOFFSafeSEH(MCSymbol const *Symbol) override;
@@ -22,34 +24,37 @@ diff -rpu llvm-3.8.0/include/llvm/MC/MCWinCOFFStreamer.h llvm-3.8.0-reloc/includ
22
24
void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
23
25
unsigned ByteAlignment) override;
24
26
void EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,
25
- diff -rpu llvm-3.8.0/lib/CodeGen/AsmPrinter/AsmPrinter.cpp llvm-3.8.0-reloc/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
26
- --- llvm-3.8.0/lib/CodeGen/AsmPrinter/AsmPrinter.cpp 2016-01-12 20:18:13.000000000 -0500
27
- +++ llvm-3.8.0-reloc/lib/CodeGen/AsmPrinter/AsmPrinter.cpp 2016-05-23 18:54:01.845722400 -0400
28
- @@ -1729,7 +1729,7 @@ void AsmPrinter::EmitLabelPlusOffset(con
27
+ diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
28
+ index 125047e..3483412 100644
29
+ --- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
30
+ +++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
31
+ @@ -1598,7 +1598,7 @@ void AsmPrinter::EmitLabelPlusOffset(const MCSymbol *Label, uint64_t Offset,
29
32
unsigned Size,
30
33
bool IsSectionRelative) const {
31
34
if (MAI->needsDwarfSectionOffsetDirective() && IsSectionRelative) {
32
35
- OutStreamer->EmitCOFFSecRel32(Label);
33
36
+ OutStreamer->EmitCOFFSecRel32(Label, Offset);
34
37
return;
35
38
}
36
-
37
- diff -rpu llvm-3.8.0/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp llvm-3.8.0-reloc/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
38
- --- llvm-3.8.0/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp 2015-11-17 19:34:10.000000000 -0500
39
- +++ llvm-3.8.0-reloc/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp 2016-05-23 20:17:42.105695800 -0400
40
- @@ -150,7 +150,7 @@ void AsmPrinter::emitDwarfSymbolReferenc
39
+
40
+ diff --git a/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp b/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
41
+ index ad180b6..6bd7dfb 100644
42
+ --- a/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
43
+ +++ b/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
44
+ @@ -162,7 +162,7 @@ void AsmPrinter::emitDwarfSymbolReference(const MCSymbol *Label,
41
45
if (!ForceOffset) {
42
46
// On COFF targets, we have to emit the special .secrel32 directive.
43
47
if (MAI->needsDwarfSectionOffsetDirective()) {
44
48
- OutStreamer->EmitCOFFSecRel32(Label);
45
49
+ OutStreamer->EmitCOFFSecRel32(Label, /*offset*/0);
46
50
return;
47
51
}
48
-
49
- diff -rpu llvm-3.8.0/lib/CodeGen/AsmPrinter/DIE.cpp llvm-3.8.0-reloc/lib/CodeGen/AsmPrinter/DIE.cpp
50
- --- llvm-3.8.0/lib/CodeGen/AsmPrinter/DIE.cpp 2016-01-07 09:28:20.000000000 -0500
51
- +++ llvm-3.8.0-reloc/lib/CodeGen/AsmPrinter/DIE.cpp 2016-05-23 19:08:35.434799900 -0400
52
- @@ -487,7 +487,7 @@ void DIEEntry::EmitValue(const AsmPrinte
52
+
53
+ diff --git a/lib/CodeGen/AsmPrinter/DIE.cpp b/lib/CodeGen/AsmPrinter/DIE.cpp
54
+ index 46dbc76..70b2014 100644
55
+ --- a/lib/CodeGen/AsmPrinter/DIE.cpp
56
+ +++ b/lib/CodeGen/AsmPrinter/DIE.cpp
57
+ @@ -457,7 +457,7 @@ void DIEEntry::EmitValue(const AsmPrinter *AP, dwarf::Form Form) const {
53
58
Addr += CU->getDebugInfoOffset();
54
59
if (AP->MAI->doesDwarfUseRelocationsAcrossSections())
55
60
AP->EmitLabelPlusOffset(CU->getSectionSym(), Addr,
@@ -58,10 +63,11 @@ diff -rpu llvm-3.8.0/lib/CodeGen/AsmPrinter/DIE.cpp llvm-3.8.0-reloc/lib/CodeGen
58
63
else
59
64
AP->OutStreamer->EmitIntValue(Addr, DIEEntry::getRefAddrSize(AP));
60
65
} else
61
- diff -rpu llvm-3.8.0/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp llvm-3.8.0-reloc/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp
62
- --- llvm-3.8.0/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp 2016-01-12 20:05:23.000000000 -0500
63
- +++ llvm-3.8.0-reloc/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp 2016-05-23 21:19:31.454460900 -0400
64
- @@ -231,7 +231,7 @@ void WinCodeViewLineTables::emitDebugInf
66
+ diff --git a/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp b/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp
67
+ index 6610ac7..3b2188a 100644
68
+ --- a/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp
69
+ +++ b/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp
70
+ @@ -221,7 +221,7 @@ void WinCodeViewLineTables::emitDebugInfoForFunction(const Function *GV) {
65
71
// code is located and what's its size:
66
72
EmitLabelDiff(*Asm->OutStreamer, Fn, FI.End);
67
73
Asm->OutStreamer->EmitFill(12, 0);
@@ -70,19 +76,20 @@ diff -rpu llvm-3.8.0/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp llvm-3.8.0
70
76
Asm->OutStreamer->EmitCOFFSectionIndex(Fn);
71
77
Asm->EmitInt8(0);
72
78
// Emit the function display name as a null-terminated string.
73
- @@ -272 ,7 +272 ,7 @@ void WinCodeViewLineTables::emitDebugInf
79
+ @@ -262 ,7 +262 ,7 @@ void WinCodeViewLineTables::emitDebugInfoForFunction(const Function *GV) {
74
80
Asm->OutStreamer->EmitLabel(LineTableBegin);
75
-
81
+
76
82
// Identify the function this subsection is for.
77
83
- Asm->OutStreamer->EmitCOFFSecRel32(Fn);
78
84
+ Asm->OutStreamer->EmitCOFFSecRel32(Fn, /*offset*/0);
79
85
Asm->OutStreamer->EmitCOFFSectionIndex(Fn);
80
86
// Insert flags after a 16-bit section index.
81
87
Asm->EmitInt16(COFF::DEBUG_LINE_TABLES_HAVE_COLUMN_RECORDS);
82
- diff -rpu llvm-3.8.0/lib/MC/MCAsmStreamer.cpp llvm-3.8.0-reloc/lib/MC/MCAsmStreamer.cpp
83
- --- llvm-3.8.0/lib/MC/MCAsmStreamer.cpp 2015-11-12 08:33:00.000000000 -0500
84
- +++ llvm-3.8.0-reloc/lib/MC/MCAsmStreamer.cpp 2016-05-23 18:54:01.859727900 -0400
85
- @@ -143,7 +143,7 @@ public:
88
+ diff --git a/lib/MC/MCAsmStreamer.cpp b/lib/MC/MCAsmStreamer.cpp
89
+ index 227c937..c2f3e6e 100644
90
+ --- a/lib/MC/MCAsmStreamer.cpp
91
+ +++ b/lib/MC/MCAsmStreamer.cpp
92
+ @@ -138,7 +138,7 @@ public:
86
93
void EndCOFFSymbolDef() override;
87
94
void EmitCOFFSafeSEH(MCSymbol const *Symbol) override;
88
95
void EmitCOFFSectionIndex(MCSymbol const *Symbol) override;
@@ -91,55 +98,58 @@ diff -rpu llvm-3.8.0/lib/MC/MCAsmStreamer.cpp llvm-3.8.0-reloc/lib/MC/MCAsmStrea
91
98
void emitELFSize(MCSymbolELF *Symbol, const MCExpr *Value) override;
92
99
void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
93
100
unsigned ByteAlignment) override;
94
- @@ -525 ,7 +525 ,7 @@ void MCAsmStreamer::EmitCOFFSectionIndex
101
+ @@ -514 ,7 +514 ,7 @@ void MCAsmStreamer::EmitCOFFSectionIndex(MCSymbol const *Symbol) {
95
102
EmitEOL();
96
103
}
97
-
104
+
98
105
- void MCAsmStreamer::EmitCOFFSecRel32(MCSymbol const *Symbol) {
99
106
+ void MCAsmStreamer::EmitCOFFSecRel32(MCSymbol const *Symbol, uint64_t Offset) {
100
107
OS << "\t.secrel32\t";
101
108
Symbol->print(OS, MAI);
102
109
EmitEOL();
103
- diff -rpu llvm-3.8.0/lib/MC/MCParser/COFFAsmParser.cpp llvm-3.8.0-reloc/lib/MC/MCParser/COFFAsmParser.cpp
104
- --- llvm-3.8.0/lib/MC/MCParser/COFFAsmParser.cpp 2015-11-18 01:02:15.000000000 -0500
105
- +++ llvm-3.8.0-reloc/lib/MC/MCParser/COFFAsmParser.cpp 2016-05-23 18:54:15.937859600 -0400
106
- @@ -450,7 +450,7 @@ bool COFFAsmParser::ParseDirectiveSecRel
110
+ diff --git a/lib/MC/MCParser/COFFAsmParser.cpp b/lib/MC/MCParser/COFFAsmParser.cpp
111
+ index f09bce0..39a9ad7 100644
112
+ --- a/lib/MC/MCParser/COFFAsmParser.cpp
113
+ +++ b/lib/MC/MCParser/COFFAsmParser.cpp
114
+ @@ -451,7 +451,7 @@ bool COFFAsmParser::ParseDirectiveSecRel32(StringRef, SMLoc) {
107
115
MCSymbol *Symbol = getContext().getOrCreateSymbol(SymbolID);
108
-
116
+
109
117
Lex();
110
118
- getStreamer().EmitCOFFSecRel32(Symbol);
111
119
+ getStreamer().EmitCOFFSecRel32(Symbol, /*Offset=*/0);
112
120
return false;
113
121
}
114
-
115
- diff -rpu llvm-3.8.0/lib/MC/MCStreamer.cpp llvm-3.8.0-reloc/lib/MC/MCStreamer.cpp
116
- --- llvm-3.8.0/lib/MC/MCStreamer.cpp 2015-11-04 18:59:18.000000000 -0500
117
- +++ llvm-3.8.0-reloc/lib/MC/MCStreamer.cpp 2016-05-23 18:54:15.953281800 -0400
118
- @@ -119,7 +119,7 @@ void MCStreamer::EmitSymbolValue(const M
122
+
123
+ diff --git a/lib/MC/MCStreamer.cpp b/lib/MC/MCStreamer.cpp
124
+ index 7fbbbd9..c9e8958 100644
125
+ --- a/lib/MC/MCStreamer.cpp
126
+ +++ b/lib/MC/MCStreamer.cpp
127
+ @@ -120,7 +120,7 @@ void MCStreamer::EmitSymbolValue(const MCSymbol *Sym, unsigned Size,
119
128
if (!IsSectionRelative)
120
129
EmitValueImpl(MCSymbolRefExpr::create(Sym, getContext()), Size);
121
130
else
122
131
- EmitCOFFSecRel32(Sym);
123
132
+ EmitCOFFSecRel32(Sym, /*Offset=*/0);
124
133
}
125
-
134
+
126
135
void MCStreamer::EmitGPRel64Value(const MCExpr *Value) {
127
- @@ -570 ,7 +570 ,7 @@ void MCStreamer::EmitCOFFSafeSEH(MCSymbo
136
+ @@ -562 ,7 +562 ,7 @@ void MCStreamer::EmitCOFFSafeSEH(MCSymbol const *Symbol) {
128
137
void MCStreamer::EmitCOFFSectionIndex(MCSymbol const *Symbol) {
129
138
}
130
-
139
+
131
140
- void MCStreamer::EmitCOFFSecRel32(MCSymbol const *Symbol) {
132
141
+ void MCStreamer::EmitCOFFSecRel32(MCSymbol const *Symbol, uint64_t Offset) {
133
142
}
134
-
143
+
135
144
/// EmitRawText - If this file is backed by an assembly streamer, this dumps
136
- diff -rpu llvm-3.8.0/lib/MC/WinCOFFStreamer.cpp llvm-3.8.0-reloc/lib/MC/WinCOFFStreamer.cpp
137
- --- llvm-3.8.0/lib/MC/WinCOFFStreamer.cpp 2015-11-17 05:00:43.000000000 -0500
138
- +++ llvm-3.8.0-reloc/lib/MC/WinCOFFStreamer.cpp 2016-06-25 22:00:26.530421900 -0400
139
- @@ -199,14 +199,21 @@ void MCWinCOFFStreamer::EmitCOFFSectionI
145
+ diff --git a/lib/MC/WinCOFFStreamer.cpp b/lib/MC/WinCOFFStreamer.cpp
146
+ index 36dd691..d6c91db 100644
147
+ --- a/lib/MC/WinCOFFStreamer.cpp
148
+ +++ b/lib/MC/WinCOFFStreamer.cpp
149
+ @@ -192,11 +192,18 @@ void MCWinCOFFStreamer::EmitCOFFSectionIndex(MCSymbol const *Symbol) {
140
150
DF->getContents().resize(DF->getContents().size() + 2, 0);
141
151
}
142
-
152
+
143
153
- void MCWinCOFFStreamer::EmitCOFFSecRel32(MCSymbol const *Symbol) {
144
154
+ void MCWinCOFFStreamer::EmitCOFFSecRel32(MCSymbol const *Symbol, uint64_t Offset) {
145
155
MCDataFragment *DF = getOrCreateDataFragment();
@@ -157,7 +167,4 @@ diff -rpu llvm-3.8.0/lib/MC/WinCOFFStreamer.cpp llvm-3.8.0-reloc/lib/MC/WinCOFFS
157
167
+ // Emit 4 bytes (zeros) to the object file.
158
168
DF->getContents().resize(DF->getContents().size() + 4, 0);
159
169
}
160
-
161
- void MCWinCOFFStreamer::EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
162
- unsigned ByteAlignment) {
163
- assert((!Symbol->isInSection() ||
170
+
0 commit comments