This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] 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>
---
 libdw/ChangeLog           |    5 +++++
 libdw/dwarf_getsrclines.c |    3 ++-
 tests/ChangeLog           |    6 ++++++
 tests/Makefile.am         |    3 ++-
 tests/run-get-lines.sh    |   31 +++++++++++++++++++++++++++++--
 tests/testfilenolines.bz2 |  Bin 0 -> 2855 bytes
 6 files changed, 44 insertions(+), 4 deletions(-)
 create mode 100755 tests/testfilenolines.bz2

diff --git a/libdw/ChangeLog b/libdw/ChangeLog
index b4d9dc3..3dc0811 100644
--- a/libdw/ChangeLog
+++ b/libdw/ChangeLog
@@ -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-24  Mark Wielaard  <mjw@redhat.com>
 
 	* Makefile.am: Use AM_CPPFLAGS instead of INCLUDES.
diff --git a/libdw/dwarf_getsrclines.c b/libdw/dwarf_getsrclines.c
index 5a58b78..fa4dd18 100644
--- a/libdw/dwarf_getsrclines.c
+++ b/libdw/dwarf_getsrclines.c
@@ -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;
diff --git a/tests/ChangeLog b/tests/ChangeLog
index f6c004c..b2ac80f 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -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-29  Mark Wielaard  <mjw@redhat.com>
 
 	* test-subr.sh: Don't use pushd, just cd into test-dir.
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 4b57703..6327edb 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -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'
diff --git a/tests/run-get-lines.sh b/tests/run-get-lines.sh
index 5a220ca..fb48c77 100755
--- a/tests/run-get-lines.sh
+++ b/tests/run-get-lines.sh
@@ -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
diff --git a/tests/testfilenolines.bz2 b/tests/testfilenolines.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..23cd7223a8e257c2ec1c58d92fcf56c67804b331
GIT binary patch
literal 2855
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
FZ$Mh?5)J?W

literal 0
HcmV?d00001

-- 
1.7.1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]