diff options
author | Tamas Berghammer <tberghammer@google.com> | 2015-06-18 20:43:56 +0000 |
---|---|---|
committer | Tamas Berghammer <tberghammer@google.com> | 2015-06-18 20:43:56 +0000 |
commit | 783bfc8caa4c50c0248f90ea7adf2dbd1e48f4e7 (patch) | |
tree | 694f259f810cd5047c9525287ec609d39d78fede /lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp | |
parent | d2158755eb718da05fc0ba817b9b7fb64d74a54f (diff) | |
download | bcm5719-llvm-783bfc8caa4c50c0248f90ea7adf2dbd1e48f4e7.tar.gz bcm5719-llvm-783bfc8caa4c50c0248f90ea7adf2dbd1e48f4e7.zip |
Fetch object file load address if it isn't specified by the linker
Differential revision: http://reviews.llvm.org/D10490
llvm-svn: 240052
Diffstat (limited to 'lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp')
-rw-r--r-- | lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp index be07b436580..be4b3193050 100644 --- a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp @@ -3649,6 +3649,39 @@ NativeProcessLinux::GetLoadedModuleFileSpec(const char* module_path, FileSpec& f } Error +NativeProcessLinux::GetFileLoadAddress(const llvm::StringRef& file_name, lldb::addr_t& load_addr) +{ + load_addr = LLDB_INVALID_ADDRESS; + Error error = ProcFileReader::ProcessLineByLine (GetID (), "maps", + [&] (const std::string &line) -> bool + { + StringRef maps_row(line); + + SmallVector<StringRef, 16> maps_columns; + maps_row.split(maps_columns, StringRef(" "), -1, false); + + if (maps_columns.size() < 6) + { + // Return true to continue reading the proc file + return true; + } + + if (maps_columns[5] == file_name) + { + StringExtractor addr_extractor(maps_columns[0].str().c_str()); + load_addr = addr_extractor.GetHexMaxU64(false, LLDB_INVALID_ADDRESS); + + // Return false to stop reading the proc file further + return false; + } + + // Return true to continue reading the proc file + return true; + }); + return error; +} + +Error NativeProcessLinux::ResumeThread( lldb::tid_t tid, NativeThreadLinux::ResumeThreadFunction request_thread_resume_function, |