Hi, This adds minimal low-level support for .debug_macro/DW_AT_GNU_macros as proposed here http://www.dwarfstd.org/ShowIssue.php?issue=110722.1 and implemented in gcc 4.7 (-g3). It is just enough to not barf on it when we encounter the new attribute and to sanity check the attribute form offsets. I added two small testfiles one using .debug_macinfo and one using the new .debug_macros.
I haven't yet added the new DW_MACRO values to interpret the actual contents. We might not even want/need to if gor higher-level support we just reuse the DW_MACINFO values with the dwarf_getmacros (), dwarf_macro_opcode (), dwarf_macro_param1 () and dwarf_macro_param2 () interface. The new define/undef and start_file/end_file opcodes encode the same information (and use the same values). There is no vendor_ext. There are three new opcodes define_indirect, undef_indirect and transparent_include. The first two are identical to define/undef, but take their arguments differently. And transparent_include makes it possible to reuse opcodes from somewhere else in the section. These seems to be just the kind of thing that our interface wants to hide from the user. So we would just return the original DW_MACINFO_define opcode numbers and provide the param1/2 as we do now (just fetch them from different places). Does that sound like a plan? Cheers, Mark
From 5660f170b2194b35e0ed0040908d775a53553a2b Mon Sep 17 00:00:00 2001 From: Mark Wielaard <m...@redhat.com> Date: Mon, 25 Jun 2012 17:18:53 +0200 Subject: [PATCH] Add low-level support for .debug_macro. Signed-off-by: Mark Wielaard <m...@redhat.com> --- libdw/ChangeLog | 7 +++++ libdw/dwarf.h | 5 ++++ libdw/dwarf_begin_elf.c | 1 + libdw/dwarf_formudata.c | 10 +++++++- libdw/libdwP.h | 1 + libebl/ChangeLog | 4 +++ libebl/eblopenbackend.c | 2 + src/ChangeLog | 4 +++ src/readelf.c | 4 +++ tests/ChangeLog | 6 +++++ tests/Makefile.am | 6 +++- tests/run-macro-test.sh | 53 ++++++++++++++++++++++++++++++++++++++++++++ tests/testfile-macinfo.bz2 | Bin 0 -> 6689 bytes tests/testfile-macros.bz2 | Bin 0 -> 7882 bytes 14 files changed, 100 insertions(+), 3 deletions(-) create mode 100755 tests/run-macro-test.sh create mode 100755 tests/testfile-macinfo.bz2 create mode 100755 tests/testfile-macros.bz2 diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 3ff83e4..48bbaa0 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,10 @@ +2012-06-26 Mark Wielaard <m...@redhat.com> + + * libdwP.h: Add IDX_debug_macro. + * dwarf.h: Add DW_AT_GNU_macros. + * dwarf_begin_elf.c (dwarf_scnnames): Add .debug_macro. + * dwarf_formudata.c (dwarf_formudata): Recognize DW_AT_GNU_macros. + 2012-04-27 Mark Wielaard <m...@redhat.com> * libdw/dwarf_highpc.c (dwarf_highpc): Handle DW_AT_high_pc being diff --git a/libdw/dwarf.h b/libdw/dwarf.h index 38f663d..41a1024 100644 --- a/libdw/dwarf.h +++ b/libdw/dwarf.h @@ -267,6 +267,11 @@ enum DW_AT_GNU_all_call_sites = 0x2117, DW_AT_GNU_all_source_call_sites = 0x2118, + /* More compact macro information - .debug_macro section + http://www.dwarfstd.org/ShowIssue.php?issue=110722.1 + offset into .debug_macro section. */ + DW_AT_GNU_macros = 0x2119, + DW_AT_hi_user = 0x3fff }; diff --git a/libdw/dwarf_begin_elf.c b/libdw/dwarf_begin_elf.c index fc6ac8d..3e01800 100644 --- a/libdw/dwarf_begin_elf.c +++ b/libdw/dwarf_begin_elf.c @@ -61,6 +61,7 @@ static const char dwarf_scnnames[IDX_last][17] = [IDX_debug_pubnames] = ".debug_pubnames", [IDX_debug_str] = ".debug_str", [IDX_debug_macinfo] = ".debug_macinfo", + [IDX_debug_macro] = ".debug_macro", [IDX_debug_ranges] = ".debug_ranges" }; #define ndwarf_scnnames (sizeof (dwarf_scnnames) / sizeof (dwarf_scnnames[0])) diff --git a/libdw/dwarf_formudata.c b/libdw/dwarf_formudata.c index f5b2a1a..f08e0d8 100644 --- a/libdw/dwarf_formudata.c +++ b/libdw/dwarf_formudata.c @@ -140,13 +140,21 @@ dwarf_formudata (attr, return_uval) break; case DW_AT_macro_info: - /* macptr */ + /* macptr into .debug_macinfo */ if (__libdw_formptr (attr, IDX_debug_macinfo, DWARF_E_NO_ENTRY, NULL, return_uval) == NULL) return -1; break; + case DW_AT_GNU_macros: + /* macptr into .debug_macro */ + if (__libdw_formptr (attr, IDX_debug_macro, + DWARF_E_NO_ENTRY, NULL, + return_uval) == NULL) + return -1; + break; + case DW_AT_ranges: case DW_AT_start_scope: /* rangelistptr */ diff --git a/libdw/libdwP.h b/libdw/libdwP.h index 3c1925b..77e1b31 100644 --- a/libdw/libdwP.h +++ b/libdw/libdwP.h @@ -71,6 +71,7 @@ enum IDX_debug_pubnames, IDX_debug_str, IDX_debug_macinfo, + IDX_debug_macro, IDX_debug_ranges, IDX_last }; diff --git a/libebl/ChangeLog b/libebl/ChangeLog index ac2160d..941ed6f 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,3 +1,7 @@ +2011-06-26 Mark Wielaard <m...@redhat.com> + + * eblopenbackend.c (default_debugscn_p): Add .debug_macro. + 2011-04-26 Mark Wielaard <m...@redhat.com> * libebl.h (ebl_object_note_type_name): Add const char *name arg. diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c index 9789ef3..b39ab2e 100644 --- a/libebl/eblopenbackend.c +++ b/libebl/eblopenbackend.c @@ -646,6 +646,8 @@ default_debugscn_p (const char *name) ".debug_types", /* GDB DWARF 4 extension */ ".gdb_index", + /* GNU/DWARF 5 extension/proposal */ + ".debug_macro", /* SGI/MIPS DWARF 2 extensions */ ".debug_weaknames", ".debug_funcnames", diff --git a/src/ChangeLog b/src/ChangeLog index 40905b8..2928ab1 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2012-06-26 Mark Wielaard <m...@redhat.com> + + * readelf.c (dwarf_attr_string): Add DW_AT_GNU_macros. + 2012-06-22 Mark Wielaard <m...@redhat.com> * readelf.c (print_ops): Cast printf PRIu/x64 arguments to uint64_t diff --git a/src/readelf.c b/src/readelf.c index d182ab5..eb1d469 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -3590,6 +3590,10 @@ dwarf_attr_string (unsigned int attrnum) result = "GNU_all_source_call_sites"; break; + case DW_AT_GNU_macros: + result = "GNU_macros"; + break; + default: if (attrnum < DW_AT_lo_user) snprintf (buf, sizeof buf, gettext ("unknown attribute %hx"), diff --git a/tests/ChangeLog b/tests/ChangeLog index 6f5e458..9b64917 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,9 @@ +2012-06-26 Mark Wielaard <m...@redhat.com> + + * run-macro-test.sh: New test. + * testfile-macinfo.bz2: New testfile. + * testfile-macros.bz2: Likewise. + 2012-05-07 Mark Wielaard <m...@redhat.com> * low_high_pc.c: Use proper inttypes in printf formats. diff --git a/tests/Makefile.am b/tests/Makefile.am index ced7831..39e58ae 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -79,7 +79,8 @@ TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \ run-early-offscn.sh run-dwarf-getmacros.sh \ run-test-flag-nobits.sh run-prelink-addr-test.sh \ run-dwarf-getstring.sh run-rerequest_tag.sh run-typeiter.sh \ - run-readelf-d.sh run-unstrip-n.sh run-low_high_pc.sh + run-readelf-d.sh run-unstrip-n.sh run-low_high_pc.sh \ + run-macro-test.sh if !STANDALONE noinst_PROGRAMS += msg_tst md5-sha1-test @@ -157,7 +158,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \ run-typeiter.sh testfile59.bz2 \ run-readelf-d.sh testlib_dynseg.so.bz2 \ run-unstrip-n.sh testcore-rtlib.bz2 \ - run-low_high_pc.sh testfile_low_high_pc.bz2 + run-low_high_pc.sh testfile_low_high_pc.bz2 \ + run-macro-test.sh testfile-macinfo.bz2 testfile-macros.bz2 installed_TESTS_ENVIRONMENT = libdir=$(DESTDIR)$(libdir) \ bindir=$(DESTDIR)$(bindir) \ diff --git a/tests/run-macro-test.sh b/tests/run-macro-test.sh new file mode 100755 index 0000000..70a16ed --- /dev/null +++ b/tests/run-macro-test.sh @@ -0,0 +1,53 @@ +#! /bin/sh +# Copyright (C) 2012 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 + +# #include <string.h> +# +# #define HELLO "world" +# +# int +# main(int argc, char ** argv) +# { +# return strlen (HELLO); +# } +# +# gcc -gdwarf-4 -g3 -o testfile-macros macro.c +# gcc -gstrict-dwarf -gdwarf-4 -g3 -o testfile-macinfo macro.c + +testfiles testfile-macinfo testfile-macros + +status=0 + +testrun ../src/readelf --debug-dump=info testfile-macinfo \ + | grep macro_info > readelf.macros.out || + { echo "*** failure readelf --debug-dump=info testfile-macinfo"; status=1; } +testrun_compare cat readelf.macros.out <<\EOF + macro_info (sec_offset) 0 +EOF + +testrun ../src/readelf --debug-dump=info testfile-macros \ + | grep GNU_macros > readelf.macros.out || + { echo "*** failure readelf --debug-dump=info testfile-macros"; status=1; } +testrun_compare cat readelf.macros.out <<\EOF + GNU_macros (sec_offset) 0 +EOF + +rm -f readelf.macros.out + +exit $status diff --git a/tests/testfile-macinfo.bz2 b/tests/testfile-macinfo.bz2 new file mode 100755 index 0000000000000000000000000000000000000000..e6cc5f1c246de436dce5b8df176963887d27f7f7 GIT binary patch literal 6689 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 literal 0 HcmV?d00001 diff --git a/tests/testfile-macros.bz2 b/tests/testfile-macros.bz2 new file mode 100755 index 0000000000000000000000000000000000000000..d74df94c62c8f29a046ebea0aae8e2e3e9454f5a GIT binary patch literal 7882 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 literal 0 HcmV?d00001 -- 1.7.7.6
_______________________________________________ elfutils-devel mailing list elfutils-devel@lists.fedorahosted.org https://fedorahosted.org/mailman/listinfo/elfutils-devel