mirror of
https://github.com/openharmony/third_party_elfutils.git
synced 2026-07-19 19:43:34 -04:00
libdw: dwarf_getsrclines don't set end_sequence when there are no lines.
Some CUs might only have a file list, but no actual source lines in their statement list. Only set end_sequence at the end of the source lines list if there are actually lines. Signed-off-by: Mark Wielaard <mjw@redhat.com>
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
2013-05-03 Mark Wielaard <mjw@redhat.com>
|
||||
|
||||
* dwarf_getsrclines.c (dwarf_getsrclines): Only set end_sequence
|
||||
when nlinelist > 0.
|
||||
|
||||
2013-04-28 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* libdw.map (ELFUTILS_0.156): New.
|
||||
|
||||
@@ -715,7 +715,8 @@ dwarf_getsrclines (Dwarf_Die *cudie, Dwarf_Lines **lines, size_t *nlines)
|
||||
/* 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;
|
||||
if (nlinelist > 0)
|
||||
cu->lines->info[nlinelist - 1].end_sequence = 1;
|
||||
|
||||
/* Success. */
|
||||
res = 0;
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
2013-05-03 Mark Wielaard <mjw@redhat.com>
|
||||
|
||||
* testfilenolines.bz2: New test file.
|
||||
* Makefile.am (EXTRA_DIST): Add testfilenolines.bz2.
|
||||
* run-get-lines.sh: Run testrun_compare on testfilenolines.
|
||||
|
||||
2013-04-30 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* dwfl-report-elf-align.c: Use false add_p_vaddr for dwfl_report_elf.
|
||||
|
||||
+2
-1
@@ -198,7 +198,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
|
||||
testfile69.core.bz2 testfile69.so.bz2 \
|
||||
testfile70.core.bz2 testfile70.exec.bz2 \
|
||||
run-dwfllines.sh run-dwfl-report-elf-align.sh \
|
||||
testfile-dwfl-report-elf-align-shlib.so.bz2
|
||||
testfile-dwfl-report-elf-align-shlib.so.bz2 \
|
||||
testfilenolines
|
||||
|
||||
if USE_VALGRIND
|
||||
valgrind_cmd='valgrind -q --trace-children=yes --error-exitcode=1 --run-libc-freeres=no'
|
||||
|
||||
+29
-2
@@ -1,5 +1,5 @@
|
||||
#! /bin/sh
|
||||
# Copyright (C) 1999, 2000, 2002, 2004, 2005 Red Hat, Inc.
|
||||
# Copyright (C) 1999, 2000, 2002, 2004, 2005, 2013 Red Hat, Inc.
|
||||
# This file is part of elfutils.
|
||||
# Written by Ulrich Drepper <drepper@redhat.com>, 1999.
|
||||
#
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
. $srcdir/test-subr.sh
|
||||
|
||||
testfiles testfile testfile2
|
||||
testfiles testfile testfile2 testfilenolines
|
||||
|
||||
testrun_compare ${abs_builddir}/get-lines testfile testfile2 <<\EOF
|
||||
cuhl = 11, o = 0, asz = 4, osz = 4, ncu = 191
|
||||
@@ -61,4 +61,31 @@ cuhl = 11, o = 267, asz = 4, osz = 4, ncu = 2680
|
||||
10000514: /shoggoth/drepper/m.c:8:0: is_stmt:yes, end_seq:yes, bb:no, prologue:no, epilogue:no
|
||||
EOF
|
||||
|
||||
# - lines.c
|
||||
# int ft;
|
||||
#
|
||||
# int
|
||||
# main (int argc, char **argv)
|
||||
# {
|
||||
# return ft - 42;
|
||||
# }
|
||||
#
|
||||
# - nolines.c
|
||||
# int ft = 42;
|
||||
#
|
||||
# gcc -g -c lines.c
|
||||
# gcc -g -c nolines.c
|
||||
# gcc -g -o testfilenolines lines.o nolines.o
|
||||
|
||||
testrun_compare ${abs_builddir}/get-lines testfilenolines <<\EOF
|
||||
cuhl = 11, o = 0, asz = 8, osz = 4, ncu = 169
|
||||
4 lines
|
||||
400474: /home/mark/src/tests/lines.c:5:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
|
||||
40047f: /home/mark/src/tests/lines.c:6:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
|
||||
400488: /home/mark/src/tests/lines.c:7:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
|
||||
40048a: /home/mark/src/tests/lines.c:7:0: is_stmt:yes, end_seq:yes, bb:no, prologue:no, epilogue:no
|
||||
cuhl = 11, o = 125, asz = 8, osz = 4, ncu = 243
|
||||
0 lines
|
||||
EOF
|
||||
|
||||
exit 0
|
||||
|
||||
Executable
BIN
Binary file not shown.
Reference in New Issue
Block a user