mirror of
https://github.com/intel/llvm.git
synced 2026-01-26 12:26:52 +08:00
Fix for Bug 25338
Summary: The issue arises because LLDB is not able to read the vdso library correctly. The fix adds memory allocation callbacks to allocate sufficient memory in case the requested offsets don't fit in the memory buffer allocated for the ELF. Reviewers: lldb-commits, clayborg, deepak2427, ovyalov, labath, tberghammer Differential Revision: http://reviews.llvm.org/D16107 llvm-svn: 258122
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
#include <stdint.h>
|
||||
|
||||
// C++ Includes
|
||||
#include <functional>
|
||||
#include <vector>
|
||||
|
||||
// Other libraries and framework includes
|
||||
@@ -231,6 +232,7 @@ private:
|
||||
typedef DynamicSymbolColl::const_iterator DynamicSymbolCollConstIter;
|
||||
|
||||
typedef std::map<lldb::addr_t, lldb::AddressClass> FileAddressToAddressClassMap;
|
||||
typedef std::function<lldb::offset_t (lldb_private::DataExtractor &, lldb::offset_t, lldb::offset_t)> SetDataFunction;
|
||||
|
||||
/// Version of this reader common to all plugins based on this class.
|
||||
static const uint32_t m_plugin_version = 1;
|
||||
@@ -279,7 +281,7 @@ private:
|
||||
// Parses the ELF program headers.
|
||||
static size_t
|
||||
GetProgramHeaderInfo(ProgramHeaderColl &program_headers,
|
||||
lldb_private::DataExtractor &data,
|
||||
const SetDataFunction &set_data,
|
||||
const elf::ELFHeader &header);
|
||||
|
||||
// Finds PT_NOTE segments and calculates their crc sum.
|
||||
@@ -302,7 +304,7 @@ private:
|
||||
/// Parses the elf section headers and returns the uuid, debug link name, crc, archspec.
|
||||
static size_t
|
||||
GetSectionHeaderInfo(SectionHeaderColl §ion_headers,
|
||||
lldb_private::DataExtractor &data,
|
||||
const SetDataFunction &set_data,
|
||||
const elf::ELFHeader &header,
|
||||
lldb_private::UUID &uuid,
|
||||
std::string &gnu_debuglink_file,
|
||||
@@ -437,6 +439,13 @@ private:
|
||||
|
||||
static lldb_private::Error
|
||||
RefineModuleDetailsFromNote (lldb_private::DataExtractor &data, lldb_private::ArchSpec &arch_spec, lldb_private::UUID &uuid);
|
||||
|
||||
|
||||
static lldb::offset_t
|
||||
SetData(const lldb_private::DataExtractor &src, lldb_private::DataExtractor &dst, lldb::offset_t offset, lldb::offset_t length);
|
||||
|
||||
lldb::offset_t
|
||||
SetDataWithReadMemoryFallback(lldb_private::DataExtractor &dst, lldb::offset_t offset, lldb::offset_t length);
|
||||
};
|
||||
|
||||
#endif // liblldb_ObjectFileELF_h_
|
||||
|
||||
Reference in New Issue
Block a user