This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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]

[PATCH 9/9] [libbacktrace] Add printdwarftest_dwz_cmp.sh test-case


2018-12-10  Tom de Vries  <tdevries@suse.de>

	* Makefile.am (TESTS): Add printdwarftest_dwz_cmp.sh.
	* Makefile.in: Regenerate.
	* printdwarftest.c: New file.
	* printdwarftest_dwz_cmp.sh: New file.
---
 libbacktrace/Makefile.am               |  11 ++
 libbacktrace/Makefile.in               |  75 +++++++---
 libbacktrace/printdwarftest.c          | 241 +++++++++++++++++++++++++++++++++
 libbacktrace/printdwarftest_dwz_cmp.sh |   8 ++
 4 files changed, 315 insertions(+), 20 deletions(-)
 create mode 100644 libbacktrace/printdwarftest.c
 create mode 100755 libbacktrace/printdwarftest_dwz_cmp.sh

diff --git a/libbacktrace/Makefile.am b/libbacktrace/Makefile.am
index 497cc2f5c97..f270cf16833 100644
--- a/libbacktrace/Makefile.am
+++ b/libbacktrace/Makefile.am
@@ -167,6 +167,17 @@ if HAVE_DWZ
 
 TESTS += btest_dwz
 
+printdwarftest.lo: dwarf.c
+
+printdwarftest_SOURCES = printdwarftest.c testlib.c
+printdwarftest_LDADD = libbacktrace.la
+
+check_PROGRAMS += printdwarftest
+
+printdwarftest_dwz_cmp.sh: printdwarftest_dwz
+
+TESTS += printdwarftest_dwz_cmp.sh
+
 endif HAVE_DWZ
 
 stest_SOURCES = stest.c
diff --git a/libbacktrace/Makefile.in b/libbacktrace/Makefile.in
index 0abfcb42460..d5cc8e958c4 100644
--- a/libbacktrace/Makefile.in
+++ b/libbacktrace/Makefile.in
@@ -120,17 +120,21 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3)
+check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
+	$(am__EXEEXT_4) $(am__EXEEXT_5)
 @NATIVE_TRUE@am__append_1 = test_elf test_xcoff_32 test_xcoff_64 \
 @NATIVE_TRUE@	test_pecoff test_unknown unittest unittest_alloc \
-@NATIVE_TRUE@	btest btest_alloc stest stest_alloc ztest \
-@NATIVE_TRUE@	ztest_alloc edtest edtest_alloc
-@HAVE_DWZ_TRUE@@NATIVE_TRUE@am__append_2 = btest_dwz
-@HAVE_ZLIB_TRUE@@NATIVE_TRUE@am__append_3 = -lz
-@HAVE_ZLIB_TRUE@@NATIVE_TRUE@am__append_4 = -lz
-@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@am__append_5 = ttest ttest_alloc
-@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_6 = dtest
-@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@am__append_7 = ctestg ctesta \
+@NATIVE_TRUE@	btest btest_alloc
+@HAVE_DWZ_TRUE@@NATIVE_TRUE@am__append_2 = btest_dwz \
+@HAVE_DWZ_TRUE@@NATIVE_TRUE@	printdwarftest_dwz_cmp.sh
+@HAVE_DWZ_TRUE@@NATIVE_TRUE@am__append_3 = printdwarftest
+@NATIVE_TRUE@am__append_4 = stest stest_alloc ztest ztest_alloc edtest \
+@NATIVE_TRUE@	edtest_alloc
+@HAVE_ZLIB_TRUE@@NATIVE_TRUE@am__append_5 = -lz
+@HAVE_ZLIB_TRUE@@NATIVE_TRUE@am__append_6 = -lz
+@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@am__append_7 = ttest ttest_alloc
+@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_8 = dtest
+@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@am__append_9 = ctestg ctesta \
 @HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@	ctestg_alloc \
 @HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@	ctesta_alloc
 subdir = .
@@ -178,13 +182,14 @@ libbacktrace_noformat_la_OBJECTS =  \
 @NATIVE_TRUE@	test_xcoff_64$(EXEEXT) test_pecoff$(EXEEXT) \
 @NATIVE_TRUE@	test_unknown$(EXEEXT) unittest$(EXEEXT) \
 @NATIVE_TRUE@	unittest_alloc$(EXEEXT) btest$(EXEEXT) \
