aboutsummaryrefslogtreecommitdiff
path: root/lldb
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 /lldb
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 'lldb')
-rw-r--r--lldb/source/Expression/DWARFExpression.cpp16
-rw-r--r--lldb/source/Symbol/UnwindPlan.cpp2
-rw-r--r--lldb/unittests/Symbol/PostfixExpressionTest.cpp2
-rw-r--r--lldb/unittests/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpressionTests.cpp2
4 files changed, 17 insertions, 5 deletions
diff --git a/lldb/source/Expression/DWARFExpression.cpp b/lldb/source/Expression/DWARFExpression.cpp
index 1ccda94..5284d94 100644
--- a/lldb/source/Expression/DWARFExpression.cpp
+++ b/lldb/source/Expression/DWARFExpression.cpp
@@ -69,9 +69,21 @@ void DWARFExpression::UpdateValue(uint64_t const_value,
void DWARFExpression::DumpLocation(Stream *s, lldb::DescriptionLevel level,
ABI *abi) const {
+ std::function<llvm::StringRef(uint64_t DwarfRegNum, bool IsEH)> GetRegName;
+ if (abi) {
+ auto RegInfo = abi->GetMCRegisterInfo();
+ GetRegName = [RegInfo](uint64_t DwarfRegNum, bool IsEH) -> llvm::StringRef {
+ if (llvm::Optional<unsigned> LLVMRegNum =
+ RegInfo.getLLVMRegNum(DwarfRegNum, IsEH))
+ if (const char *RegName = RegInfo.getName(*LLVMRegNum))
+ return llvm::StringRef(RegName);
+ return {};
+ };
+ }
+ auto DumpOpts = llvm::DIDumpOptions();
+ DumpOpts.GetNameForDWARFReg = GetRegName;
llvm::DWARFExpression(m_data.GetAsLLVM(), m_data.GetAddressByteSize())
- .print(s->AsRawOstream(), llvm::DIDumpOptions(),
- abi ? &abi->GetMCRegisterInfo() : nullptr, nullptr);
+ .print(s->AsRawOstream(), DumpOpts, nullptr);
}
RegisterKind DWARFExpression::GetRegisterKind() const { return m_reg_kind; }
diff --git a/lldb/source/Symbol/UnwindPlan.cpp b/lldb/source/Symbol/UnwindPlan.cpp
index bd46905..8ca0334 100644
--- a/lldb/source/Symbol/UnwindPlan.cpp
+++ b/lldb/source/Symbol/UnwindPlan.cpp
@@ -84,7 +84,7 @@ static void DumpDWARFExpr(Stream &s, llvm::ArrayRef<uint8_t> expr, Thread *threa
llvm::DataExtractor data(expr, order_and_width->first == eByteOrderLittle,
order_and_width->second);
llvm::DWARFExpression(data, order_and_width->second, llvm::dwarf::DWARF32)
- .print(s.AsRawOstream(), llvm::DIDumpOptions(), nullptr, nullptr);
+ .print(s.AsRawOstream(), llvm::DIDumpOptions(), nullptr);
} else
s.PutCString("dwarf-expr");
}
diff --git a/lldb/unittests/Symbol/PostfixExpressionTest.cpp b/lldb/unittests/Symbol/PostfixExpressionTest.cpp
index 4d4706d..0eaa9d8 100644
--- a/lldb/unittests/Symbol/PostfixExpressionTest.cpp
+++ b/lldb/unittests/Symbol/PostfixExpressionTest.cpp
@@ -159,7 +159,7 @@ static std::string ParseAndGenerateDWARF(llvm::StringRef expr) {
std::string result;
llvm::raw_string_ostream os(result);
llvm::DWARFExpression(extractor, addr_size, llvm::dwarf::DWARF32)
- .print(os, llvm::DIDumpOptions(), nullptr, nullptr);
+ .print(os, llvm::DIDumpOptions(), nullptr);
return std::move(os.str());
}
diff --git a/lldb/unittests/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpressionTests.cpp b/lldb/unittests/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpressionTests.cpp
index 730afb3..270cc8e 100644
--- a/lldb/unittests/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpressionTests.cpp
+++ b/lldb/unittests/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpressionTests.cpp
@@ -40,7 +40,7 @@ CheckValidProgramTranslation(llvm::StringRef fpo_program,
std::string result;
llvm::raw_string_ostream os(result);
llvm::DWARFExpression(extractor, /*AddressSize=*/4, llvm::dwarf::DWARF32)
- .print(os, llvm::DIDumpOptions(), nullptr, nullptr);
+ .print(os, llvm::DIDumpOptions(), nullptr);
// actual check
ASSERT_EQ(expected_dwarf_expression, os.str());