aboutsummaryrefslogtreecommitdiffstats
path: root/lib/CodeGen/ELFCodeEmitter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/CodeGen/ELFCodeEmitter.cpp')
-rw-r--r--lib/CodeGen/ELFCodeEmitter.cpp25
1 files changed, 10 insertions, 15 deletions
diff --git a/lib/CodeGen/ELFCodeEmitter.cpp b/lib/CodeGen/ELFCodeEmitter.cpp
index 5133e74..1d15003 100644
--- a/lib/CodeGen/ELFCodeEmitter.cpp
+++ b/lib/CodeGen/ELFCodeEmitter.cpp
@@ -60,23 +60,18 @@ void ELFCodeEmitter::startFunction(MachineFunction &MF) {
bool ELFCodeEmitter::finishFunction(MachineFunction &MF) {
// Add a symbol to represent the function.
const Function *F = MF.getFunction();
- ELFSym FnSym(F);
- FnSym.setType(ELFSym::STT_FUNC);
- FnSym.setBind(EW.getGlobalELFBinding(F));
- FnSym.setVisibility(EW.getGlobalELFVisibility(F));
- FnSym.SectionIdx = ES->SectionIdx;
- FnSym.Size = ES->getCurrentPCOffset()-FnStartOff;
+ ELFSym *FnSym = new ELFSym(F);
+ FnSym->setType(ELFSym::STT_FUNC);
+ FnSym->setBind(EW.getGlobalELFBinding(F));
+ FnSym->setVisibility(EW.getGlobalELFVisibility(F));
+ FnSym->SectionIdx = ES->SectionIdx;
+ FnSym->Size = ES->getCurrentPCOffset()-FnStartOff;
// Offset from start of Section
- FnSym.Value = FnStartOff;
-
- // Locals should go on the symbol list front
- if (!F->hasPrivateLinkage()) {
- if (FnSym.getBind() == ELFSym::STB_LOCAL)
- EW.SymbolList.push_front(FnSym);
- else
- EW.SymbolList.push_back(FnSym);
- }
+ FnSym->Value = FnStartOff;
+
+ if (!F->hasPrivateLinkage())
+ EW.SymbolList.push_back(FnSym);
// Emit constant pool to appropriate section(s)
emitConstantPool(MF.getConstantPool());