diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2020-10-31 18:42:03 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2020-10-31 18:42:03 +0000 |
commit | 6405260fedcb91c720fc498be637c4c99a033265 (patch) | |
tree | f4c56fc73eef01bb08fd8b8b11ef31736cfd85ea /contrib | |
parent | 3b82cf0e189ea1bca1a8cacba6334684e106abd9 (diff) | |
download | src-test2-6405260fedcb91c720fc498be637c4c99a033265.tar.gz src-test2-6405260fedcb91c720fc498be637c4c99a033265.zip |
Notes
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/llvm-project/lldb/source/Target/Target.cpp | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/contrib/llvm-project/lldb/source/Target/Target.cpp b/contrib/llvm-project/lldb/source/Target/Target.cpp index 83e6f3062666..47e4c78496ab 100644 --- a/contrib/llvm-project/lldb/source/Target/Target.cpp +++ b/contrib/llvm-project/lldb/source/Target/Target.cpp @@ -2412,21 +2412,13 @@ lldb::addr_t Target::GetPersistentSymbol(ConstString name) { llvm::Expected<lldb_private::Address> Target::GetEntryPointAddress() { Module *exe_module = GetExecutableModulePointer(); - llvm::Error error = llvm::Error::success(); - assert(!error); // Check the success value when assertions are enabled. - if (!exe_module || !exe_module->GetObjectFile()) { - error = llvm::make_error<llvm::StringError>("No primary executable found", - llvm::inconvertibleErrorCode()); - } else { + // Try to find the entry point address in the primary executable. + const bool has_primary_executable = exe_module && exe_module->GetObjectFile(); + if (has_primary_executable) { Address entry_addr = exe_module->GetObjectFile()->GetEntryPointAddress(); if (entry_addr.IsValid()) return entry_addr; - - error = llvm::make_error<llvm::StringError>( - "Could not find entry point address for executable module \"" + - exe_module->GetFileSpec().GetFilename().GetStringRef() + "\"", - llvm::inconvertibleErrorCode()); } const ModuleList &modules = GetImages(); @@ -2437,14 +2429,21 @@ llvm::Expected<lldb_private::Address> Target::GetEntryPointAddress() { continue; Address entry_addr = module_sp->GetObjectFile()->GetEntryPointAddress(); - if (entry_addr.IsValid()) { - // Discard the error. - llvm::consumeError(std::move(error)); + if (entry_addr.IsValid()) return entry_addr; - } } - return std::move(error); + // We haven't found the entry point address. Return an appropriate error. + if (!has_primary_executable) + return llvm::make_error<llvm::StringError>( + "No primary executable found and could not find entry point address in " + "any executable module", + llvm::inconvertibleErrorCode()); + + return llvm::make_error<llvm::StringError>( + "Could not find entry point address for primary executable module \"" + + exe_module->GetFileSpec().GetFilename().GetStringRef() + "\"", + llvm::inconvertibleErrorCode()); } lldb::addr_t Target::GetCallableLoadAddress(lldb::addr_t load_addr, |