Skip to content

Commit 1193f62

Browse files
committed
MachObjectWriter: Remove the MCAssembler argument from getSymbolAddress
1 parent 5599e42 commit 1193f62

File tree

7 files changed

+41
-42
lines changed

7 files changed

+41
-42
lines changed

llvm/include/llvm/MC/MCLinkerOptimizationHint.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ class MCLOHDirective {
108108
/// Emit this directive in \p OutStream using the information available
109109
/// in the given \p ObjWriter and \p Layout to get the address of the
110110
/// arguments within the object file.
111-
void emit_impl(const MCAssembler &Asm, raw_ostream &OutStream,
111+
void emit_impl(raw_ostream &OutStream,
112112
const MachObjectWriter &ObjWriter) const;
113113

114114
public:

llvm/include/llvm/MC/MCMachObjectWriter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ class MachObjectWriter final : public MCObjectWriter {
208208
uint64_t getSectionAddress(const MCSection *Sec) const {
209209
return SectionAddress.lookup(Sec);
210210
}
211-
uint64_t getSymbolAddress(const MCSymbol &S, const MCAssembler &Asm) const;
211+
uint64_t getSymbolAddress(const MCSymbol &S) const;
212212

213213
uint64_t getFragmentAddress(const MCAssembler &Asm,
214214
const MCFragment *Fragment) const;

llvm/lib/MC/MCLinkerOptimizationHint.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,20 @@ using namespace llvm;
2323
// - Its argN.
2424
// <arg1> to <argN> are absolute addresses in the object file, i.e.,
2525
// relative addresses from the beginning of the object file.
26-
void MCLOHDirective::emit_impl(const MCAssembler &Asm, raw_ostream &OutStream,
26+
void MCLOHDirective::emit_impl(raw_ostream &OutStream,
2727
const MachObjectWriter &ObjWriter
2828

2929
) const {
3030
encodeULEB128(Kind, OutStream);
3131
encodeULEB128(Args.size(), OutStream);
3232
for (const MCSymbol *Arg : Args)
33-
encodeULEB128(ObjWriter.getSymbolAddress(*Arg, Asm), OutStream);
33+
encodeULEB128(ObjWriter.getSymbolAddress(*Arg), OutStream);
3434
}
3535

3636
void MCLOHDirective::emit(const MCAssembler &Asm,
3737
MachObjectWriter &ObjWriter) const {
3838
raw_ostream &OutStream = ObjWriter.W.OS;
39-
emit_impl(Asm, OutStream, ObjWriter);
39+
emit_impl(OutStream, ObjWriter);
4040
}
4141

4242
uint64_t MCLOHDirective::getEmitSize(const MCAssembler &Asm,
@@ -54,6 +54,6 @@ uint64_t MCLOHDirective::getEmitSize(const MCAssembler &Asm,
5454
};
5555

5656
raw_counting_ostream OutStream;
57-
emit_impl(Asm, OutStream, ObjWriter);
57+
emit_impl(OutStream, ObjWriter);
5858
return OutStream.tell();
5959
}

llvm/lib/MC/MachObjectWriter.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -94,16 +94,15 @@ MachObjectWriter::getFragmentAddress(const MCAssembler &Asm,
9494
Asm.getFragmentOffset(*Fragment);
9595
}
9696

97-
uint64_t MachObjectWriter::getSymbolAddress(const MCSymbol &S,
98-
const MCAssembler &Asm) const {
97+
uint64_t MachObjectWriter::getSymbolAddress(const MCSymbol &S) const {
9998
// If this is a variable, then recursively evaluate now.
10099
if (S.isVariable()) {
101100
if (const MCConstantExpr *C =
102101
dyn_cast<const MCConstantExpr>(S.getVariableValue()))
103102
return C->getValue();
104103

105104
MCValue Target;
106-
if (!S.getVariableValue()->evaluateAsRelocatable(Target, &Asm))
105+
if (!S.getVariableValue()->evaluateAsRelocatable(Target, Asm))
107106
report_fatal_error("unable to evaluate offset for variable '" +
108107
S.getName() + "'");
109108

@@ -117,14 +116,14 @@ uint64_t MachObjectWriter::getSymbolAddress(const MCSymbol &S,
117116

118117
uint64_t Address = Target.getConstant();
119118
if (Target.getAddSym())
120-
Address += getSymbolAddress(*Target.getAddSym(), Asm);
119+
Address += getSymbolAddress(*Target.getAddSym());
121120
if (Target.getSubSym())
122-
Address -= getSymbolAddress(*Target.getSubSym(), Asm);
121+
Address -= getSymbolAddress(*Target.getSubSym());
123122
return Address;
124123
}
125124

126125
return getSectionAddress(S.getFragment()->getParent()) +
127-
Asm.getSymbolOffset(S);
126+
Asm->getSymbolOffset(S);
128127
}
129128

130129
uint64_t MachObjectWriter::getPaddingSize(const MCAssembler &Asm,
@@ -432,7 +431,7 @@ void MachObjectWriter::writeNlist(MachSymbolData &MSD, const MCAssembler &Asm) {
432431
if (IsAlias && Symbol->isUndefined())
433432
Address = AliaseeInfo->StringIndex;
434433
else if (Symbol->isDefined())
435-
Address = getSymbolAddress(OrigSymbol, Asm);
434+
Address = getSymbolAddress(OrigSymbol);
436435
else if (Symbol->isCommon()) {
437436
// Common symbols are encoded with the size in the address
438437
// field, and their alignment in the flags.
@@ -1052,10 +1051,10 @@ uint64_t MachObjectWriter::writeObject() {
10521051

10531052
// Write out the data-in-code region payload, if there is one.
10541053
for (DataRegionData Data : DataRegions) {
1055-
uint64_t Start = getSymbolAddress(*Data.Start, Asm);
1054+
uint64_t Start = getSymbolAddress(*Data.Start);
10561055
uint64_t End;
10571056
if (Data.End)
1058-
End = getSymbolAddress(*Data.End, Asm);
1057+
End = getSymbolAddress(*Data.End);
10591058
else
10601059
report_fatal_error("Data region not terminated");
10611060

llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -274,14 +274,14 @@ void AArch64MachObjectWriter::recordRelocation(
274274
return;
275275
}
276276

277-
Value += (!A->getFragment() ? 0 : Writer->getSymbolAddress(*A, Asm)) -
278-
(!A_Base || !A_Base->getFragment()
279-
? 0
280-
: Writer->getSymbolAddress(*A_Base, Asm));
281-
Value -= (!B->getFragment() ? 0 : Writer->getSymbolAddress(*B, Asm)) -
282-
(!B_Base || !B_Base->getFragment()
283-
? 0
284-
: Writer->getSymbolAddress(*B_Base, Asm));
277+
Value +=
278+
(!A->getFragment() ? 0 : Writer->getSymbolAddress(*A)) -
279+
(!A_Base || !A_Base->getFragment() ? 0
280+
: Writer->getSymbolAddress(*A_Base));
281+
Value -=
282+
(!B->getFragment() ? 0 : Writer->getSymbolAddress(*B)) -
283+
(!B_Base || !B_Base->getFragment() ? 0
284+
: Writer->getSymbolAddress(*B_Base));
285285

286286
Type = MachO::ARM64_RELOC_UNSIGNED;
287287

@@ -350,7 +350,7 @@ void AArch64MachObjectWriter::recordRelocation(
350350
// The index is the section ordinal (1-based).
351351
const MCSection &Sec = Symbol->getSection();
352352
Index = Sec.getOrdinal() + 1;
353-
Value += Writer->getSymbolAddress(*Symbol, Asm);
353+
Value += Writer->getSymbolAddress(*Symbol);
354354

355355
if (IsPCRel)
356356
Value -= Writer->getFragmentAddress(Asm, Fragment) + Fixup.getOffset() +

llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ void ARMMachObjectWriter::recordARMScatteredHalfRelocation(
158158
return;
159159
}
160160

161-
uint32_t Value = Writer->getSymbolAddress(*A, Asm);
161+
uint32_t Value = Writer->getSymbolAddress(*A);
162162
uint32_t Value2 = 0;
163163
uint64_t SecAddr = Writer->getSectionAddress(A->getFragment()->getParent());
164164
FixedValue += SecAddr;
@@ -174,7 +174,7 @@ void ARMMachObjectWriter::recordARMScatteredHalfRelocation(
174174

175175
// Select the appropriate difference relocation type.
176176
Type = MachO::ARM_RELOC_HALF_SECTDIFF;
177-
Value2 = Writer->getSymbolAddress(*SB, Asm);
177+
Value2 = Writer->getSymbolAddress(*SB);
178178
FixedValue -= Writer->getSectionAddress(SB->getFragment()->getParent());
179179
}
180180

@@ -266,7 +266,7 @@ void ARMMachObjectWriter::recordARMScatteredRelocation(
266266
return;
267267
}
268268

269-
uint32_t Value = Writer->getSymbolAddress(*A, Asm);
269+
uint32_t Value = Writer->getSymbolAddress(*A);
270270
uint64_t SecAddr = Writer->getSectionAddress(A->getFragment()->getParent());
271271
FixedValue += SecAddr;
272272
uint32_t Value2 = 0;
@@ -284,7 +284,7 @@ void ARMMachObjectWriter::recordARMScatteredRelocation(
284284

285285
// Select the appropriate difference relocation type.
286286
Type = MachO::ARM_RELOC_SECTDIFF;
287-
Value2 = Writer->getSymbolAddress(*SB, Asm);
287+
Value2 = Writer->getSymbolAddress(*SB);
288288
FixedValue -= Writer->getSectionAddress(SB->getFragment()->getParent());
289289
}
290290

@@ -422,8 +422,8 @@ void ARMMachObjectWriter::recordRelocation(MachObjectWriter *Writer,
422422
int64_t Res = Val.getConstant();
423423
bool isAbs = Val.isAbsolute();
424424
if (Relocatable && Val.getAddSym() && Val.getSubSym()) {
425-
Res += Writer->getSymbolAddress(*Val.getAddSym(), Asm) -
426-
Writer->getSymbolAddress(*Val.getSubSym(), Asm);
425+
Res += Writer->getSymbolAddress(*Val.getAddSym()) -
426+
Writer->getSymbolAddress(*Val.getSubSym());
427427
isAbs = true;
428428
}
429429
if (isAbs) {

llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,10 @@ void X86MachObjectWriter::RecordX86_64Relocation(
191191
return;
192192
}
193193

194-
Value += Writer->getSymbolAddress(*A, Asm) -
195-
(!A_Base ? 0 : Writer->getSymbolAddress(*A_Base, Asm));
196-
Value -= Writer->getSymbolAddress(*B, Asm) -
197-
(!B_Base ? 0 : Writer->getSymbolAddress(*B_Base, Asm));
194+
Value += Writer->getSymbolAddress(*A) -
195+
(!A_Base ? 0 : Writer->getSymbolAddress(*A_Base));
196+
Value -= Writer->getSymbolAddress(*B) -
197+
(!B_Base ? 0 : Writer->getSymbolAddress(*B_Base));
198198

199199
if (!A_Base)
200200
Index = A->getFragment()->getParent()->getOrdinal() + 1;
@@ -241,12 +241,12 @@ void X86MachObjectWriter::RecordX86_64Relocation(
241241
} else if (Symbol->isInSection() && !Symbol->isVariable()) {
242242
// The index is the section ordinal (1-based).
243243
Index = Symbol->getFragment()->getParent()->getOrdinal() + 1;
244-
Value += Writer->getSymbolAddress(*Symbol, Asm);
244+
Value += Writer->getSymbolAddress(*Symbol);
245245

246246
if (IsPCRel)
247247
Value -= FixupAddress + (1 << Log2Size);
248248
} else if (Symbol->isVariable()) {
249-
FixedValue = Writer->getSymbolAddress(*Symbol, Asm);
249+
FixedValue = Writer->getSymbolAddress(*Symbol);
250250
return;
251251
} else {
252252
Asm.getContext().reportError(
@@ -369,7 +369,7 @@ bool X86MachObjectWriter::recordScatteredRelocation(MachObjectWriter *Writer,
369369
return false;
370370
}
371371

372-
uint32_t Value = Writer->getSymbolAddress(*A, Asm);
372+
uint32_t Value = Writer->getSymbolAddress(*A);
373373
uint64_t SecAddr = Writer->getSectionAddress(A->getFragment()->getParent());
374374
FixedValue += SecAddr;
375375
uint32_t Value2 = 0;
@@ -390,7 +390,7 @@ bool X86MachObjectWriter::recordScatteredRelocation(MachObjectWriter *Writer,
390390
// pedantic compatibility with 'as'.
391391
Type = A->isExternal() ? (unsigned)MachO::GENERIC_RELOC_SECTDIFF
392392
: (unsigned)MachO::GENERIC_RELOC_LOCAL_SECTDIFF;
393-
Value2 = Writer->getSymbolAddress(*SB, Asm);
393+
Value2 = Writer->getSymbolAddress(*SB);
394394
FixedValue -= Writer->getSectionAddress(SB->getFragment()->getParent());
395395
}
396396

@@ -466,8 +466,8 @@ void X86MachObjectWriter::recordTLVPRelocation(MachObjectWriter *Writer,
466466
uint32_t FixupAddress =
467467
Writer->getFragmentAddress(Asm, Fragment) + Fixup.getOffset();
468468
IsPCRel = 1;
469-
FixedValue = FixupAddress - Writer->getSymbolAddress(*SymB, Asm) +
470-
Target.getConstant();
469+
FixedValue =
470+
FixupAddress - Writer->getSymbolAddress(*SymB) + Target.getConstant();
471471
FixedValue += 1ULL << Log2Size;
472472
} else {
473473
FixedValue = 0;
@@ -543,8 +543,8 @@ void X86MachObjectWriter::RecordX86Relocation(MachObjectWriter *Writer,
543543
int64_t Res = Val.getConstant();
544544
bool isAbs = Val.isAbsolute();
545545
if (Relocatable && Val.getAddSym() && Val.getSubSym()) {
546-
Res += Writer->getSymbolAddress(*Val.getAddSym(), Asm) -
547-
Writer->getSymbolAddress(*Val.getSubSym(), Asm);
546+
Res += Writer->getSymbolAddress(*Val.getAddSym()) -
547+
Writer->getSymbolAddress(*Val.getSubSym());
548548
isAbs = true;
549549
}
550550
if (isAbs) {

0 commit comments

Comments
 (0)