mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-26 07:24:25 +00:00
Move AliasedSymbol to MachObjectWriter.
It was only used by MachO. Part of pr19627. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235185 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -321,11 +321,23 @@ MachObjectWriter::findSymbolData(const MCSymbol &Sym) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const MCSymbol &MachObjectWriter::findAliasedSymbol(const MCSymbol &Sym) const {
|
||||
const MCSymbol *S = &Sym;
|
||||
while (S->isVariable()) {
|
||||
const MCExpr *Value = S->getVariableValue();
|
||||
const auto *Ref = dyn_cast<MCSymbolRefExpr>(Value);
|
||||
if (!Ref)
|
||||
return *S;
|
||||
S = &Ref->getSymbol();
|
||||
}
|
||||
return *S;
|
||||
}
|
||||
|
||||
void MachObjectWriter::WriteNlist(MachSymbolData &MSD,
|
||||
const MCAsmLayout &Layout) {
|
||||
MCSymbolData &Data = *MSD.SymbolData;
|
||||
const MCSymbol *Symbol = &Data.getSymbol();
|
||||
const MCSymbol *AliasedSymbol = &Symbol->AliasedSymbol();
|
||||
const MCSymbol *AliasedSymbol = &findAliasedSymbol(*Symbol);
|
||||
uint8_t SectionIndex = MSD.SectionIndex;
|
||||
uint8_t Type = 0;
|
||||
uint16_t Flags = Data.getFlags();
|
||||
@ -674,7 +686,7 @@ IsSymbolRefDifferenceFullyResolvedImpl(const MCAssembler &Asm,
|
||||
// addr(atom(A)) - addr(atom(B)) == 0.
|
||||
const MCSymbolData *A_Base = nullptr, *B_Base = nullptr;
|
||||
|
||||
const MCSymbol &SA = DataA.getSymbol().AliasedSymbol();
|
||||
const MCSymbol &SA = findAliasedSymbol(DataA.getSymbol());
|
||||
const MCSection &SecA = SA.getSection();
|
||||
const MCSection &SecB = FB.getParent()->getSection();
|
||||
|
||||
|
Reference in New Issue
Block a user