linkage fix for weak functions
authorAndrew Lenharth <andrewl@lenharth.org>
Sat, 4 Feb 2006 19:13:09 +0000 (19:13 +0000)
committerAndrew Lenharth <andrewl@lenharth.org>
Sat, 4 Feb 2006 19:13:09 +0000 (19:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25976 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Alpha/AlphaAsmPrinter.cpp

index 133f6c6039359f3fff485cc21b4f506f6439ebf0..3d88bc4fb6122ec1ef1a2fa1bed5c9c4a7dec8b1 100644 (file)
@@ -173,9 +173,22 @@ bool AlphaAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
   EmitConstantPool(MF.getConstantPool());
 
   // Print out labels for the function.
-  SwitchSection("\t.section .text", MF.getFunction());
-  EmitAlignment(4);
-  O << "\t.globl " << CurrentFnName << "\n";
+  const Function *F = MF.getFunction();
+  SwitchSection(".text", F);
+  EmitAlignment(4, F);
+  switch (F->getLinkage()) {
+  default: assert(0 && "Unknown linkage type!");
+  case Function::InternalLinkage:  // Symbols default to internal.
+    break;
+   case Function::ExternalLinkage:
+     O << "\t.globl " << CurrentFnName << "\n";
+     break;
+  case Function::WeakLinkage:
+  case Function::LinkOnceLinkage:
+    O << "\t.weak " << CurrentFnName << "\n";
+    break;
+  }
+
   O << "\t.ent " << CurrentFnName << "\n";
 
   O << CurrentFnName << ":\n";