-@NATIVE_TRUE@	btest_alloc$(EXEEXT) stest$(EXEEXT) \
-@NATIVE_TRUE@	stest_alloc$(EXEEXT) ztest$(EXEEXT) \
-@NATIVE_TRUE@	ztest_alloc$(EXEEXT) edtest$(EXEEXT) \
-@NATIVE_TRUE@	edtest_alloc$(EXEEXT)
-@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@am__EXEEXT_2 = ttest$(EXEEXT) \
+@NATIVE_TRUE@	btest_alloc$(EXEEXT)
+@HAVE_DWZ_TRUE@@NATIVE_TRUE@am__EXEEXT_2 = printdwarftest$(EXEEXT)
+@NATIVE_TRUE@am__EXEEXT_3 = stest$(EXEEXT) stest_alloc$(EXEEXT) \
+@NATIVE_TRUE@	ztest$(EXEEXT) ztest_alloc$(EXEEXT) \
+@NATIVE_TRUE@	edtest$(EXEEXT) edtest_alloc$(EXEEXT)
+@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@am__EXEEXT_4 = ttest$(EXEEXT) \
 @HAVE_PTHREAD_TRUE@@NATIVE_TRUE@	ttest_alloc$(EXEEXT)
-@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@am__EXEEXT_3 =  \
+@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@am__EXEEXT_5 =  \
 @HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@	ctestg$(EXEEXT) \
 @HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@	ctesta$(EXEEXT) \
 @HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@	ctestg_alloc$(EXEEXT) \
@@ -247,6 +252,12 @@ edtest_OBJECTS = $(am_edtest_OBJECTS)
 @NATIVE_TRUE@am_edtest_alloc_OBJECTS = $(am__objects_5)
 edtest_alloc_OBJECTS = $(am_edtest_alloc_OBJECTS)
 @NATIVE_TRUE@edtest_alloc_DEPENDENCIES = libbacktrace_alloc.la
+@HAVE_DWZ_TRUE@@NATIVE_TRUE@am_printdwarftest_OBJECTS =  \
+@HAVE_DWZ_TRUE@@NATIVE_TRUE@	printdwarftest.$(OBJEXT) \
+@HAVE_DWZ_TRUE@@NATIVE_TRUE@	testlib.$(OBJEXT)
+printdwarftest_OBJECTS = $(am_printdwarftest_OBJECTS)
+@HAVE_DWZ_TRUE@@NATIVE_TRUE@printdwarftest_DEPENDENCIES =  \
+@HAVE_DWZ_TRUE@@NATIVE_TRUE@	libbacktrace.la
 @NATIVE_TRUE@am_stest_OBJECTS = stest.$(OBJEXT)
 stest_OBJECTS = $(am_stest_OBJECTS)
 @NATIVE_TRUE@stest_DEPENDENCIES = libbacktrace.la
@@ -361,8 +372,8 @@ SOURCES = $(libbacktrace_la_SOURCES) $(EXTRA_libbacktrace_la_SOURCES) \
 	$(btest_alloc_SOURCES) $(ctesta_SOURCES) \
 	$(ctesta_alloc_SOURCES) $(ctestg_SOURCES) \
 	$(ctestg_alloc_SOURCES) $(edtest_SOURCES) \
-	$(edtest_alloc_SOURCES) $(stest_SOURCES) \
-	$(stest_alloc_SOURCES) $(test_elf_SOURCES) \
+	$(edtest_alloc_SOURCES) $(printdwarftest_SOURCES) \
+	$(stest_SOURCES) $(stest_alloc_SOURCES) $(test_elf_SOURCES) \
 	$(test_pecoff_SOURCES) $(test_unknown_SOURCES) \
 	$(test_xcoff_32_SOURCES) $(test_xcoff_64_SOURCES) \
 	$(ttest_SOURCES) $(ttest_alloc_SOURCES) $(unittest_SOURCES) \
@@ -776,7 +787,7 @@ libbacktrace_la_LIBADD = \
 	$(ALLOC_FILE)
 
 libbacktrace_la_DEPENDENCIES = $(libbacktrace_la_LIBADD)
