Author: Fangrui Song Date: 2020-02-09T17:45:32-08:00 New Revision: 512c03bac449d8d40c5fc8d0ff1719f887c7fdc3
URL: https://github.com/llvm/llvm-project/commit/512c03bac449d8d40c5fc8d0ff1719f887c7fdc3 DIFF: https://github.com/llvm/llvm-project/commit/512c03bac449d8d40c5fc8d0ff1719f887c7fdc3.diff LOG: [DebugInfo] Add a DWARFDataExtractor constructor that takes ArrayRef<uint8_t> Similar to D67797 (DataExtractor). Added: Modified: lldb/source/Plugins/SymbolFile/DWARF/DWARFDataExtractor.cpp lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp llvm/include/llvm/DebugInfo/DWARF/DWARFDataExtractor.h llvm/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp llvm/tools/llvm-readobj/DwarfCFIEHPrinter.h Removed: ################################################################################ diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDataExtractor.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDataExtractor.cpp index 4eea18e0f237..cf483286a66d 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDataExtractor.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDataExtractor.cpp @@ -23,8 +23,7 @@ DWARFDataExtractor::GetDWARFOffset(lldb::offset_t *offset_ptr) const { llvm::DWARFDataExtractor DWARFDataExtractor::GetAsLLVM() const { return llvm::DWARFDataExtractor( - llvm::StringRef(reinterpret_cast<const char *>(GetDataStart()), - GetByteSize()), + llvm::makeArrayRef(GetDataStart(), GetByteSize()), GetByteOrder() == lldb::eByteOrderLittle, GetAddressByteSize()); } } // namespace lldb_private diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp index 8944078d7fff..e4a89160969e 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp @@ -468,8 +468,8 @@ void DWARFUnit::SetLoclistsBase(dw_addr_t loclists_base) { std::unique_ptr<llvm::DWARFLocationTable> DWARFUnit::GetLocationTable(const DataExtractor &data) const { llvm::DWARFDataExtractor llvm_data( - toStringRef(data.GetData()), - data.GetByteOrder() == lldb::eByteOrderLittle, data.GetAddressByteSize()); + data.GetData(), data.GetByteOrder() == lldb::eByteOrderLittle, + data.GetAddressByteSize()); if (m_is_dwo || GetVersion() >= 5) return std::make_unique<llvm::DWARFDebugLoclists>(llvm_data, GetVersion()); diff --git a/llvm/include/llvm/DebugInfo/DWARF/DWARFDataExtractor.h b/llvm/include/llvm/DebugInfo/DWARF/DWARFDataExtractor.h index 6f7ddb2ef421..c4ba982ce808 100644 --- a/llvm/include/llvm/DebugInfo/DWARF/DWARFDataExtractor.h +++ b/llvm/include/llvm/DebugInfo/DWARF/DWARFDataExtractor.h @@ -32,6 +32,11 @@ class DWARFDataExtractor : public DataExtractor { /// Constructor for cases when there are no relocations. DWARFDataExtractor(StringRef Data, bool IsLittleEndian, uint8_t AddressSize) : DataExtractor(Data, IsLittleEndian, AddressSize) {} + DWARFDataExtractor(ArrayRef<uint8_t> Data, bool IsLittleEndian, + uint8_t AddressSize) + : DataExtractor( + StringRef(reinterpret_cast<const char *>(Data.data()), Data.size()), + IsLittleEndian, AddressSize) {} /// Extracts a value and applies a relocation to the result if /// one exists for the given offset. diff --git a/llvm/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp b/llvm/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp index 131017e749d6..8f047bb872e5 100644 --- a/llvm/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp +++ b/llvm/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp @@ -109,7 +109,7 @@ DWARFLocationInterpreter::Interpret(const DWARFLocationEntry &E) { static void dumpExpression(raw_ostream &OS, ArrayRef<uint8_t> Data, bool IsLittleEndian, unsigned AddressSize, const MCRegisterInfo *MRI, DWARFUnit *U) { - DWARFDataExtractor Extractor(toStringRef(Data), IsLittleEndian, AddressSize); + DWARFDataExtractor Extractor(Data, IsLittleEndian, AddressSize); DWARFExpression(Extractor, AddressSize).print(OS, MRI, U); } diff --git a/llvm/tools/llvm-readobj/DwarfCFIEHPrinter.h b/llvm/tools/llvm-readobj/DwarfCFIEHPrinter.h index 0a365d4fe72a..3d0b75f93771 100644 --- a/llvm/tools/llvm-readobj/DwarfCFIEHPrinter.h +++ b/llvm/tools/llvm-readobj/DwarfCFIEHPrinter.h @@ -186,12 +186,9 @@ void PrinterContext<ELFT>::printEHFrame( if (Error E = Result.takeError()) reportError(std::move(E), ObjF->getFileName()); - auto Contents = Result.get(); - DWARFDataExtractor DE( - StringRef(reinterpret_cast<const char *>(Contents.data()), - Contents.size()), - ELFT::TargetEndianness == support::endianness::little, - ELFT::Is64Bits ? 8 : 4); + DWARFDataExtractor DE(*Result, + ELFT::TargetEndianness == support::endianness::little, + ELFT::Is64Bits ? 8 : 4); DWARFDebugFrame EHFrame(Triple::ArchType(ObjF->getArch()), /*IsEH=*/true, /*EHFrameAddress=*/Address); EHFrame.parse(DE); _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits