mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
add support for @PLT and friends on external symbols, fixes
x86-64-pic-11.ll with the new asmprinter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81294 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fce288fc91
commit
88e9758298
@ -112,12 +112,37 @@ MCSymbol *X86ATTAsmPrinter::GetGlobalAddressSymbol(const MachineOperand &MO) {
|
||||
}
|
||||
|
||||
MCSymbol *X86ATTAsmPrinter::GetExternalSymbolSymbol(const MachineOperand &MO) {
|
||||
std::string Name = Mang->makeNameProper(MO.getSymbolName());
|
||||
std::string Name = MO.getSymbolName();
|
||||
if (MO.getTargetFlags() == X86II::MO_DARWIN_STUB) {
|
||||
FnStubs[Name+"$stub"] = Name;
|
||||
Name += "$stub";
|
||||
}
|
||||
|
||||
|
||||
switch (MO.getTargetFlags()) {
|
||||
default: llvm_unreachable("Unknown target flag on GV operand");
|
||||
case X86II::MO_NO_FLAG: // No flag.
|
||||
case X86II::MO_GOT_ABSOLUTE_ADDRESS: // Doesn't modify symbol name.
|
||||
case X86II::MO_PIC_BASE_OFFSET: // Doesn't modify symbol name.
|
||||
break;
|
||||
case X86II::MO_DLLIMPORT:
|
||||
// Handle dllimport linkage.
|
||||
Name = "__imp_" + Name;
|
||||
break;
|
||||
case X86II::MO_DARWIN_STUB:
|
||||
FnStubs[Name] = MO.getSymbolName();
|
||||
break;
|
||||
// FIXME: These probably should be a modifier on the symbol or something??
|
||||
case X86II::MO_TLSGD: Name += "@TLSGD"; break;
|
||||
case X86II::MO_GOTTPOFF: Name += "@GOTTPOFF"; break;
|
||||
case X86II::MO_INDNTPOFF: Name += "@INDNTPOFF"; break;
|
||||
case X86II::MO_TPOFF: Name += "@TPOFF"; break;
|
||||
case X86II::MO_NTPOFF: Name += "@NTPOFF"; break;
|
||||
case X86II::MO_GOTPCREL: Name += "@GOTPCREL"; break;
|
||||
case X86II::MO_GOT: Name += "@GOT"; break;
|
||||
case X86II::MO_GOTOFF: Name += "@GOTOFF"; break;
|
||||
case X86II::MO_PLT: Name += "@PLT"; break;
|
||||
}
|
||||
|
||||
return OutContext.GetOrCreateSymbol(Name);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user