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]

Re: [PATCH] readelf: Add base to offsets in format_dwarf_addr for debug_loc/ranges.


I pushed both patches to mjw/print_loc_range_base and added the attached
quick testcase for readelf loc, ranges and -N and -U for debuginfo where
there are two CUs with different bases.

Let me know whether there are any more suggestions before I push this to
master.

Thanks,

Mark

commit 37b9e7631ad5c2c16d93bbda1b035bf86e906fa1
Author: Mark Wielaard <mjw@redhat.com>
Date:   Wed Jan 30 11:04:38 2013 +0100

    Add readelf test for --debug-dump=loc --debug-dump=ranges, -N and -U.
    
    Signed-off-by: Mark Wielaard <mjw@redhat.com>

commit 80c2901d744006ccf355f7efff152a6461a4b7e9
Author: Mark Wielaard <mjw@redhat.com>
Date:   Thu Jan 24 11:29:21 2013 +0100

    readelf: Add -U, --unprocessed-values output control.
    
    format_dwarf_addr () takes an extra argument 'raw' that is displayed
    when the user requests unprocessed values output for DWARF data.
    
    Signed-off-by: Mark Wielaard <mjw@redhat.com>

commit 9f13dc23998d202b7c72361acb056a551fd069bc
Author: Mark Wielaard <mjw@redhat.com>
Date:   Fri Jan 18 22:19:08 2013 +0100

    readelf: Add base to offsets in format_dwarf_addr for debug_loc/ranges.
    
    Collect the base address of the CU while creating the listptr_tables
    and use them when printing debug ranges and location entries with
    format_dwarf_addr ().
    
    Signed-off-by: Mark Wielaard <mjw@redhat.com>

>From 37b9e7631ad5c2c16d93bbda1b035bf86e906fa1 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mjw@redhat.com>
Date: Wed, 30 Jan 2013 11:04:38 +0100
Subject: [PATCH] Add readelf test for --debug-dump=loc --debug-dump=ranges, -N and -U.

Signed-off-by: Mark Wielaard <mjw@redhat.com>
---
 tests/ChangeLog          |    7 +++
 tests/Makefile.am        |    3 +-
 tests/run-readelf-loc.sh |  109 ++++++++++++++++++++++++++++++++++++++++++++++
 tests/testfileloc.bz2    |  Bin 0 -> 3148 bytes
 4 files changed, 118 insertions(+), 1 deletions(-)
 create mode 100755 tests/run-readelf-loc.sh
 create mode 100755 tests/testfileloc.bz2

diff --git a/tests/ChangeLog b/tests/ChangeLog
index bc721c7..7f742f4 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,10 @@
+2013-01-30  Mark Wielaard  <mjw@redhat.com>
+
+	* testfileloc.bz2: New testfile.
+	* run-readelf-loc.sh: New test.
+	* Makefile.am (TESTS): Add run-readelf-loc.sh.
+	(EXTRA_DIST): Add run-readelf-loc.sh and testfileloc.bz2.
+
 2013-01-23  Mark Wielaard  <mjw@redhat.com>
 
 	* testfilebasmin.bz2: New testfile.
diff --git a/tests/Makefile.am b/tests/Makefile.am
index f32ea24..39389dd 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -73,7 +73,7 @@ TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \
 	run-nm-self.sh run-readelf-self.sh \
 	run-readelf-test1.sh run-readelf-test2.sh run-readelf-test3.sh \
 	run-readelf-test4.sh run-readelf-twofiles.sh \
-	run-readelf-macro.sh \
+	run-readelf-macro.sh run-readelf-loc.sh \
 	run-native-test.sh run-bug1-test.sh \
 	dwfl-bug-addr-overflow run-addrname-test.sh \
 	dwfl-bug-fd-leak dwfl-bug-report \
@@ -151,6 +151,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
 	     testfile46.bz2 testfile47.bz2 testfile48.bz2 testfile48.debug.bz2 \
 	     testfile49.bz2 testfile50.bz2 testfile51.bz2 \
 	     run-readelf-macro.sh testfilemacro.bz2 \
+	     run-readelf-loc.sh testfileloc.bz2 \
 	     run-readelf-dwz-multi.sh libtestfile_multi_shared.so.bz2 \
 	     testfile_multi.dwz.bz2 testfile_multi_main.bz2 \
 	     run-prelink-addr-test.sh \
