From: Petr Machata Date: Wed, 25 Mar 2009 23:50:23 +0000 (+0100) Subject: : Different way to test the iterator fix X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=173830ca220c9aff18d2565a13a6ac97665131d0;p=thirdparty%2Felfutils.git : Different way to test the iterator fix --- diff --git a/tests/Makefile.am b/tests/Makefile.am index d554f1a57..3efc31421 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -61,7 +61,7 @@ noinst_PROGRAMS = arextract arsymtest newfile saridx scnnames sectiondump \ dwfl-bug-addr-overflow arls dwfl-bug-fd-leak \ dwfl-addr-sect dwfl-bug-report early-offscn \ dwfl-bug-getmodules \ - dwarf-print dwarf-attributes + dwarf-print # get-ciefde asm_TESTS = asm-tst1 asm-tst2 asm-tst3 asm-tst4 asm-tst5 \ asm-tst6 asm-tst7 asm-tst8 asm-tst9 @@ -144,7 +144,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \ testfile44.S.bz2 testfile44.expect.bz2 run-disasm-x86.sh \ testfile45.S.bz2 testfile45.expect.bz2 run-disasm-x86-64.sh \ testfile46.bz2 testfile47.bz2 testfile48.bz2 testfile48.debug.bz2 \ - testfile49.bz2 + testfile49.bz2 dwarf-attributes.sh installed_TESTS_ENVIRONMENT = libdir=$(DESTDIR)$(libdir) \ bindir=$(DESTDIR)$(bindir) \ @@ -192,9 +192,6 @@ libdwpp = ../libdw/libdwpp.a $(libdw) dwarf_print_SOURCES = dwarf-print.cc dwarf_print_LDADD = $(libdwpp) $(libmudflap) -ldl -dwarf_attributes_SOURCES = dwarf-attributes.cc -dwarf_attributes_LDADD = $(libdwpp) $(libmudflap) -ldl - arextract_LDADD = $(libelf) $(libmudflap) arsymtest_LDADD = $(libelf) $(libmudflap) newfile_LDADD = $(libelf) $(libmudflap) diff --git a/tests/dwarf-attributes.cc b/tests/dwarf-attributes.cc deleted file mode 100644 index 9e9b29178..000000000 --- a/tests/dwarf-attributes.cc +++ /dev/null @@ -1,112 +0,0 @@ -/* Test program for elfutils::dwarf basics. - Copyright (C) 2009 Red Hat, Inc. - This file is part of Red Hat elfutils. - - Red Hat elfutils 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; version 2 of the License. - - Red Hat 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 Red Hat elfutils; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. - - Red Hat elfutils is an included package of the Open Invention Network. - An included package of the Open Invention Network is a package for which - Open Invention Network licensees cross-license their patents. No patent - license is granted, either expressly or impliedly, by designation as an - included package. Should you wish to participate in the Open Invention - Network licensing program, please visit www.openinventionnetwork.com - . */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "c++/dwarf" - -using namespace elfutils; - -const char * -dwarf_attr_string (unsigned int attrnum) -{ - switch (attrnum) - { -#define ONE_KNOWN_DW_AT(NAME, TAG) \ - case TAG: return #NAME; - ALL_KNOWN_DW_AT -#undef ONE_KNOWN_DW_AT - default: - static char buf[40]; - if (attrnum < DW_AT_lo_user) - snprintf (buf, sizeof buf, "unknown attribute %hx", - attrnum); - else - snprintf (buf, sizeof buf, "unknown user attribute %hx", - attrnum); - return buf; - } -} - -static Dwarf * -open_file (const char *fname) -{ - int fd = open (fname, O_RDONLY); - if (unlikely (fd == -1)) - error (2, errno, gettext ("cannot open '%s'"), fname); - Dwarf *dw = dwarf_begin (fd, DWARF_C_READ); - if (dw == NULL) - { - error (2, 0, - gettext ("cannot create DWARF descriptor for '%s': %s"), - fname, dwarf_errmsg (-1)); - } - return dw; -} - -void -process_file (char const *file) -{ - dwarf dw (open_file (file)); - - std::cout << file << ":\n"; - - elfutils::dwarf::compile_unit const &cu = *dw.compile_units ().begin (); - for (elfutils::dwarf::debug_info_entry::attributes::const_iterator - it = cu.attributes ().begin (); it != cu.attributes ().end (); ++it) - { - elfutils::dwarf::attribute at = *it; - std::cout << (*it).first << std::endl; - } -} - -int -main (int argc, char *argv[]) -{ - /* Set locale. */ - (void) setlocale (LC_ALL, ""); - - /* Make sure the message catalog can be found. */ - (void) bindtextdomain (PACKAGE_TARNAME, LOCALEDIR); - - /* Initialize the message catalog. */ - (void) textdomain (PACKAGE_TARNAME); - - for (int i = 1; i < argc; ++i) - process_file (argv[i]); - - return 0; -} diff --git a/tests/dwarf-attributes.sh b/tests/dwarf-attributes.sh new file mode 100755 index 000000000..be3363e78 --- /dev/null +++ b/tests/dwarf-attributes.sh @@ -0,0 +1,26 @@ +#! /bin/sh +# Copyright (C) 2009 Red Hat, Inc. +# This file is part of Red Hat elfutils. +# +# Red Hat elfutils 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; version 2 of the License. +# +# Red Hat 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 Red Hat elfutils; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. +# +# Red Hat elfutils is an included package of the Open Invention Network. +# An included package of the Open Invention Network is a package for which +# Open Invention Network licensees cross-license their patents. No patent +# license is granted, either expressly or impliedly, by designation as an +# included package. Should you wish to participate in the Open Invention +# Network licensing program, please visit www.openinventionnetwork.com +# . + +./dwarf-print "$@" | sed -n '/compile_unit/{p;q;}' diff --git a/tests/run-dwarf-attributes.sh b/tests/run-dwarf-attributes.sh index 05e9b3e62..b03f318bf 100755 --- a/tests/run-dwarf-attributes.sh +++ b/tests/run-dwarf-attributes.sh @@ -28,15 +28,8 @@ testfiles testfile -testrun_compare ./dwarf-attributes testfile <<\EOF -testfile: -16 -18 -17 -3 -27 -37 -19 +testrun_compare $srcdir/dwarf-attributes.sh testfile <<\EOF + EOF exit 0