]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
<dwarf>: Different way to test the iterator fix
authorPetr Machata <pmachata@redhat.com>
Wed, 25 Mar 2009 23:50:23 +0000 (00:50 +0100)
committerPetr Machata <pmachata@redhat.com>
Wed, 25 Mar 2009 23:50:23 +0000 (00:50 +0100)
tests/Makefile.am
tests/dwarf-attributes.cc [deleted file]
tests/dwarf-attributes.sh [new file with mode: 0755]
tests/run-dwarf-attributes.sh

index d554f1a577a2705db8620569135962e782d48353..3efc31421719d9baf367b3873d7cde60f0656c9f 100644 (file)
@@ -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 (file)
index 9e9b291..0000000
+++ /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
-   <http://www.openinventionnetwork.com>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <errno.h>
-#include <error.h>
-#include <fcntl.h>
-#include <clocale>
-#include <libintl.h>
-#include <ostream>
-#include <iomanip>
-#include <known-dwarf.h>
-
-#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 (executable)
index 0000000..be3363e
--- /dev/null
@@ -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
+# <http://www.openinventionnetwork.com>.
+
+./dwarf-print "$@" | sed -n '/compile_unit/{p;q;}'
index 05e9b3e627b8515166f6f9d35776f25d0ce3ab88..b03f318bf6d9353a27d187c0577ca429c7092d1a 100755 (executable)
 
 testfiles testfile
 
-testrun_compare ./dwarf-attributes testfile <<\EOF
-testfile:
-16
-18
-17
-3
-27
-37
-19
+testrun_compare $srcdir/dwarf-attributes.sh testfile <<\EOF
+ <compile_unit offset=[0xb] stmt_list=0 high_pc=0x804845a low_pc=0x804842c name="m.c" comp_dir="/home/drepper/gnu/new-bu/build/ttt" producer="GNU C 2.96 20000731 (Red Hat Linux 7.0)" language=0x1>
 EOF
 
 exit 0