diff --git a/tests/run-readelf-loc.sh b/tests/run-readelf-loc.sh
new file mode 100755
index 0000000..6612e7d
--- /dev/null
+++ b/tests/run-readelf-loc.sh
@@ -0,0 +1,109 @@
+#! /bin/sh
+# Copyright (C) 2013 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# - hello.c
+# int say (const char *prefix);
+#
+# static char *
+# subject (char *word, int count)
+# {
+#   return count > 0 ? word : (word + count);
+# }
+#
+# int
+# main (int argc, char **argv)
+# {
+#    return say (subject (argv[0], argc));
+# }
+#
+# - world.c
+# static int
+# sad (char c)
+# {
+#   return c > 0 ? c : c + 1;
+# }
+#
+# static int
+# happy (const char *w)
+# {
+#   return sad (w[1]);
+# }
+#
+# int
+# say (const char *prefix)
+# {
+#   const char *world = "World";
+#   return prefix ? sad (prefix[0]) : happy (world);
+# }
+#
+# gcc -g -O2 -c hello.c
+# gcc -g -O2 -c world.c
+# gcc -g -o testfileloc hello.o world.o
+
+testfiles testfileloc
+
+# Process values as offsets from base addresses and resolve to symbols.
+testrun_compare ../src/readelf --debug-dump=loc --debug-dump=ranges \
+  testfileloc<<\EOF
+
+DWARF section [33] '.debug_loc' at offset 0xd2a:
+ [     0]  0x0000000000400480 <main>..0x000000000040048d <main+0xd> [   0] reg5
+ [    23]  0x0000000000400485 <main+0x5>..0x000000000040048d <main+0xd> [   0] reg5
+ [    46]  0x00000000004004b2 <say+0x12>..0x00000000004004ba <say+0x1a> [   0] breg5 0
+
+DWARF section [34] '.debug_ranges' at offset 0xd94:
+ [     0]  0x0000000000400480 <main>..0x0000000000400482 <main+0x2>
+           0x0000000000400485 <main+0x5>..0x000000000040048d <main+0xd>
+ [    30]  0x00000000004004ad <say+0xd>..0x00000000004004af <say+0xf>
+           0x00000000004004b2 <say+0x12>..0x00000000004004ba <say+0x1a>
+EOF
+
+# Don't resolve addresses to symbols.
+testrun_compare ../src/readelf -N --debug-dump=loc --debug-dump=ranges \
+  testfileloc<<\EOF
+
+DWARF section [33] '.debug_loc' at offset 0xd2a:
+ [     0]  0x0000000000400480..0x000000000040048d [   0] reg5
+ [    23]  0x0000000000400485..0x000000000040048d [   0] reg5
+ [    46]  0x00000000004004b2..0x00000000004004ba [   0] breg5 0
+
+DWARF section [34] '.debug_ranges' at offset 0xd94:
+ [     0]  0x0000000000400480..0x0000000000400482
+           0x0000000000400485..0x000000000040048d
+ [    30]  0x00000000004004ad..0x00000000004004af
+           0x00000000004004b2..0x00000000004004ba
+EOF
+
+# Produce "raw" unprocessed content.
+testrun_compare ../src/readelf -U --debug-dump=loc --debug-dump=ranges \
+  testfileloc<<\EOF
+
+DWARF section [33] '.debug_loc' at offset 0xd2a:
+ [     0]  000000000000000000..0x000000000000000d [   0] reg5
+ [    23]  0x0000000000000005..0x000000000000000d [   0] reg5
+ [    46]  0x0000000000000012..0x000000000000001a [   0] breg5 0
+
+DWARF section [34] '.debug_ranges' at offset 0xd94:
+ [     0]  000000000000000000..0x0000000000000002
+           0x0000000000000005..0x000000000000000d
+ [    30]  0x000000000000000d..0x000000000000000f
+           0x0000000000000012..0x000000000000001a
+EOF
+
+exit 0
diff --git a/tests/testfileloc.bz2 b/tests/testfileloc.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..a436965be58584c232702880c92152c87621f4b2
GIT binary patch
literal 3148
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

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]