summaryrefslogtreecommitdiff
path: root/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/X86/AsmPrinter/X86MCInstLower.cpp')
-rw-r--r--lib/Target/X86/AsmPrinter/X86MCInstLower.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp b/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
index 1cccfa95aa..2aced087d0 100644
--- a/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
+++ b/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
@@ -78,10 +78,12 @@ MCSymbol *X86ATTAsmPrinter::GetGlobalAddressSymbol(const MachineOperand &MO) {
Name += "$non_lazy_ptr";
HiddenGVStubs[Name.str()] = StringRef(Name.data(), Name.size()-13);
break;
- case X86II::MO_DARWIN_STUB:
+ case X86II::MO_DARWIN_STUB: {
Name += "$stub";
- FnStubs[Name.str()] = StringRef(Name.data(), Name.size()-5);
- break;
+ MCSymbol *Sym = OutContext.GetOrCreateSymbol(Name.str());
+ FnStubs.insert(Sym);
+ return Sym;
+ }
// 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;
@@ -114,12 +116,13 @@ MCSymbol *X86ATTAsmPrinter::GetExternalSymbolSymbol(const MachineOperand &MO) {
Name.insert(Name.begin(), Prefix, Prefix+strlen(Prefix));
break;
}
- case X86II::MO_DARWIN_STUB:
- // Insert: FnStub["_foo$stub"] = "_foo";
+ case X86II::MO_DARWIN_STUB: {
Name += "$stub";
- FnStubs[Name.str()] = StringRef(Name.data(), Name.size()-5);
- break;
- // FIXME: These probably should be a modifier on the symbol or something??
+ MCSymbol *Sym = OutContext.GetOrCreateSymbol(Name.str());
+ FnStubs.insert(Sym);
+ return Sym;
+ }
+ // 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;