mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-13 14:46:53 +00:00
- Emit subsections_via_symbols for Darwin.
- Conditionalize Dwarf debugging output (Darwin only for now). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26582 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3c992d291b
commit
d594881a28
@ -27,15 +27,19 @@ using namespace x86;
|
||||
/// method to print assembly for each instruction.
|
||||
///
|
||||
bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
// Let PassManager know we need debug information and relay
|
||||
// the MachineDebugInfo address on to DwarfWriter.
|
||||
DW.SetDebugInfo(&getAnalysis<MachineDebugInfo>());
|
||||
// if (forDarwin) {
|
||||
// Let PassManager know we need debug information and relay
|
||||
// the MachineDebugInfo address on to DwarfWriter.
|
||||
DW.SetDebugInfo(&getAnalysis<MachineDebugInfo>());
|
||||
// }
|
||||
|
||||
SetupMachineFunction(MF);
|
||||
O << "\n\n";
|
||||
|
||||
// Emit pre-function debug information.
|
||||
DW.BeginFunction(MF);
|
||||
if (forDarwin) {
|
||||
// Emit pre-function debug information.
|
||||
DW.BeginFunction(MF);
|
||||
}
|
||||
|
||||
// Print out constants referenced by the function
|
||||
EmitConstantPool(MF.getConstantPool());
|
||||
@ -88,8 +92,10 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
if (HasDotTypeDotSizeDirective)
|
||||
O << "\t.size " << CurrentFnName << ", .-" << CurrentFnName << "\n";
|
||||
|
||||
// Emit post-function debug information.
|
||||
DW.EndFunction(MF);
|
||||
if (forDarwin) {
|
||||
// Emit post-function debug information.
|
||||
DW.EndFunction(MF);
|
||||
}
|
||||
|
||||
// We didn't modify anything.
|
||||
return false;
|
||||
|
@ -75,8 +75,10 @@ bool X86SharedAsmPrinter::doInitialization(Module &M) {
|
||||
default: break;
|
||||
}
|
||||
|
||||
// Emit initial debug information.
|
||||
DW.BeginModule(M);
|
||||
if (forDarwin) {
|
||||
// Emit initial debug information.
|
||||
DW.BeginModule(M);
|
||||
}
|
||||
|
||||
return AsmPrinter::doInitialization(M);
|
||||
}
|
||||
@ -188,10 +190,17 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) {
|
||||
O << "\t.indirect_symbol " << *i << "\n";
|
||||
O << "\t.long\t0\n";
|
||||
}
|
||||
}
|
||||
|
||||
// Emit initial debug information.
|
||||
DW.EndModule(M);
|
||||
// Emit initial debug information.
|
||||
DW.EndModule(M);
|
||||
|
||||
// Funny Darwin hack: This flag tells the linker that no global symbols
|
||||
// contain code that falls through to other global symbols (e.g. the obvious
|
||||
// implementation of multiple entry points). If this doesn't occur, the
|
||||
// linker can safely perform dead code stripping. Since LLVM never generates
|
||||
// code that does this, it is always safe to set.
|
||||
O << "\t.subsections_via_symbols\n";
|
||||
}
|
||||
|
||||
AsmPrinter::doFinalization(M);
|
||||
return false; // success
|
||||
|
@ -68,7 +68,7 @@ struct X86SharedAsmPrinter : public AsmPrinter {
|
||||
MachineFunctionPass::getAnalysisUsage(AU);
|
||||
}
|
||||
|
||||
bool forDarwin; // FIXME: eliminate.
|
||||
bool forDarwin; // FIXME: eliminate.
|
||||
|
||||
// Necessary for Darwin to print out the apprioriate types of linker stubs
|
||||
std::set<std::string> FnStubs, GVStubs, LinkOnceStubs;
|
||||
|
@ -26,15 +26,19 @@ using namespace x86;
|
||||
/// method to print assembly for each instruction.
|
||||
///
|
||||
bool X86IntelAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
// Let PassManager know we need debug information and relay
|
||||
// the MachineDebugInfo address on to DwarfWriter.
|
||||
DW.SetDebugInfo(&getAnalysis<MachineDebugInfo>());
|
||||
if (forDarwin) {
|
||||
// Let PassManager know we need debug information and relay
|
||||
// the MachineDebugInfo address on to DwarfWriter.
|
||||
DW.SetDebugInfo(&getAnalysis<MachineDebugInfo>());
|
||||
}
|
||||
|
||||
SetupMachineFunction(MF);
|
||||
O << "\n\n";
|
||||
|
||||
// Emit pre-function debug information.
|
||||
DW.BeginFunction(MF);
|
||||
if (forDarwin) {
|
||||
// Emit pre-function debug information.
|
||||
DW.BeginFunction(MF);
|
||||
}
|
||||
|
||||
// Print out constants referenced by the function
|
||||
EmitConstantPool(MF.getConstantPool());
|
||||
@ -63,8 +67,10 @@ bool X86IntelAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
}
|
||||
}
|
||||
|
||||
// Emit post-function debug information.
|
||||
DW.EndFunction(MF);
|
||||
if (forDarwin) {
|
||||
// Emit post-function debug information.
|
||||
DW.EndFunction(MF);
|
||||
}
|
||||
|
||||
// We didn't modify anything.
|
||||
return false;
|
||||
|
Loading…
Reference in New Issue
Block a user