forked from OSchip/llvm-project
[LLDB][NativePDB] Fix image lookup by address
`image lookup -a ` doesn't work because the compilands list is always empty. Create CU at given index if doesn't exit. Differential Revision: https://reviews.llvm.org/D113821
This commit is contained in:
parent
95edd7f53e
commit
f17404a733
|
@ -945,11 +945,11 @@ uint32_t SymbolFileNativePDB::ResolveSymbolContext(
|
||||||
llvm::Optional<uint16_t> modi = m_index->GetModuleIndexForVa(file_addr);
|
llvm::Optional<uint16_t> modi = m_index->GetModuleIndexForVa(file_addr);
|
||||||
if (!modi)
|
if (!modi)
|
||||||
return 0;
|
return 0;
|
||||||
CompilandIndexItem *cci = m_index->compilands().GetCompiland(*modi);
|
CompUnitSP cu_sp = GetCompileUnitAtIndex(modi.getValue());
|
||||||
if (!cci)
|
if (!cu_sp)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
sc.comp_unit = GetOrCreateCompileUnit(*cci).get();
|
sc.comp_unit = cu_sp.get();
|
||||||
resolved_flags |= eSymbolContextCompUnit;
|
resolved_flags |= eSymbolContextCompUnit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
// clang-format off
|
||||||
|
// REQUIRES: lld, x86
|
||||||
|
|
||||||
|
// RUN: %clang_cl --target=x86_64-windows-msvc -Od -Z7 -GR- -c /Fo%t.obj -- %s
|
||||||
|
// RUN: lld-link -debug:full -nodefaultlib -entry:main %t.obj -base:0x400000 -out:%t.exe -pdb:%t.pdb
|
||||||
|
// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -O "target create %t.exe" -o "image lookup -a 0x401000" -o "exit" | FileCheck %s --check-prefix=ADDRESS
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ADDRESS: image lookup -a 0x401000
|
||||||
|
// ADDRESS: Address: lookup-by-address.cpp.tmp.exe[0x{{0+}}401000] (lookup-by-address.cpp.tmp.exe..text
|
||||||
|
// ADDRESS: Summary: lookup-by-address.cpp.tmp.exe`main at lookup-by-address.cpp:7
|
Loading…
Reference in New Issue