diff options
author | Andrew Lenharth <andrewl@lenharth.org> | 2006-02-04 19:13:09 +0000 |
---|---|---|
committer | Andrew Lenharth <andrewl@lenharth.org> | 2006-02-04 19:13:09 +0000 |
commit | 1fcff15f86577fd49cac03c7584c5517ff338836 (patch) | |
tree | af08336dc6df42993e1e1f71e4b35e6941e48b19 | |
parent | 95ae171d5b0e4a5a8d36ccd17dbebfd0b4e983f7 (diff) | |
download | bcm5719-llvm-1fcff15f86577fd49cac03c7584c5517ff338836.tar.gz bcm5719-llvm-1fcff15f86577fd49cac03c7584c5517ff338836.zip |
linkage fix for weak functions
llvm-svn: 25976
-rw-r--r-- | llvm/lib/Target/Alpha/AlphaAsmPrinter.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/llvm/lib/Target/Alpha/AlphaAsmPrinter.cpp b/llvm/lib/Target/Alpha/AlphaAsmPrinter.cpp index 133f6c60393..3d88bc4fb61 100644 --- a/llvm/lib/Target/Alpha/AlphaAsmPrinter.cpp +++ b/llvm/lib/Target/Alpha/AlphaAsmPrinter.cpp @@ -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"; |