mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-24 08:24:33 +00:00
This patch extends the libLLVMDebugInfo which contains a minimalistic DWARF parser:
1) DIContext is now able to return function name for a given instruction address (besides file/line info). 2) llvm-dwarfdump accepts flag --functions that prints the function name (if address is specified by --address flag). 3) test case that checks the basic functionality of llvm-dwarfdump added git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159512 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -39,6 +39,11 @@ static cl::opt<unsigned long long>
|
||||
Address("address", cl::init(-1ULL),
|
||||
cl::desc("Print line information for a given address"));
|
||||
|
||||
static cl::opt<bool>
|
||||
PrintFunctions("functions", cl::init(false),
|
||||
cl::desc("Print function names as well as line information "
|
||||
"for a given address"));
|
||||
|
||||
static void DumpInput(const StringRef &Filename) {
|
||||
OwningPtr<MemoryBuffer> Buff;
|
||||
|
||||
@ -92,7 +97,13 @@ static void DumpInput(const StringRef &Filename) {
|
||||
dictx->dump(outs());
|
||||
} else {
|
||||
// Print line info for the specified address.
|
||||
DILineInfo dli = dictx->getLineInfoForAddress(Address);
|
||||
int spec_flags = DILineInfoSpecifier::FileLineInfo;
|
||||
if (PrintFunctions)
|
||||
spec_flags |= DILineInfoSpecifier::FunctionName;
|
||||
DILineInfo dli = dictx->getLineInfoForAddress(Address, spec_flags);
|
||||
if (PrintFunctions)
|
||||
outs() << (dli.getFunctionName() ? dli.getFunctionName() : "<unknown>")
|
||||
<< "\n";
|
||||
outs() << (dli.getFileName() ? dli.getFileName() : "<unknown>") << ':'
|
||||
<< dli.getLine() << ':' << dli.getColumn() << '\n';
|
||||
}
|
||||
|
Reference in New Issue
Block a user