-TESTS = $(check_PROGRAMS) $(am__append_2) $(am__append_6)
+TESTS = $(check_PROGRAMS) $(am__append_2) $(am__append_8)
 @NATIVE_TRUE@check_LTLIBRARIES = libbacktrace_alloc.la \
 @NATIVE_TRUE@	libbacktrace_noformat.la
 @NATIVE_TRUE@libbacktrace_alloc_la_SOURCES = $(libbacktrace_la_SOURCES)
@@ -805,15 +816,17 @@ TESTS = $(check_PROGRAMS) $(am__append_2) $(am__append_6)
 @NATIVE_TRUE@btest_alloc_SOURCES = $(btest_SOURCES)
 @NATIVE_TRUE@btest_alloc_CFLAGS = $(btest_CFLAGS)
 @NATIVE_TRUE@btest_alloc_LDADD = libbacktrace_alloc.la
+@HAVE_DWZ_TRUE@@NATIVE_TRUE@printdwarftest_SOURCES = printdwarftest.c testlib.c
+@HAVE_DWZ_TRUE@@NATIVE_TRUE@printdwarftest_LDADD = libbacktrace.la
 @NATIVE_TRUE@stest_SOURCES = stest.c
 @NATIVE_TRUE@stest_LDADD = libbacktrace.la
 @NATIVE_TRUE@stest_alloc_SOURCES = $(stest_SOURCES)
 @NATIVE_TRUE@stest_alloc_LDADD = libbacktrace_alloc.la
 @NATIVE_TRUE@ztest_SOURCES = ztest.c testlib.c
 @NATIVE_TRUE@ztest_CFLAGS = -DSRCDIR=\"$(srcdir)\"
-@NATIVE_TRUE@ztest_LDADD = libbacktrace.la $(am__append_3) \
+@NATIVE_TRUE@ztest_LDADD = libbacktrace.la $(am__append_5) \
 @NATIVE_TRUE@	$(CLOCK_GETTIME_LINK)
-@NATIVE_TRUE@ztest_alloc_LDADD = libbacktrace_alloc.la $(am__append_4) \
+@NATIVE_TRUE@ztest_alloc_LDADD = libbacktrace_alloc.la $(am__append_6) \
 @NATIVE_TRUE@	$(CLOCK_GETTIME_LINK)
 @NATIVE_TRUE@ztest_alloc_SOURCES = $(ztest_SOURCES)
 @NATIVE_TRUE@ztest_alloc_CFLAGS = $(ztest_CFLAGS)
