mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-13 04:38:24 +00:00
Tie dwarf generation to darwin assembler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25093 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -12,4 +12,99 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
|
||||
#include "llvm/CodeGen/AsmPrinter.h"
|
||||
#include "llvm/CodeGen/DwarfWriter.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
|
||||
|
||||
namespace llvm {
|
||||
|
||||
static cl::opt<bool>
|
||||
DwarfVerbose("dwarf-verbose", cl::Hidden,
|
||||
cl::desc("Add comments to dwarf directives."));
|
||||
|
||||
/// EmitULEB128Bytes - Emit an assembler byte data directive to compose an
|
||||
/// unsigned leb128 value.
|
||||
///
|
||||
void DwarfWriter::EmitULEB128Bytes(unsigned Value, std::string Comment) {
|
||||
if (hasLEB128) {
|
||||
O << "\t.uleb128\t"
|
||||
<< Value;
|
||||
} else {
|
||||
O << Asm->getData8bitsDirective();
|
||||
EmitULEB128(Value);
|
||||
}
|
||||
if (DwarfVerbose) {
|
||||
O << "\t"
|
||||
<< Asm->getCommentString()
|
||||
<< " "
|
||||
<< Comment
|
||||
<< " "
|
||||
<< Value;
|
||||
}
|
||||
O << "\n";
|
||||
}
|
||||
|
||||
/// EmitSLEB128Bytes - Emit an assembler byte data directive to compose a
|
||||
/// signed leb128 value.
|
||||
///
|
||||
void DwarfWriter::EmitSLEB128Bytes(int Value, std::string Comment) {
|
||||
if (hasLEB128) {
|
||||
O << "\t.sleb128\t"
|
||||
<< Value;
|
||||
} else {
|
||||
O << Asm->getData8bitsDirective();
|
||||
EmitSLEB128(Value);
|
||||
}
|
||||
if (DwarfVerbose) {
|
||||
O << "\t"
|
||||
<< Asm->getCommentString()
|
||||
<< " "
|
||||
<< Comment
|
||||
<< " "
|
||||
<< Value;
|
||||
}
|
||||
O << "\n";
|
||||
}
|
||||
|
||||
/// BeginModule - Emit all dwarf sections that should come prior to the content.
|
||||
///
|
||||
void DwarfWriter::BeginModule() {
|
||||
EmitComment("Dwarf Begin Module");
|
||||
|
||||
// define base addresses for dwarf sections
|
||||
Asm->SwitchSection(DwarfAbbrevSection, 0);
|
||||
EmitLabel("abbrev", 0);
|
||||
Asm->SwitchSection(DwarfInfoSection, 0);
|
||||
EmitLabel("info", 0);
|
||||
Asm->SwitchSection(DwarfLineSection, 0);
|
||||
EmitLabel("line", 0);
|
||||
}
|
||||
|
||||
/// EndModule - Emit all dwarf sections that should come after the content.
|
||||
///
|
||||
void DwarfWriter::EndModule() {
|
||||
EmitComment("Dwarf End Module");
|
||||
// Print out dwarf file info
|
||||
std::vector<std::string> Sources = DebugInfo.getSourceFiles();
|
||||
for (unsigned i = 0, N = Sources.size(); i < N; i++) {
|
||||
O << "\t; .file\t" << (i + 1) << "," << "\"" << Sources[i] << "\"" << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// BeginFunction - Emit pre-function debug information.
|
||||
///
|
||||
void DwarfWriter::BeginFunction() {
|
||||
EmitComment("Dwarf Begin Function");
|
||||
}
|
||||
|
||||
/// EndFunction - Emit post-function debug information.
|
||||
///
|
||||
void DwarfWriter::EndFunction() {
|
||||
EmitComment("Dwarf End Function");
|
||||
}
|
||||
|
||||
|
||||
} // End llvm namespace
|
||||
|
||||
|
Reference in New Issue
Block a user