mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
[DWARF] check whether the DIE is valid before querying for information
Differential Revision: https://reviews.llvm.org/D60147 llvm-svn: 357607
This commit is contained in:
parent
1bef4155b3
commit
40e80710a0
@ -925,6 +925,9 @@ DWARFContext::DIEsForAddress DWARFContext::getDIEsForAddress(uint64_t Address) {
|
||||
DWARFDie DIE = Worklist.back();
|
||||
Worklist.pop_back();
|
||||
|
||||
if (!DIE.isValid())
|
||||
continue;
|
||||
|
||||
if (DIE.getTag() == DW_TAG_lexical_block &&
|
||||
DIE.addressRangeContainsAddress(Address)) {
|
||||
Result.BlockDIE = DIE;
|
||||
|
11
test/DebugInfo/dwarfdump-bad-lookup-address.test
Normal file
11
test/DebugInfo/dwarfdump-bad-lookup-address.test
Normal file
@ -0,0 +1,11 @@
|
||||
#RUN: llvm-dwarfdump -lookup 1161 %p/Inputs/dwarfdump-test.macho-i386.o | FileCheck %s
|
||||
|
||||
// When we pass an address to getDIEsFromAddress that doesn't belong to any DIE
|
||||
// (only to a CU), this function is triggering an assert, which is not the
|
||||
// intended behavior (as the address still belongs to a CU).
|
||||
|
||||
#CHECK: DW_TAG_compile_unit
|
||||
#CHECK-NEXT: DW_AT_producer{{.*}}"clang version 3.6.2 (tags/RELEASE_362/final)"
|
||||
#CHECK-NEXT: DW_AT_language{{.*}}DW_LANG_C_plus_plus
|
||||
#CHECK-NEXT: DW_AT_name{{.*}}"dwarfdump-test.cc"
|
||||
#CHECK-NOT: DW_TAG
|
Loading…
Reference in New Issue
Block a user