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 <[email protected]> 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 <[email protected]> commit 80c2901d744006ccf355f7efff152a6461a4b7e9 Author: Mark Wielaard <[email protected]> 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 <[email protected]> commit 9f13dc23998d202b7c72361acb056a551fd069bc Author: Mark Wielaard <[email protected]> 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 <[email protected]>
>From 37b9e7631ad5c2c16d93bbda1b035bf86e906fa1 Mon Sep 17 00:00:00 2001 From: Mark Wielaard <[email protected]> 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 <[email protected]> --- 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 <[email protected]> + + * 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 <[email protected]> * 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
_______________________________________________ elfutils-devel mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/elfutils-devel
