blob: 46b244b1315a5b4fe03e9dc026955593dca8b9d0 [file] [log] [blame]
RUN: llvm-symbolizer --dwp=%p/Inputs/split-dwarf-dwp-invalid.dwp \
RUN: --obj=%p/Inputs/split-dwarf-dwp-invalid \
RUN: 0x0000000000001140 0x0000000000001130 0x0000000000001130 \
RUN: 2>&1 | FileCheck %s
The test contains a hand-modified dwp file containing an invalid DWARF version
in the second-queried CU.
This ensures llvm-symbolizer doesn't crash when trying to access the invalid CU
a second time (the first time works fine, the second fails the sorted search
because of a null entry that can't be sorted/compared)
One warning rather than two would be good here, but we put the CUs in an
offset-sorted list, so a null entry in that list makes it impossible to sort
(since it has no offset), so on failure we don't put anything in the list,
which means next time it's queried it is parsed again and fails and warns
again. We could make the list a pair of {offset, pointer} but that'd require
fixing up a bunch of clients probably (possibly by providing a filter iterator
that skips the null entries, keeping those only as an implementation detail?) -
or perhaps just have a separate list of offsets that have failed to parse
previously?
CHECK: warning: DWARF unit at offset 0x00000000 has unsupported version 255, supported are 2-5
CHECK: warning: DWARF unit at offset 0x00000000 has unsupported version 255, supported are 2-5
CHECK: other()
CHECK: /usr/local/google/home/blaikie/dev/scratch{{[/\\]}}other.cpp:1:16
CHECK: main
CHECK: /usr/local/google/home/blaikie/dev/scratch{{[/\\]}}test.cpp:5:0
CHECK: main
CHECK: /usr/local/google/home/blaikie/dev/scratch{{[/\\]}}test.cpp:5:0