From: Mark Wielaard Date: Mon, 25 Mar 2013 16:07:21 +0000 (+0100) Subject: libdw: dwarf_getsrclines mark highest address as end_sequence. X-Git-Tag: elfutils-0.156~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=60ef9ab76eecfa175bc0bea4ab6005a947987781;p=thirdparty%2Felfutils.git libdw: dwarf_getsrclines mark highest address as end_sequence. Make sure the highest address for the CU is marked as end_sequence. This is required by the DWARF spec, but some compilers forget and dwfl_module_getsrc depends on it. We could reject it as bad DWARF but the DWARF .debug_lines spec is much stricter than what compilers seem to output in practice. Signed-off-by: Mark Wielaard --- diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 16acf5cd3..12df9bbe1 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,8 @@ +2013-03-25 Mark Wielaard + + * dwarf_getsrclines.c (dwarf_getsrclines): Mark highest address as + end_sequence. + 2013-03-12 Mark Wielaard * dwarf_getsrcfiles.c (dwarf_getsrcfiles): Allow DW_TAG_partial_unit. diff --git a/libdw/dwarf_getsrclines.c b/libdw/dwarf_getsrclines.c index c24aebb59..5a58b7831 100644 --- a/libdw/dwarf_getsrclines.c +++ b/libdw/dwarf_getsrclines.c @@ -712,6 +712,11 @@ dwarf_getsrclines (Dwarf_Die *cudie, Dwarf_Lines **lines, size_t *nlines) cu->lines->info[i].files = files; } + /* Make sure the highest address for the CU is marked as end_sequence. + This is required by the DWARF spec, but some compilers forget and + dwfl_module_getsrc depends on it. */ + cu->lines->info[nlinelist - 1].end_sequence = 1; + /* Success. */ res = 0; }