@@ -991,6 +1004,10 @@ edtest_alloc$(EXEEXT): $(edtest_alloc_OBJECTS) $(edtest_alloc_DEPENDENCIES) $(EX
 	@rm -f edtest_alloc$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(edtest_alloc_OBJECTS) $(edtest_alloc_LDADD) $(LIBS)
 
+printdwarftest$(EXEEXT): $(printdwarftest_OBJECTS) $(printdwarftest_DEPENDENCIES) $(EXTRA_printdwarftest_DEPENDENCIES) 
+	@rm -f printdwarftest$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(printdwarftest_OBJECTS) $(printdwarftest_LDADD) $(LIBS)
+
 stest$(EXEEXT): $(stest_OBJECTS) $(stest_DEPENDENCIES) $(EXTRA_stest_DEPENDENCIES) 
 	@rm -f stest$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(stest_OBJECTS) $(stest_LDADD) $(LIBS)
@@ -1450,6 +1467,13 @@ btest_alloc.log: btest_alloc$(EXEEXT)
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+printdwarftest.log: printdwarftest$(EXEEXT)
+	@p='printdwarftest$(EXEEXT)'; \
+	b='printdwarftest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 stest.log: stest$(EXEEXT)
 	@p='stest$(EXEEXT)'; \
 	b='stest'; \
@@ -1541,6 +1565,13 @@ btest_dwz.log: btest_dwz
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+printdwarftest_dwz_cmp.sh.log: printdwarftest_dwz_cmp.sh
+	@p='printdwarftest_dwz_cmp.sh'; \
+	b='printdwarftest_dwz_cmp.sh'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 dtest.log: dtest
 	@p='dtest'; \
 	b='dtest'; \
@@ -1710,6 +1741,10 @@ uninstall-am:
 @HAVE_DWZ_TRUE@@NATIVE_TRUE@	cp $< $@_2
 @HAVE_DWZ_TRUE@@NATIVE_TRUE@	$(DWZ) -m $@_common.debug $@ $@_2
 
+@HAVE_DWZ_TRUE@@NATIVE_TRUE@printdwarftest.lo: dwarf.c
+
+@HAVE_DWZ_TRUE@@NATIVE_TRUE@printdwarftest_dwz_cmp.sh: printdwarftest_dwz
+
 @NATIVE_TRUE@edtest2_build.c: gen_edtest2_build; @true
 @NATIVE_TRUE@gen_edtest2_build: $(srcdir)/edtest2.c
 @NATIVE_TRUE@	cat $(srcdir)/edtest2.c > tmp-edtest2_build.c
diff --git a/libbacktrace/printdwarftest.c b/libbacktrace/printdwarftest.c
new file mode 100644
index 00000000000..f4fea4c09d6
--- /dev/null
+++ b/libbacktrace/printdwarftest.c
@@ -0,0 +1,241 @@
+/* printdwarftest.c -- Print dwarf info cached by libbacktrace.
+   Copyright (C) 2018 Free Software Foundation, Inc.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    (1) Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+    (2) Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+    (3) The name of the author may not be used to
+    endorse or promote products derived from this software without
+    specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.  */
+
+/* Add all dwarf.c includes here, to make sure once-included headers are
+   included here (before defining backtrace_dwarf_add) rather than at the
+   #include "dwarf.c" below.  */
+
+#include "config.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+
+#include "dwarf2.h"
+#include "filenames.h"
+
+#include "backtrace.h"
+#include "internal.h"
+
+#include "testlib.h"
+#include "backtrace-supported.h"
+
+/* Include dwarf.c, using dwarf.c as header file defining struct dwarf_data.
+   Rename the only external function to prevent conflict with dwarf.o.  */
+
+extern int dummy_backtrace_dwarf_add (struct backtrace_state *state,
+				      uintptr_t base_address,
+				      const unsigned char* dwarf_info,
+				      size_t dwarf_info_size,
+				      const unsigned char *dwarf_line,
+				      size_t dwarf_line_size,
+				      const unsigned char *dwarf_abbrev,
+				      size_t dwarf_abbrev_size,
+				      const unsigned char *dwarf_ranges,
+				      size_t dwarf_range_size,
+				      const unsigned char *dwarf_str,
+				      size_t dwarf_str_size,
+				      int is_bigendian,
+				      backtrace_error_callback error_callback,
+				      void *data, fileline *fileline_fn,
+				      void **fileline_entry,
+				      void *fileline_altlink);
+
+#define backtrace_dwarf_add dummy_backtrace_dwarf_add
+#include "dwarf.c"
+
+static void
+error_callback (void *vdata ATTRIBUTE_UNUSED, const char *msg ATTRIBUTE_UNUSED,
+		int errnum ATTRIBUTE_UNUSED)
+{
+}
+
+static int
+dummmy_callback (void *data ATTRIBUTE_UNUSED, uintptr_t pc ATTRIBUTE_UNUSED,
+		 const char *filename ATTRIBUTE_UNUSED,
+		 int lineno ATTRIBUTE_UNUSED,
+		 const char *function ATTRIBUTE_UNUSED)
+{
+  return 0;
+}
+
+struct print_callback_data
+{
+  uintptr_t base_address;
+  uintptr_t pc;
+  const char *filename;
+  int lineno;
+  const char *function;
+  uintptr_t d1_pc;
+  const char *d1_filename;
+  int d1_lineno;
+  const char *d1_function;
+  int depth;
+  int stack_printed;
+  int skip;
+};
+
+static int
+print_callback (void *data, uintptr_t pc ATTRIBUTE_UNUSED,
+		const char *filename ATTRIBUTE_UNUSED,
+		int lineno ATTRIBUTE_UNUSED,
+		const char *function ATTRIBUTE_UNUSED)
+{
+  struct print_callback_data *prev = (struct print_callback_data *)data;
+
+  prev->depth++;
+  if (prev->depth == 1)
+    {
+      if (prev->stack_printed)
+	prev->skip = 1;
+    }
+  else
+    {
+      if (prev->skip)
+	return 0;
+
+      fprintf (stderr, " %s@%d", function, prev->depth);
+      fprintf (stderr, " %d", lineno);
+      prev->stack_printed = 1;
+
+      return 0;
+    }
+
+  if (function == NULL)
+    return 0;
+
+  if (prev->pc == 0)
+    {
+      fprintf (stderr, "%p", (void *)(pc - prev->base_address));
+      fprintf (stderr, " %s@%d", function, prev->depth);
+      fprintf (stderr, " %s", filename);
+      fprintf (stderr, "\n  %d", lineno);
+      fprintf (stderr, "@%p", (void *)(pc - prev->base_address));
+      goto update;
+    }
+
+  if (function != prev->function)
+    {
+      if (pc != prev->pc)
+	{
+	  fprintf (stderr, "\n");
+	  fprintf (stderr, "%p", (void *)(pc - prev->base_address));
+	  fprintf (stderr, " %s@%d", function, prev->depth);
+	}
+      else
+	fprintf (stderr, " %s@%d", function, prev->depth);
+    }
+
+  if (filename != prev->filename)
+    fprintf (stderr, " %s", filename);
+
+  if (lineno != prev->lineno)
+    {
+      prev->stack_printed = 0;
+      prev->skip = 0;
+      fprintf (stderr, "\n  %d", lineno);
+      fprintf (stderr, "@%p", (void *)(pc - prev->base_address));
+    }
+
+ update:
+  prev->pc = pc;
+  prev->filename = filename;
+  prev->lineno = lineno;
+  prev->function = function;
+  if (prev->depth == 1)
+    {
+      prev->d1_pc = pc;
+      prev->d1_filename = filename;
+      prev->d1_lineno = lineno;
+      prev->d1_function = function;
+    }
+  return 0;
+}
+
+static void
+print_dwarf_data (struct backtrace_state *state, void *data)
+{
+  struct dwarf_data *fdata;
+  unsigned int i;
+
+  fdata = (struct dwarf_data *)data;
+
+  for (i = 0; i < fdata->addrs_count; ++i)
+    {
+      struct unit_addrs *addr = &fdata->addrs[i];
+      uintptr_t pc;
+
+      struct print_callback_data tdata;
+      tdata.base_address = fdata->base_address;
+      tdata.pc = 0;
+      tdata.stack_printed = 0;
+      tdata.skip = 0;
+      for (pc = addr->low; pc < addr->high; ++pc)
+	{
+	  int found;
+	  tdata.depth = 0;
+	  dwarf_lookup_pc (state, fdata, pc, print_callback, error_callback,
+			   &tdata, &found);
+	  if (!found)
+	    fprintf (stderr, "not found: %p\n", (void *)pc);
+	}
+      if (tdata.pc != 0)
+	fprintf (stderr, "\n");
+    }
+}
+
+static void
+print_dwarf_cache (struct backtrace_state *state)
+{
+  struct dwarf_data **pp;
+
+  if (state->fileline_data == NULL)
+    backtrace_pcinfo (state, (uintptr_t)print_callback, dummmy_callback,
+		      NULL, NULL);
+
+  for (pp = (struct dwarf_data **) (void *) &state->fileline_data;
+       *pp != NULL;
+       pp = &(*pp)->next)
+    print_dwarf_data (state, *pp);
+}
+
+
+int
+main (int argc ATTRIBUTE_UNUSED, char **argv)
+{
+  state = backtrace_create_state (argv[0], BACKTRACE_SUPPORTS_THREADS,
+				  error_callback_create, NULL);
+
+  print_dwarf_cache ((struct backtrace_state *)state);
+
+  exit (failures ? EXIT_FAILURE : EXIT_SUCCESS);
+}
diff --git a/libbacktrace/printdwarftest_dwz_cmp.sh b/libbacktrace/printdwarftest_dwz_cmp.sh
new file mode 100755
index 00000000000..617de00ece8
--- /dev/null
+++ b/libbacktrace/printdwarftest_dwz_cmp.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+log1=printdwarftest_dwz.1.log
+log2=printdwarftest_dwz.2.log
+
+./printdwarftest 2> $log1
+./printdwarftest_dwz 2> $log2
+cmp $log1 $log2
-- 
2.16.4


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]