mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-24 12:29:33 +00:00
MC: Remove last use of MCSymbolData::getSymbol(), NFC
Remove the last use of `MCSymbolData::getSymbol()`. There's some *really* hairy stuff going on in `MachObjectWriter::WriteNList()` that I want to come back to. In particular, it updates `Symbol` to point at its aliasee (if any), but leaves `Data` behind, and it's not clear whether everything makes sense there. For now I've left the logic unchanged by adding `OrigSymbol` and moving the FIXME from r237750 up a bit higher. I've filed PR23598 to track looking into this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237867 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d591505d9f
commit
aa87ff8440
@ -338,12 +338,14 @@ void MachObjectWriter::WriteNlist(MachSymbolData &MSD,
|
|||||||
uint64_t Address = 0;
|
uint64_t Address = 0;
|
||||||
bool IsAlias = Symbol != AliasedSymbol;
|
bool IsAlias = Symbol != AliasedSymbol;
|
||||||
|
|
||||||
|
const MCSymbol &OrigSymbol = *Symbol;
|
||||||
MachSymbolData *AliaseeInfo;
|
MachSymbolData *AliaseeInfo;
|
||||||
if (IsAlias) {
|
if (IsAlias) {
|
||||||
AliaseeInfo = findSymbolData(*AliasedSymbol);
|
AliaseeInfo = findSymbolData(*AliasedSymbol);
|
||||||
if (AliaseeInfo)
|
if (AliaseeInfo)
|
||||||
SectionIndex = AliaseeInfo->SectionIndex;
|
SectionIndex = AliaseeInfo->SectionIndex;
|
||||||
Symbol = AliasedSymbol;
|
Symbol = AliasedSymbol;
|
||||||
|
// FIXME: Should this update Data as well? Do we need OrigSymbol at all?
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the N_TYPE bits. See <mach-o/nlist.h>.
|
// Set the N_TYPE bits. See <mach-o/nlist.h>.
|
||||||
@ -371,9 +373,7 @@ void MachObjectWriter::WriteNlist(MachSymbolData &MSD,
|
|||||||
if (IsAlias && Symbol->isUndefined())
|
if (IsAlias && Symbol->isUndefined())
|
||||||
Address = AliaseeInfo->StringIndex;
|
Address = AliaseeInfo->StringIndex;
|
||||||
else if (Symbol->isDefined())
|
else if (Symbol->isDefined())
|
||||||
// FIXME: Should Data.getSymbol() always be *Symbol? It doesn't look like
|
Address = getSymbolAddress(OrigSymbol, Layout);
|
||||||
// that's true.
|
|
||||||
Address = getSymbolAddress(Data.getSymbol(), Layout);
|
|
||||||
else if (Data.isCommon()) {
|
else if (Data.isCommon()) {
|
||||||
// Common symbols are encoded with the size in the address
|
// Common symbols are encoded with the size in the address
|
||||||
// field, and their alignment in the flags.
|
// field, and their alignment in the flags.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user