updated handling dllexport in X86AsmPrinter
authorNathan Jeffords <blunted2night@gmail.com>
Sun, 9 May 2010 08:40:06 +0000 (08:40 +0000)
committerNathan Jeffords <blunted2night@gmail.com>
Sun, 9 May 2010 08:40:06 +0000 (08:40 +0000)
changed dllexport code to use EmitBytes instead of EmitRawText, and changed the export option to use /EXPORT: instead of -export: on the windows platform

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103377 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp

index 137e28335702b9a900485813a33c74f6c9351a5f..183213d324b3c1b9140908b5d0620e98f8457b4e 100644 (file)
@@ -598,14 +598,28 @@ void X86AsmPrinter::EmitEndOfAsmFile(Module &M) {
     // Output linker support code for dllexported globals on windows.
     if (!DLLExportedGlobals.empty() || !DLLExportedFns.empty()) {
       OutStreamer.SwitchSection(TLOFCOFF.getDrectveSection());
-      for (unsigned i = 0, e = DLLExportedGlobals.size(); i != e; ++i)
-        OutStreamer.EmitRawText("\t.ascii \" -export:" +
-                                Twine(DLLExportedGlobals[i]->getName()) +
-                                ",data\"");
-
-      for (unsigned i = 0, e = DLLExportedFns.size(); i != e; ++i)
-        OutStreamer.EmitRawText("\t.ascii \" -export:" +
-                                Twine(DLLExportedFns[i]->getName()) + "\"");
+      SmallString<128> name;
+      for (unsigned i = 0, e = DLLExportedGlobals.size(); i != e; ++i) {
+        if (Subtarget->isTargetWindows())
+          name = " /EXPORT:";
+        else
+          name = " -export:";
+        name += DLLExportedGlobals[i]->getName();
+        if (Subtarget->isTargetWindows())
+          name += ",DATA";
+        else
+        name += ",data";
+        OutStreamer.EmitBytes(name, 0);
+      }
+
+      for (unsigned i = 0, e = DLLExportedFns.size(); i != e; ++i) {
+        if (Subtarget->isTargetWindows())
+          name = " /EXPORT:";
+        else
+          name = " -export:";
+        name += DLLExportedFns[i]->getName();
+        OutStreamer.EmitBytes(name, 0);
+      }
     }
   }