aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-objdump
diff options
context:
space:
mode:
authorShubham Sandeep Rastogi <srastogi22@apple.com>2022-10-06 12:15:07 -0700
committerShubham Sandeep Rastogi <srastogi22@apple.com>2022-10-06 14:46:01 -0700
commitd96ade00c3c96bd451c60e34a17e613cdd5fdc38 (patch)
tree70fcda3c263953c5f19da4af8cc0699ed4787a57 /llvm/tools/llvm-objdump
parente66ff2a284de9067e63f89f056d8075def139b0b (diff)
downloadllvm-d96ade00c3c96bd451c60e34a17e613cdd5fdc38.zip
llvm-d96ade00c3c96bd451c60e34a17e613cdd5fdc38.tar.gz
llvm-d96ade00c3c96bd451c60e34a17e613cdd5fdc38.tar.bz2
Remove the dependency between lib/DebugInfoDWARF and MC.
This patch had to be reverted because on gcc 7.5.0 we see an error converting from std::unique_ptr<MCRegisterInfo> to Expected<std::unique_ptr<MCRegisterInfo>> as the return type for the function createRegInfo. This has now been fixed.
Diffstat (limited to 'llvm/tools/llvm-objdump')
-rw-r--r--llvm/tools/llvm-objdump/SourcePrinter.cpp11
-rw-r--r--llvm/tools/llvm-objdump/SourcePrinter.h1
2 files changed, 11 insertions, 1 deletions
diff --git a/llvm/tools/llvm-objdump/SourcePrinter.cpp b/llvm/tools/llvm-objdump/SourcePrinter.cpp
index c8ea6b5..67ced1c 100644
--- a/llvm/tools/llvm-objdump/SourcePrinter.cpp
+++ b/llvm/tools/llvm-objdump/SourcePrinter.cpp
@@ -42,7 +42,16 @@ void LiveVariable::print(raw_ostream &OS, const MCRegisterInfo &MRI) const {
DataExtractor Data({LocExpr.Expr.data(), LocExpr.Expr.size()},
Unit->getContext().isLittleEndian(), 0);
DWARFExpression Expression(Data, Unit->getAddressByteSize());
- Expression.printCompact(OS, MRI);
+
+ auto GetRegName = [&MRI, &OS](uint64_t DwarfRegNum, bool IsEH) -> StringRef {
+ if (Optional<unsigned> LLVMRegNum = MRI.getLLVMRegNum(DwarfRegNum, IsEH))
+ if (const char *RegName = MRI.getName(*LLVMRegNum))
+ return StringRef(RegName);
+ OS << "<unknown register " << DwarfRegNum << ">";
+ return {};
+ };
+
+ Expression.printCompact(OS, GetRegName);
}
void LiveVariablePrinter::addVariable(DWARFDie FuncDie, DWARFDie VarDie) {
diff --git a/llvm/tools/llvm-objdump/SourcePrinter.h b/llvm/tools/llvm-objdump/SourcePrinter.h
index 29ef19c..6209bb0 100644
--- a/llvm/tools/llvm-objdump/SourcePrinter.h
+++ b/llvm/tools/llvm-objdump/SourcePrinter.h
@@ -13,6 +13,7 @@
#include "llvm/ADT/StringSet.h"
#include "llvm/DebugInfo/DWARF/DWARFContext.h"
#include "llvm/DebugInfo/Symbolize/Symbolize.h"
+#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCSubtargetInfo.h"
#include "llvm/Support/FormattedStream.h"
#include <unordered_map>