mirror of
https://github.com/ianlancetaylor/libbacktrace.git
synced 2026-09-07 12:17:06 +08:00
libbacktrace: handle MOREDATA correctly without debug info
Based on patch from Andi Kleen. * elf.c (elf_nodebug): Handle state->moredata. * fileline.c (backtrace_syminfo_to_full_callback): Remove incorrect comment about MOREDATA. (backtrace_syminfo_to_full_callback_moredata): New function. * internal.h (backtrace_syminfo_to_full_callback_moredata): Declare. * strippedtest.c: New file. * configure.ac: check whether objcopy supports --strip-debug. * Makefile.am (strippedtest_SOURCES): New variable. (strippedtest_CFLAGS, strippedtest_LDFLAGS): Likewise. (strippedtest_LDADD): Likewise. (check_PROGRAMS): Add strippedtest. (MAKETESTS): Add strippedtest_stripped (%_stripped): New rule. * configure, Makefile.in: Regenerate.
This commit is contained in:
+17
@@ -133,6 +133,23 @@ libbacktrace_noformat_la_LIBADD = $(BACKTRACE_FILE) $(VIEW_FILE) $(ALLOC_FILE)
|
|||||||
|
|
||||||
libbacktrace_noformat_la_DEPENDENCIES = $(libbacktrace_noformat_la_LIBADD)
|
libbacktrace_noformat_la_DEPENDENCIES = $(libbacktrace_noformat_la_LIBADD)
|
||||||
|
|
||||||
|
if HAVE_ELF
|
||||||
|
if HAVE_OBJCOPY_STRIPDEBUG
|
||||||
|
|
||||||
|
strippedtest_SOURCES = strippedtest.c testlib.c
|
||||||
|
strippedtest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -O
|
||||||
|
strippedtest_LDFLAGS = $(libbacktrace_testing_ldflags) -all-static
|
||||||
|
strippedtest_LDADD = libbacktrace.la
|
||||||
|
|
||||||
|
check_PROGRAMS += strippedtest
|
||||||
|
MAKETESTS += strippedtest_stripped
|
||||||
|
|
||||||
|
%_stripped: %
|
||||||
|
$(OBJCOPY) --strip-debug $< $@
|
||||||
|
|
||||||
|
endif HAVE_OBJCOPY_STRIPDEBUG
|
||||||
|
endif HAVE_ELF
|
||||||
|
|
||||||
if HAVE_ELF
|
if HAVE_ELF
|
||||||
if HAVE_OBJCOPY_DEBUGLINK
|
if HAVE_OBJCOPY_DEBUGLINK
|
||||||
|
|
||||||
|
|||||||
+119
-79
@@ -15,7 +15,7 @@
|
|||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
# Makefile.am -- Backtrace Makefile.
|
# Makefile.am -- Backtrace Makefile.
|
||||||
# Copyright (C) 2012-2024 Free Software Foundation, Inc.
|
# Copyright (C) 2012-2026 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions are
|
# modification, are permitted provided that the following conditions are
|
||||||
@@ -122,53 +122,55 @@ build_triplet = @build@
|
|||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
target_triplet = @target@
|
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_17)
|
$(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_18)
|
||||||
TESTS = $(am__append_4) $(MAKETESTS) $(am__EXEEXT_17)
|
TESTS = $(am__append_6) $(MAKETESTS) $(am__EXEEXT_18)
|
||||||
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_1 = libbacktrace_elf_for_test.la
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_STRIPDEBUG_TRUE@@NATIVE_TRUE@am__append_1 = strippedtest
|
||||||
@NATIVE_TRUE@am__append_2 = test_elf_32 test_elf_64 test_macho \
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_STRIPDEBUG_TRUE@@NATIVE_TRUE@am__append_2 = strippedtest_stripped
|
||||||
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_3 = libbacktrace_elf_for_test.la
|
||||||
|
@NATIVE_TRUE@am__append_4 = test_elf_32 test_elf_64 test_macho \
|
||||||
@NATIVE_TRUE@ test_xcoff_32 test_xcoff_64 test_pecoff \
|
@NATIVE_TRUE@ test_xcoff_32 test_xcoff_64 test_pecoff \
|
||||||
@NATIVE_TRUE@ test_unknown unittest unittest_alloc btest
|
@NATIVE_TRUE@ test_unknown unittest unittest_alloc btest
|
||||||
@NATIVE_TRUE@am__append_3 = allocfail
|
@NATIVE_TRUE@am__append_5 = allocfail
|
||||||
@NATIVE_TRUE@am__append_4 = allocfail.sh
|
@NATIVE_TRUE@am__append_6 = allocfail.sh
|
||||||
@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@am__append_5 = allocfail.dSYM \
|
@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@am__append_7 = allocfail.dSYM \
|
||||||
@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@ btest.dSYM btest_alloc.dSYM \
|
@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@ btest.dSYM btest_alloc.dSYM \
|
||||||
@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@ stest.dSYM stest_alloc.dSYM \
|
@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@ stest.dSYM stest_alloc.dSYM \
|
||||||
@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@ edtest.dSYM edtest_alloc.dSYM
|
@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@ edtest.dSYM edtest_alloc.dSYM
|
||||||
@HAVE_BUILDID_TRUE@@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_6 = b2test
|
@HAVE_BUILDID_TRUE@@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_8 = b2test
|
||||||
@HAVE_BUILDID_TRUE@@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_7 = b2test_buildid b2test_buildidfull
|
@HAVE_BUILDID_TRUE@@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_9 = b2test_buildid b2test_buildidfull
|
||||||
@HAVE_BUILDID_TRUE@@HAVE_DWZ_TRUE@@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_8 = b3test
|
@HAVE_BUILDID_TRUE@@HAVE_DWZ_TRUE@@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_10 = b3test
|
||||||
@HAVE_BUILDID_TRUE@@HAVE_DWZ_TRUE@@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_9 = b3test_dwz_buildid b3test_dwz_buildidfull
|
@HAVE_BUILDID_TRUE@@HAVE_DWZ_TRUE@@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_11 = b3test_dwz_buildid b3test_dwz_buildidfull
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@am__append_10 = btest_lto
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@am__append_12 = btest_lto
|
||||||
@NATIVE_TRUE@am__append_11 = btest_alloc mdtest stest stest_alloc
|
@NATIVE_TRUE@am__append_13 = btest_alloc mdtest stest stest_alloc
|
||||||
@HAVE_DWZ_TRUE@@NATIVE_TRUE@am__append_12 = btest_dwz
|
@HAVE_DWZ_TRUE@@NATIVE_TRUE@am__append_14 = btest_dwz
|
||||||
@HAVE_DWZ_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_13 = btest_dwz_gnudebuglink
|
@HAVE_DWZ_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_15 = btest_dwz_gnudebuglink
|
||||||
@HAVE_ELF_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_TRUE@am__append_14 = -lz
|
@HAVE_ELF_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_TRUE@am__append_16 = -lz
|
||||||
@HAVE_ELF_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_TRUE@am__append_15 = -lz
|
@HAVE_ELF_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_TRUE@am__append_17 = -lz
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@am__append_16 = ztest ztest_alloc zstdtest \
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@am__append_18 = ztest ztest_alloc zstdtest \
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ zstdtest_alloc
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ zstdtest_alloc
|
||||||
@HAVE_ELF_TRUE@@HAVE_ZSTD_TRUE@@NATIVE_TRUE@am__append_17 = -lzstd
|
@HAVE_ELF_TRUE@@HAVE_ZSTD_TRUE@@NATIVE_TRUE@am__append_19 = -lzstd
|
||||||
@HAVE_ELF_TRUE@@HAVE_ZSTD_TRUE@@NATIVE_TRUE@am__append_18 = -lzstd
|
@HAVE_ELF_TRUE@@HAVE_ZSTD_TRUE@@NATIVE_TRUE@am__append_20 = -lzstd
|
||||||
@NATIVE_TRUE@am__append_19 = edtest edtest_alloc
|
@NATIVE_TRUE@am__append_21 = edtest edtest_alloc
|
||||||
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@am__append_20 = ttest ttest_alloc
|
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@am__append_22 = ttest ttest_alloc
|
||||||
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@am__append_21 = \
|
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@am__append_23 = \
|
||||||
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@ ttest.dSYM \
|
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@ ttest.dSYM \
|
||||||
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@ ttest_alloc.dSYM
|
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@ ttest_alloc.dSYM
|
||||||
@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_22 = btest_gnudebuglink btest_gnudebuglinkfull
|
@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_24 = btest_gnudebuglink btest_gnudebuglinkfull
|
||||||
@HAVE_COMPRESSED_DEBUG_ZLIB_GNU_TRUE@@NATIVE_TRUE@am__append_23 = ctestg ctestg_alloc
|
@HAVE_COMPRESSED_DEBUG_ZLIB_GNU_TRUE@@NATIVE_TRUE@am__append_25 = ctestg ctestg_alloc
|
||||||
@HAVE_COMPRESSED_DEBUG_ZLIB_GABI_TRUE@@NATIVE_TRUE@am__append_24 = ctesta ctesta_alloc
|
@HAVE_COMPRESSED_DEBUG_ZLIB_GABI_TRUE@@NATIVE_TRUE@am__append_26 = ctesta ctesta_alloc
|
||||||
@HAVE_COMPRESSED_DEBUG_ZSTD_TRUE@@NATIVE_TRUE@am__append_25 = ctestzstd ctestzstd_alloc
|
@HAVE_COMPRESSED_DEBUG_ZSTD_TRUE@@NATIVE_TRUE@am__append_27 = ctestzstd ctestzstd_alloc
|
||||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@am__append_26 = dwarf5 dwarf5_alloc
|
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@am__append_28 = dwarf5 dwarf5_alloc
|
||||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@am__append_27 = \
|
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@am__append_29 = \
|
||||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@ dwarf5.dSYM \
|
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@ dwarf5.dSYM \
|
||||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@ dwarf5_alloc.dSYM
|
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@ dwarf5_alloc.dSYM
|
||||||
@NATIVE_TRUE@am__append_28 = mtest
|
@NATIVE_TRUE@am__append_30 = mtest
|
||||||
@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@am__append_29 = mtest.dSYM
|
@NATIVE_TRUE@@USE_DSYMUTIL_TRUE@am__append_31 = mtest.dSYM
|
||||||
@HAVE_MINIDEBUG_TRUE@@NATIVE_TRUE@am__append_30 = mtest_minidebug
|
@HAVE_MINIDEBUG_TRUE@@NATIVE_TRUE@am__append_32 = mtest_minidebug
|
||||||
@HAVE_BUILDID_TRUE@@HAVE_ELF_TRUE@@HAVE_MINIDEBUG_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_31 = m2test
|
@HAVE_BUILDID_TRUE@@HAVE_ELF_TRUE@@HAVE_MINIDEBUG_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_33 = m2test
|
||||||
@HAVE_BUILDID_TRUE@@HAVE_ELF_TRUE@@HAVE_MINIDEBUG_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_32 = m2test_minidebug2
|
@HAVE_BUILDID_TRUE@@HAVE_ELF_TRUE@@HAVE_MINIDEBUG_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_34 = m2test_minidebug2
|
||||||
@HAVE_ELF_TRUE@@HAVE_LIBLZMA_TRUE@am__append_33 = -llzma
|
@HAVE_ELF_TRUE@@HAVE_LIBLZMA_TRUE@am__append_35 = -llzma
|
||||||
@HAVE_ELF_TRUE@@HAVE_LIBLZMA_TRUE@am__append_34 = -llzma
|
@HAVE_ELF_TRUE@@HAVE_LIBLZMA_TRUE@am__append_36 = -llzma
|
||||||
@HAVE_ELF_TRUE@am__append_35 = xztest xztest_alloc
|
@HAVE_ELF_TRUE@am__append_37 = xztest xztest_alloc
|
||||||
subdir = .
|
subdir = .
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/config/lead-dot.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/config/lead-dot.m4 \
|
||||||
@@ -250,39 +252,40 @@ libbacktrace_instrumented_alloc_la_OBJECTS = \
|
|||||||
libbacktrace_noformat_la_OBJECTS = \
|
libbacktrace_noformat_la_OBJECTS = \
|
||||||
$(am_libbacktrace_noformat_la_OBJECTS)
|
$(am_libbacktrace_noformat_la_OBJECTS)
|
||||||
@NATIVE_TRUE@am_libbacktrace_noformat_la_rpath =
|
@NATIVE_TRUE@am_libbacktrace_noformat_la_rpath =
|
||||||
@NATIVE_TRUE@am__EXEEXT_1 = allocfail$(EXEEXT)
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_STRIPDEBUG_TRUE@@NATIVE_TRUE@am__EXEEXT_1 = strippedtest$(EXEEXT)
|
||||||
@HAVE_BUILDID_TRUE@@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__EXEEXT_2 = b2test$(EXEEXT)
|
@NATIVE_TRUE@am__EXEEXT_2 = allocfail$(EXEEXT)
|
||||||
@HAVE_BUILDID_TRUE@@HAVE_DWZ_TRUE@@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__EXEEXT_3 = b3test$(EXEEXT)
|
@HAVE_BUILDID_TRUE@@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__EXEEXT_3 = b2test$(EXEEXT)
|
||||||
@HAVE_BUILDID_TRUE@@HAVE_ELF_TRUE@@HAVE_MINIDEBUG_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__EXEEXT_4 = m2test$(EXEEXT)
|
@HAVE_BUILDID_TRUE@@HAVE_DWZ_TRUE@@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__EXEEXT_4 = b3test$(EXEEXT)
|
||||||
@NATIVE_TRUE@am__EXEEXT_5 = test_elf_32$(EXEEXT) test_elf_64$(EXEEXT) \
|
@HAVE_BUILDID_TRUE@@HAVE_ELF_TRUE@@HAVE_MINIDEBUG_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__EXEEXT_5 = m2test$(EXEEXT)
|
||||||
|
@NATIVE_TRUE@am__EXEEXT_6 = test_elf_32$(EXEEXT) test_elf_64$(EXEEXT) \
|
||||||
@NATIVE_TRUE@ test_macho$(EXEEXT) test_xcoff_32$(EXEEXT) \
|
@NATIVE_TRUE@ test_macho$(EXEEXT) test_xcoff_32$(EXEEXT) \
|
||||||
@NATIVE_TRUE@ test_xcoff_64$(EXEEXT) test_pecoff$(EXEEXT) \
|
@NATIVE_TRUE@ test_xcoff_64$(EXEEXT) test_pecoff$(EXEEXT) \
|
||||||
@NATIVE_TRUE@ test_unknown$(EXEEXT) unittest$(EXEEXT) \
|
@NATIVE_TRUE@ test_unknown$(EXEEXT) unittest$(EXEEXT) \
|
||||||
@NATIVE_TRUE@ unittest_alloc$(EXEEXT) btest$(EXEEXT)
|
@NATIVE_TRUE@ unittest_alloc$(EXEEXT) btest$(EXEEXT)
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@am__EXEEXT_6 = btest_lto$(EXEEXT)
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@am__EXEEXT_7 = btest_lto$(EXEEXT)
|
||||||
@NATIVE_TRUE@am__EXEEXT_7 = btest_alloc$(EXEEXT) mdtest$(EXEEXT) \
|
@NATIVE_TRUE@am__EXEEXT_8 = btest_alloc$(EXEEXT) mdtest$(EXEEXT) \
|
||||||
@NATIVE_TRUE@ stest$(EXEEXT) stest_alloc$(EXEEXT)
|
@NATIVE_TRUE@ stest$(EXEEXT) stest_alloc$(EXEEXT)
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@am__EXEEXT_8 = ztest$(EXEEXT) \
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@am__EXEEXT_9 = ztest$(EXEEXT) \
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ ztest_alloc$(EXEEXT) \
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ ztest_alloc$(EXEEXT) \
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ zstdtest$(EXEEXT) \
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ zstdtest$(EXEEXT) \
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ zstdtest_alloc$(EXEEXT)
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ zstdtest_alloc$(EXEEXT)
|
||||||
@NATIVE_TRUE@am__EXEEXT_9 = edtest$(EXEEXT) edtest_alloc$(EXEEXT)
|
@NATIVE_TRUE@am__EXEEXT_10 = edtest$(EXEEXT) edtest_alloc$(EXEEXT)
|
||||||
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@am__EXEEXT_10 = ttest$(EXEEXT) \
|
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@am__EXEEXT_11 = ttest$(EXEEXT) \
|
||||||
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@ ttest_alloc$(EXEEXT)
|
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@ ttest_alloc$(EXEEXT)
|
||||||
@HAVE_COMPRESSED_DEBUG_ZLIB_GNU_TRUE@@NATIVE_TRUE@am__EXEEXT_11 = ctestg$(EXEEXT) \
|
@HAVE_COMPRESSED_DEBUG_ZLIB_GNU_TRUE@@NATIVE_TRUE@am__EXEEXT_12 = ctestg$(EXEEXT) \
|
||||||
@HAVE_COMPRESSED_DEBUG_ZLIB_GNU_TRUE@@NATIVE_TRUE@ ctestg_alloc$(EXEEXT)
|
@HAVE_COMPRESSED_DEBUG_ZLIB_GNU_TRUE@@NATIVE_TRUE@ ctestg_alloc$(EXEEXT)
|
||||||
@HAVE_COMPRESSED_DEBUG_ZLIB_GABI_TRUE@@NATIVE_TRUE@am__EXEEXT_12 = ctesta$(EXEEXT) \
|
@HAVE_COMPRESSED_DEBUG_ZLIB_GABI_TRUE@@NATIVE_TRUE@am__EXEEXT_13 = ctesta$(EXEEXT) \
|
||||||
@HAVE_COMPRESSED_DEBUG_ZLIB_GABI_TRUE@@NATIVE_TRUE@ ctesta_alloc$(EXEEXT)
|
@HAVE_COMPRESSED_DEBUG_ZLIB_GABI_TRUE@@NATIVE_TRUE@ ctesta_alloc$(EXEEXT)
|
||||||
@HAVE_COMPRESSED_DEBUG_ZSTD_TRUE@@NATIVE_TRUE@am__EXEEXT_13 = ctestzstd$(EXEEXT) \
|
@HAVE_COMPRESSED_DEBUG_ZSTD_TRUE@@NATIVE_TRUE@am__EXEEXT_14 = ctestzstd$(EXEEXT) \
|
||||||
@HAVE_COMPRESSED_DEBUG_ZSTD_TRUE@@NATIVE_TRUE@ ctestzstd_alloc$(EXEEXT)
|
@HAVE_COMPRESSED_DEBUG_ZSTD_TRUE@@NATIVE_TRUE@ ctestzstd_alloc$(EXEEXT)
|
||||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@am__EXEEXT_14 = dwarf5$(EXEEXT) \
|
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@am__EXEEXT_15 = dwarf5$(EXEEXT) \
|
||||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@ dwarf5_alloc$(EXEEXT)
|
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@ dwarf5_alloc$(EXEEXT)
|
||||||
@NATIVE_TRUE@am__EXEEXT_15 = mtest$(EXEEXT)
|
@NATIVE_TRUE@am__EXEEXT_16 = mtest$(EXEEXT)
|
||||||
@HAVE_ELF_TRUE@am__EXEEXT_16 = xztest$(EXEEXT) xztest_alloc$(EXEEXT)
|
@HAVE_ELF_TRUE@am__EXEEXT_17 = xztest$(EXEEXT) xztest_alloc$(EXEEXT)
|
||||||
am__EXEEXT_17 = $(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) \
|
am__EXEEXT_18 = $(am__EXEEXT_6) $(am__EXEEXT_7) $(am__EXEEXT_8) \
|
||||||
$(am__EXEEXT_8) $(am__EXEEXT_9) $(am__EXEEXT_10) \
|
$(am__EXEEXT_9) $(am__EXEEXT_10) $(am__EXEEXT_11) \
|
||||||
$(am__EXEEXT_11) $(am__EXEEXT_12) $(am__EXEEXT_13) \
|
$(am__EXEEXT_12) $(am__EXEEXT_13) $(am__EXEEXT_14) \
|
||||||
$(am__EXEEXT_14) $(am__EXEEXT_15) $(am__EXEEXT_16)
|
$(am__EXEEXT_15) $(am__EXEEXT_16) $(am__EXEEXT_17)
|
||||||
@NATIVE_TRUE@am_allocfail_OBJECTS = allocfail-allocfail.$(OBJEXT) \
|
@NATIVE_TRUE@am_allocfail_OBJECTS = allocfail-allocfail.$(OBJEXT) \
|
||||||
@NATIVE_TRUE@ allocfail-testlib.$(OBJEXT)
|
@NATIVE_TRUE@ allocfail-testlib.$(OBJEXT)
|
||||||
allocfail_OBJECTS = $(am_allocfail_OBJECTS)
|
allocfail_OBJECTS = $(am_allocfail_OBJECTS)
|
||||||
@@ -448,6 +451,13 @@ stest_alloc_OBJECTS = $(am_stest_alloc_OBJECTS)
|
|||||||
stest_alloc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
stest_alloc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(stest_alloc_CFLAGS) \
|
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(stest_alloc_CFLAGS) \
|
||||||
$(CFLAGS) $(stest_alloc_LDFLAGS) $(LDFLAGS) -o $@
|
$(CFLAGS) $(stest_alloc_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_STRIPDEBUG_TRUE@@NATIVE_TRUE@am_strippedtest_OBJECTS = strippedtest-strippedtest.$(OBJEXT) \
|
||||||
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_STRIPDEBUG_TRUE@@NATIVE_TRUE@ strippedtest-testlib.$(OBJEXT)
|
||||||
|
strippedtest_OBJECTS = $(am_strippedtest_OBJECTS)
|
||||||
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_STRIPDEBUG_TRUE@@NATIVE_TRUE@strippedtest_DEPENDENCIES = libbacktrace.la
|
||||||
|
strippedtest_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||||
|
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(strippedtest_CFLAGS) \
|
||||||
|
$(CFLAGS) $(strippedtest_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
@NATIVE_TRUE@am_test_elf_32_OBJECTS = \
|
@NATIVE_TRUE@am_test_elf_32_OBJECTS = \
|
||||||
@NATIVE_TRUE@ test_elf_32-test_format.$(OBJEXT) \
|
@NATIVE_TRUE@ test_elf_32-test_format.$(OBJEXT) \
|
||||||
@NATIVE_TRUE@ test_elf_32-testlib.$(OBJEXT)
|
@NATIVE_TRUE@ test_elf_32-testlib.$(OBJEXT)
|
||||||
@@ -654,11 +664,11 @@ SOURCES = $(libbacktrace_la_SOURCES) $(EXTRA_libbacktrace_la_SOURCES) \
|
|||||||
$(dwarf5_alloc_SOURCES) $(edtest_SOURCES) \
|
$(dwarf5_alloc_SOURCES) $(edtest_SOURCES) \
|
||||||
$(edtest_alloc_SOURCES) $(m2test_SOURCES) $(mdtest_SOURCES) \
|
$(edtest_alloc_SOURCES) $(m2test_SOURCES) $(mdtest_SOURCES) \
|
||||||
$(mtest_SOURCES) $(stest_SOURCES) $(stest_alloc_SOURCES) \
|
$(mtest_SOURCES) $(stest_SOURCES) $(stest_alloc_SOURCES) \
|
||||||
$(test_elf_32_SOURCES) $(test_elf_64_SOURCES) \
|
$(strippedtest_SOURCES) $(test_elf_32_SOURCES) \
|
||||||
$(test_macho_SOURCES) $(test_pecoff_SOURCES) \
|
$(test_elf_64_SOURCES) $(test_macho_SOURCES) \
|
||||||
$(test_unknown_SOURCES) $(test_xcoff_32_SOURCES) \
|
$(test_pecoff_SOURCES) $(test_unknown_SOURCES) \
|
||||||
$(test_xcoff_64_SOURCES) $(ttest_SOURCES) \
|
$(test_xcoff_32_SOURCES) $(test_xcoff_64_SOURCES) \
|
||||||
$(ttest_alloc_SOURCES) $(unittest_SOURCES) \
|
$(ttest_SOURCES) $(ttest_alloc_SOURCES) $(unittest_SOURCES) \
|
||||||
$(unittest_alloc_SOURCES) $(xztest_SOURCES) \
|
$(unittest_alloc_SOURCES) $(xztest_SOURCES) \
|
||||||
$(xztest_alloc_SOURCES) $(zstdtest_SOURCES) \
|
$(xztest_alloc_SOURCES) $(zstdtest_SOURCES) \
|
||||||
$(zstdtest_alloc_SOURCES) $(ztest_SOURCES) \
|
$(zstdtest_alloc_SOURCES) $(ztest_SOURCES) \
|
||||||
@@ -1051,20 +1061,20 @@ libbacktrace_la_DEPENDENCIES = $(libbacktrace_la_LIBADD)
|
|||||||
|
|
||||||
# Add a test to this variable if you want it to be built as a Makefile
|
# Add a test to this variable if you want it to be built as a Makefile
|
||||||
# target and run.
|
# target and run.
|
||||||
MAKETESTS = $(am__append_7) $(am__append_9) $(am__append_12) \
|
MAKETESTS = $(am__append_2) $(am__append_9) $(am__append_11) \
|
||||||
$(am__append_13) $(am__append_22) $(am__append_30) \
|
$(am__append_14) $(am__append_15) $(am__append_24) \
|
||||||
$(am__append_32)
|
$(am__append_32) $(am__append_34)
|
||||||
|
|
||||||
# Add a test to this variable if you want it to be built as a program,
|
# Add a test to this variable if you want it to be built as a program,
|
||||||
# with SOURCES, etc., and run.
|
# with SOURCES, etc., and run.
|
||||||
BUILDTESTS = $(am__append_2) $(am__append_10) $(am__append_11) \
|
BUILDTESTS = $(am__append_4) $(am__append_12) $(am__append_13) \
|
||||||
$(am__append_16) $(am__append_19) $(am__append_20) \
|
$(am__append_18) $(am__append_21) $(am__append_22) \
|
||||||
$(am__append_23) $(am__append_24) $(am__append_25) \
|
$(am__append_25) $(am__append_26) $(am__append_27) \
|
||||||
$(am__append_26) $(am__append_28) $(am__append_35)
|
$(am__append_28) $(am__append_30) $(am__append_37)
|
||||||
|
|
||||||
# Add a file to this variable if you want it to be built for testing.
|
# Add a file to this variable if you want it to be built for testing.
|
||||||
check_DATA = $(am__append_5) $(am__append_21) $(am__append_27) \
|
check_DATA = $(am__append_7) $(am__append_23) $(am__append_29) \
|
||||||
$(am__append_29)
|
$(am__append_31)
|
||||||
|
|
||||||
# Flags to use when compiling test programs.
|
# Flags to use when compiling test programs.
|
||||||
libbacktrace_TEST_CFLAGS = $(EXTRA_FLAGS) $(WARN_FLAGS) -g
|
libbacktrace_TEST_CFLAGS = $(EXTRA_FLAGS) $(WARN_FLAGS) -g
|
||||||
@@ -1073,7 +1083,7 @@ libbacktrace_TEST_CFLAGS = $(EXTRA_FLAGS) $(WARN_FLAGS) -g
|
|||||||
# This avoids generating a shell script when configured with --enable-shared.
|
# This avoids generating a shell script when configured with --enable-shared.
|
||||||
libbacktrace_testing_ldflags = -no-install
|
libbacktrace_testing_ldflags = -no-install
|
||||||
@NATIVE_TRUE@check_LTLIBRARIES = libbacktrace_alloc.la \
|
@NATIVE_TRUE@check_LTLIBRARIES = libbacktrace_alloc.la \
|
||||||
@NATIVE_TRUE@ libbacktrace_noformat.la $(am__append_1) \
|
@NATIVE_TRUE@ libbacktrace_noformat.la $(am__append_3) \
|
||||||
@NATIVE_TRUE@ libbacktrace_instrumented_alloc.la
|
@NATIVE_TRUE@ libbacktrace_instrumented_alloc.la
|
||||||
@NATIVE_TRUE@libbacktrace_alloc_la_SOURCES = $(libbacktrace_la_SOURCES)
|
@NATIVE_TRUE@libbacktrace_alloc_la_SOURCES = $(libbacktrace_la_SOURCES)
|
||||||
@NATIVE_TRUE@libbacktrace_alloc_la_LIBADD = $(BACKTRACE_FILE) $(FORMAT_FILE) read.lo alloc.lo
|
@NATIVE_TRUE@libbacktrace_alloc_la_LIBADD = $(BACKTRACE_FILE) $(FORMAT_FILE) read.lo alloc.lo
|
||||||
@@ -1081,6 +1091,10 @@ libbacktrace_testing_ldflags = -no-install
|
|||||||
@NATIVE_TRUE@libbacktrace_noformat_la_SOURCES = $(libbacktrace_la_SOURCES)
|
@NATIVE_TRUE@libbacktrace_noformat_la_SOURCES = $(libbacktrace_la_SOURCES)
|
||||||
@NATIVE_TRUE@libbacktrace_noformat_la_LIBADD = $(BACKTRACE_FILE) $(VIEW_FILE) $(ALLOC_FILE)
|
@NATIVE_TRUE@libbacktrace_noformat_la_LIBADD = $(BACKTRACE_FILE) $(VIEW_FILE) $(ALLOC_FILE)
|
||||||
@NATIVE_TRUE@libbacktrace_noformat_la_DEPENDENCIES = $(libbacktrace_noformat_la_LIBADD)
|
@NATIVE_TRUE@libbacktrace_noformat_la_DEPENDENCIES = $(libbacktrace_noformat_la_LIBADD)
|
||||||
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_STRIPDEBUG_TRUE@@NATIVE_TRUE@strippedtest_SOURCES = strippedtest.c testlib.c
|
||||||
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_STRIPDEBUG_TRUE@@NATIVE_TRUE@strippedtest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -O
|
||||||
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_STRIPDEBUG_TRUE@@NATIVE_TRUE@strippedtest_LDFLAGS = $(libbacktrace_testing_ldflags) -all-static
|
||||||
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_STRIPDEBUG_TRUE@@NATIVE_TRUE@strippedtest_LDADD = libbacktrace.la
|
||||||
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@TEST_BUILD_ID_DIR = $(abs_builddir)/usr/lib/debug/.build-id/
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@TEST_BUILD_ID_DIR = $(abs_builddir)/usr/lib/debug/.build-id/
|
||||||
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@libbacktrace_elf_for_test_la_SOURCES = $(libbacktrace_la_SOURCES)
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@libbacktrace_elf_for_test_la_SOURCES = $(libbacktrace_la_SOURCES)
|
||||||
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@libbacktrace_elf_for_test_la_LIBADD = $(BACKTRACE_FILE) elf_for_test.lo \
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@libbacktrace_elf_for_test_la_LIBADD = $(BACKTRACE_FILE) elf_for_test.lo \
|
||||||
@@ -1168,10 +1182,10 @@ libbacktrace_testing_ldflags = -no-install
|
|||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ztest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -DSRCDIR=\"$(srcdir)\"
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ztest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -DSRCDIR=\"$(srcdir)\"
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ztest_LDFLAGS = $(libbacktrace_testing_ldflags)
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ztest_LDFLAGS = $(libbacktrace_testing_ldflags)
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ztest_LDADD = libbacktrace.la \
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ztest_LDADD = libbacktrace.la \
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(am__append_14) \
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(am__append_16) \
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(CLOCK_GETTIME_LINK)
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(CLOCK_GETTIME_LINK)
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ztest_alloc_LDADD = libbacktrace_alloc.la \
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ztest_alloc_LDADD = libbacktrace_alloc.la \
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(am__append_15) \
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(am__append_17) \
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(CLOCK_GETTIME_LINK)
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(CLOCK_GETTIME_LINK)
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ztest_alloc_SOURCES = $(ztest_SOURCES)
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ztest_alloc_SOURCES = $(ztest_SOURCES)
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ztest_alloc_CFLAGS = $(ztest_CFLAGS)
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ztest_alloc_CFLAGS = $(ztest_CFLAGS)
|
||||||
@@ -1180,11 +1194,11 @@ libbacktrace_testing_ldflags = -no-install
|
|||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@zstdtest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -DSRCDIR=\"$(srcdir)\"
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@zstdtest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -DSRCDIR=\"$(srcdir)\"
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@zstdtest_LDFLAGS = $(libbacktrace_testing_ldflags)
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@zstdtest_LDFLAGS = $(libbacktrace_testing_ldflags)
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@zstdtest_LDADD = libbacktrace.la \
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@zstdtest_LDADD = libbacktrace.la \
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(am__append_17) \
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(am__append_19) \
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(CLOCK_GETTIME_LINK)
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(CLOCK_GETTIME_LINK)
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@zstdtest_alloc_LDADD = \
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@zstdtest_alloc_LDADD = \
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ libbacktrace_alloc.la \
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ libbacktrace_alloc.la \
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(am__append_18) \
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(am__append_20) \
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(CLOCK_GETTIME_LINK)
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(CLOCK_GETTIME_LINK)
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@zstdtest_alloc_SOURCES = $(zstdtest_SOURCES)
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@zstdtest_alloc_SOURCES = $(zstdtest_SOURCES)
|
||||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@zstdtest_alloc_CFLAGS = $(zstdtest_CFLAGS)
|
@HAVE_ELF_TRUE@@NATIVE_TRUE@zstdtest_alloc_CFLAGS = $(zstdtest_CFLAGS)
|
||||||
@@ -1248,13 +1262,13 @@ libbacktrace_testing_ldflags = -no-install
|
|||||||
@HAVE_ELF_TRUE@xztest_SOURCES = xztest.c testlib.c
|
@HAVE_ELF_TRUE@xztest_SOURCES = xztest.c testlib.c
|
||||||
@HAVE_ELF_TRUE@xztest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -DSRCDIR=\"$(srcdir)\"
|
@HAVE_ELF_TRUE@xztest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -DSRCDIR=\"$(srcdir)\"
|
||||||
@HAVE_ELF_TRUE@xztest_LDFLAGS = $(libbacktrace_testing_ldflags)
|
@HAVE_ELF_TRUE@xztest_LDFLAGS = $(libbacktrace_testing_ldflags)
|
||||||
@HAVE_ELF_TRUE@xztest_LDADD = libbacktrace.la $(am__append_33) \
|
@HAVE_ELF_TRUE@xztest_LDADD = libbacktrace.la $(am__append_35) \
|
||||||
@HAVE_ELF_TRUE@ $(CLOCK_GETTIME_LINK)
|
@HAVE_ELF_TRUE@ $(CLOCK_GETTIME_LINK)
|
||||||
@HAVE_ELF_TRUE@xztest_alloc_SOURCES = $(xztest_SOURCES)
|
@HAVE_ELF_TRUE@xztest_alloc_SOURCES = $(xztest_SOURCES)
|
||||||
@HAVE_ELF_TRUE@xztest_alloc_CFLAGS = $(xztest_CFLAGS)
|
@HAVE_ELF_TRUE@xztest_alloc_CFLAGS = $(xztest_CFLAGS)
|
||||||
@HAVE_ELF_TRUE@xztest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags)
|
@HAVE_ELF_TRUE@xztest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags)
|
||||||
@HAVE_ELF_TRUE@xztest_alloc_LDADD = libbacktrace_alloc.la \
|
@HAVE_ELF_TRUE@xztest_alloc_LDADD = libbacktrace_alloc.la \
|
||||||
@HAVE_ELF_TRUE@ $(am__append_34) $(CLOCK_GETTIME_LINK)
|
@HAVE_ELF_TRUE@ $(am__append_36) $(CLOCK_GETTIME_LINK)
|
||||||
CLEANFILES = \
|
CLEANFILES = \
|
||||||
$(MAKETESTS) $(BUILDTESTS) *.debug elf_for_test.c edtest2_build.c \
|
$(MAKETESTS) $(BUILDTESTS) *.debug elf_for_test.c edtest2_build.c \
|
||||||
gen_edtest2_build \
|
gen_edtest2_build \
|
||||||
@@ -1473,6 +1487,10 @@ stest_alloc$(EXEEXT): $(stest_alloc_OBJECTS) $(stest_alloc_DEPENDENCIES) $(EXTRA
|
|||||||
@rm -f stest_alloc$(EXEEXT)
|
@rm -f stest_alloc$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(stest_alloc_LINK) $(stest_alloc_OBJECTS) $(stest_alloc_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(stest_alloc_LINK) $(stest_alloc_OBJECTS) $(stest_alloc_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
strippedtest$(EXEEXT): $(strippedtest_OBJECTS) $(strippedtest_DEPENDENCIES) $(EXTRA_strippedtest_DEPENDENCIES)
|
||||||
|
@rm -f strippedtest$(EXEEXT)
|
||||||
|
$(AM_V_CCLD)$(strippedtest_LINK) $(strippedtest_OBJECTS) $(strippedtest_LDADD) $(LIBS)
|
||||||
|
|
||||||
test_elf_32$(EXEEXT): $(test_elf_32_OBJECTS) $(test_elf_32_DEPENDENCIES) $(EXTRA_test_elf_32_DEPENDENCIES)
|
test_elf_32$(EXEEXT): $(test_elf_32_OBJECTS) $(test_elf_32_DEPENDENCIES) $(EXTRA_test_elf_32_DEPENDENCIES)
|
||||||
@rm -f test_elf_32$(EXEEXT)
|
@rm -f test_elf_32$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(test_elf_32_LINK) $(test_elf_32_OBJECTS) $(test_elf_32_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(test_elf_32_LINK) $(test_elf_32_OBJECTS) $(test_elf_32_LDADD) $(LIBS)
|
||||||
@@ -1808,6 +1826,18 @@ stest_alloc-stest.o: stest.c
|
|||||||
stest_alloc-stest.obj: stest.c
|
stest_alloc-stest.obj: stest.c
|
||||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stest_alloc_CFLAGS) $(CFLAGS) -c -o stest_alloc-stest.obj `if test -f 'stest.c'; then $(CYGPATH_W) 'stest.c'; else $(CYGPATH_W) '$(srcdir)/stest.c'; fi`
|
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stest_alloc_CFLAGS) $(CFLAGS) -c -o stest_alloc-stest.obj `if test -f 'stest.c'; then $(CYGPATH_W) 'stest.c'; else $(CYGPATH_W) '$(srcdir)/stest.c'; fi`
|
||||||
|
|
||||||
|
strippedtest-strippedtest.o: strippedtest.c
|
||||||
|
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(strippedtest_CFLAGS) $(CFLAGS) -c -o strippedtest-strippedtest.o `test -f 'strippedtest.c' || echo '$(srcdir)/'`strippedtest.c
|
||||||
|
|
||||||
|
strippedtest-strippedtest.obj: strippedtest.c
|
||||||
|
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(strippedtest_CFLAGS) $(CFLAGS) -c -o strippedtest-strippedtest.obj `if test -f 'strippedtest.c'; then $(CYGPATH_W) 'strippedtest.c'; else $(CYGPATH_W) '$(srcdir)/strippedtest.c'; fi`
|
||||||
|
|
||||||
|
strippedtest-testlib.o: testlib.c
|
||||||
|
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(strippedtest_CFLAGS) $(CFLAGS) -c -o strippedtest-testlib.o `test -f 'testlib.c' || echo '$(srcdir)/'`testlib.c
|
||||||
|
|
||||||
|
strippedtest-testlib.obj: testlib.c
|
||||||
|
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(strippedtest_CFLAGS) $(CFLAGS) -c -o strippedtest-testlib.obj `if test -f 'testlib.c'; then $(CYGPATH_W) 'testlib.c'; else $(CYGPATH_W) '$(srcdir)/testlib.c'; fi`
|
||||||
|
|
||||||
test_elf_32-test_format.o: test_format.c
|
test_elf_32-test_format.o: test_format.c
|
||||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_elf_32_CFLAGS) $(CFLAGS) -c -o test_elf_32-test_format.o `test -f 'test_format.c' || echo '$(srcdir)/'`test_format.c
|
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_elf_32_CFLAGS) $(CFLAGS) -c -o test_elf_32-test_format.o `test -f 'test_format.c' || echo '$(srcdir)/'`test_format.c
|
||||||
|
|
||||||
@@ -2249,6 +2279,13 @@ allocfail.sh.log: allocfail.sh
|
|||||||
--log-file $$b.log --trs-file $$b.trs \
|
--log-file $$b.log --trs-file $$b.trs \
|
||||||
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||||
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||||
|
strippedtest_stripped.log: strippedtest_stripped
|
||||||
|
@p='strippedtest_stripped'; \
|
||||||
|
b='strippedtest_stripped'; \
|
||||||
|
$(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)
|
||||||
b2test_buildid.log: b2test_buildid
|
b2test_buildid.log: b2test_buildid
|
||||||
@p='b2test_buildid'; \
|
@p='b2test_buildid'; \
|
||||||
b='b2test_buildid'; \
|
b='b2test_buildid'; \
|
||||||
@@ -2713,6 +2750,9 @@ uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
|
|||||||
@USE_DSYMUTIL_TRUE@%.dSYM: %
|
@USE_DSYMUTIL_TRUE@%.dSYM: %
|
||||||
@USE_DSYMUTIL_TRUE@ $(DSYMUTIL) $<
|
@USE_DSYMUTIL_TRUE@ $(DSYMUTIL) $<
|
||||||
|
|
||||||
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_STRIPDEBUG_TRUE@@NATIVE_TRUE@%_stripped: %
|
||||||
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_STRIPDEBUG_TRUE@@NATIVE_TRUE@ $(OBJCOPY) --strip-debug $< $@
|
||||||
|
|
||||||
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@elf_for_test.c: elf.c
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@elf_for_test.c: elf.c
|
||||||
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@ SEARCH='^#define SYSTEM_BUILD_ID_DIR.*$$'; \
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@ SEARCH='^#define SYSTEM_BUILD_ID_DIR.*$$'; \
|
||||||
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@ REPLACE="#define SYSTEM_BUILD_ID_DIR \"$(TEST_BUILD_ID_DIR)\""; \
|
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@ REPLACE="#define SYSTEM_BUILD_ID_DIR \"$(TEST_BUILD_ID_DIR)\""; \
|
||||||
|
|||||||
@@ -649,6 +649,8 @@ USE_DSYMUTIL_FALSE
|
|||||||
USE_DSYMUTIL_TRUE
|
USE_DSYMUTIL_TRUE
|
||||||
HAVE_OBJCOPY_DEBUGLINK_FALSE
|
HAVE_OBJCOPY_DEBUGLINK_FALSE
|
||||||
HAVE_OBJCOPY_DEBUGLINK_TRUE
|
HAVE_OBJCOPY_DEBUGLINK_TRUE
|
||||||
|
HAVE_OBJCOPY_STRIPDEBUG_FALSE
|
||||||
|
HAVE_OBJCOPY_STRIPDEBUG_TRUE
|
||||||
READELF
|
READELF
|
||||||
OBJCOPY
|
OBJCOPY
|
||||||
HAVE_COMPRESSED_DEBUG_ZSTD_FALSE
|
HAVE_COMPRESSED_DEBUG_ZSTD_FALSE
|
||||||
@@ -11397,7 +11399,7 @@ else
|
|||||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||||
lt_status=$lt_dlunknown
|
lt_status=$lt_dlunknown
|
||||||
cat > conftest.$ac_ext <<_LT_EOF
|
cat > conftest.$ac_ext <<_LT_EOF
|
||||||
#line 11400 "configure"
|
#line 11402 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
#if HAVE_DLFCN_H
|
#if HAVE_DLFCN_H
|
||||||
@@ -11503,7 +11505,7 @@ else
|
|||||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||||
lt_status=$lt_dlunknown
|
lt_status=$lt_dlunknown
|
||||||
cat > conftest.$ac_ext <<_LT_EOF
|
cat > conftest.$ac_ext <<_LT_EOF
|
||||||
#line 11506 "configure"
|
#line 11508 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
#if HAVE_DLFCN_H
|
#if HAVE_DLFCN_H
|
||||||
@@ -13254,6 +13256,33 @@ $as_echo "no" >&6; }
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether objcopy supports --strip-debug" >&5
|
||||||
|
$as_echo_n "checking whether objcopy supports --strip-debug... " >&6; }
|
||||||
|
if ${libbacktrace_cv_objcopy_stripdebug+:} false; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
else
|
||||||
|
if test -n "${with_target_subdir}"; then
|
||||||
|
libbacktrace_cv_objcopy_stripdebug=no
|
||||||
|
elif ! test -n "${OBJCOPY}"; then
|
||||||
|
libbacktrace_cv_objcopy_stripdebug=no
|
||||||
|
elif ${OBJCOPY} --help | grep strip-debug >/dev/null 2>&1; then
|
||||||
|
libbacktrace_cv_objcopy_stripdebug=yes
|
||||||
|
else
|
||||||
|
libbacktrace_cv_objcopy_stripdebug=no
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libbacktrace_cv_objcopy_stripdebug" >&5
|
||||||
|
$as_echo "$libbacktrace_cv_objcopy_stripdebug" >&6; }
|
||||||
|
if test "$libbacktrace_cv_objcopy_stripdebug" = yes; then
|
||||||
|
HAVE_OBJCOPY_STRIPDEBUG_TRUE=
|
||||||
|
HAVE_OBJCOPY_STRIPDEBUG_FALSE='#'
|
||||||
|
else
|
||||||
|
HAVE_OBJCOPY_STRIPDEBUG_TRUE='#'
|
||||||
|
HAVE_OBJCOPY_STRIPDEBUG_FALSE=
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether objcopy supports debuglink" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether objcopy supports debuglink" >&5
|
||||||
$as_echo_n "checking whether objcopy supports debuglink... " >&6; }
|
$as_echo_n "checking whether objcopy supports debuglink... " >&6; }
|
||||||
if ${libbacktrace_cv_objcopy_debuglink+:} false; then :
|
if ${libbacktrace_cv_objcopy_debuglink+:} false; then :
|
||||||
@@ -13745,6 +13774,10 @@ if test -z "${HAVE_COMPRESSED_DEBUG_ZSTD_TRUE}" && test -z "${HAVE_COMPRESSED_DE
|
|||||||
as_fn_error $? "conditional \"HAVE_COMPRESSED_DEBUG_ZSTD\" was never defined.
|
as_fn_error $? "conditional \"HAVE_COMPRESSED_DEBUG_ZSTD\" was never defined.
|
||||||
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||||
fi
|
fi
|
||||||
|
if test -z "${HAVE_OBJCOPY_STRIPDEBUG_TRUE}" && test -z "${HAVE_OBJCOPY_STRIPDEBUG_FALSE}"; then
|
||||||
|
as_fn_error $? "conditional \"HAVE_OBJCOPY_STRIPDEBUG\" was never defined.
|
||||||
|
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||||
|
fi
|
||||||
if test -z "${HAVE_OBJCOPY_DEBUGLINK_TRUE}" && test -z "${HAVE_OBJCOPY_DEBUGLINK_FALSE}"; then
|
if test -z "${HAVE_OBJCOPY_DEBUGLINK_TRUE}" && test -z "${HAVE_OBJCOPY_DEBUGLINK_FALSE}"; then
|
||||||
as_fn_error $? "conditional \"HAVE_OBJCOPY_DEBUGLINK\" was never defined.
|
as_fn_error $? "conditional \"HAVE_OBJCOPY_DEBUGLINK\" was never defined.
|
||||||
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||||
|
|||||||
@@ -560,6 +560,20 @@ AM_CONDITIONAL(HAVE_COMPRESSED_DEBUG_ZSTD, test "$libgo_cv_ld_compress_zstd" = y
|
|||||||
AC_ARG_VAR(OBJCOPY, [location of objcopy])
|
AC_ARG_VAR(OBJCOPY, [location of objcopy])
|
||||||
AC_CHECK_PROG(OBJCOPY, objcopy, objcopy,)
|
AC_CHECK_PROG(OBJCOPY, objcopy, objcopy,)
|
||||||
AC_CHECK_PROG(READELF, readelf, readelf)
|
AC_CHECK_PROG(READELF, readelf, readelf)
|
||||||
|
|
||||||
|
AC_CACHE_CHECK([whether objcopy supports --strip-debug],
|
||||||
|
[libbacktrace_cv_objcopy_stripdebug],
|
||||||
|
[if test -n "${with_target_subdir}"; then
|
||||||
|
libbacktrace_cv_objcopy_stripdebug=no
|
||||||
|
elif ! test -n "${OBJCOPY}"; then
|
||||||
|
libbacktrace_cv_objcopy_stripdebug=no
|
||||||
|
elif ${OBJCOPY} --help | grep strip-debug >/dev/null 2>&1; then
|
||||||
|
libbacktrace_cv_objcopy_stripdebug=yes
|
||||||
|
else
|
||||||
|
libbacktrace_cv_objcopy_stripdebug=no
|
||||||
|
fi])
|
||||||
|
AM_CONDITIONAL(HAVE_OBJCOPY_STRIPDEBUG, test "$libbacktrace_cv_objcopy_stripdebug" = yes)
|
||||||
|
|
||||||
AC_CACHE_CHECK([whether objcopy supports debuglink],
|
AC_CACHE_CHECK([whether objcopy supports debuglink],
|
||||||
[libbacktrace_cv_objcopy_debuglink],
|
[libbacktrace_cv_objcopy_debuglink],
|
||||||
[if test -n "${with_target_subdir}"; then
|
[if test -n "${with_target_subdir}"; then
|
||||||
|
|||||||
@@ -584,6 +584,12 @@ elf_nodebug (struct backtrace_state *state, uintptr_t pc,
|
|||||||
bdata.full_error_callback = error_callback;
|
bdata.full_error_callback = error_callback;
|
||||||
bdata.full_data = data;
|
bdata.full_data = data;
|
||||||
bdata.ret = 0;
|
bdata.ret = 0;
|
||||||
|
if (state->moredata)
|
||||||
|
state->syminfo_fn (state, pc,
|
||||||
|
backtrace_syminfo_to_full_callback_moredata,
|
||||||
|
backtrace_syminfo_to_full_error_callback,
|
||||||
|
&bdata);
|
||||||
|
else
|
||||||
state->syminfo_fn (state, pc, backtrace_syminfo_to_full_callback,
|
state->syminfo_fn (state, pc, backtrace_syminfo_to_full_callback,
|
||||||
backtrace_syminfo_to_full_error_callback, &bdata);
|
backtrace_syminfo_to_full_error_callback, &bdata);
|
||||||
return bdata.ret;
|
return bdata.ret;
|
||||||
|
|||||||
+21
-3
@@ -37,6 +37,7 @@ POSSIBILITY OF SUCH DAMAGE. */
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#if defined (HAVE_KERN_PROC_ARGS) || defined (HAVE_KERN_PROC)
|
#if defined (HAVE_KERN_PROC_ARGS) || defined (HAVE_KERN_PROC)
|
||||||
@@ -425,12 +426,29 @@ backtrace_syminfo_to_full_callback (void *data, uintptr_t pc,
|
|||||||
{
|
{
|
||||||
struct backtrace_call_full *bdata = (struct backtrace_call_full *) data;
|
struct backtrace_call_full *bdata = (struct backtrace_call_full *) data;
|
||||||
|
|
||||||
/* If STATE->MOREDATA is set, then data will point to a
|
|
||||||
backtrace_moredata struct, which is what full_callback expects. */
|
|
||||||
|
|
||||||
bdata->ret = bdata->full_callback (bdata->full_data, pc, NULL, 0, symname);
|
bdata->ret = bdata->full_callback (bdata->full_data, pc, NULL, 0, symname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Variant of backtrace_syminfo_to_full_callback that handles the exta
|
||||||
|
wrapping of moredata. */
|
||||||
|
|
||||||
|
void
|
||||||
|
backtrace_syminfo_to_full_callback_moredata (void *data, uintptr_t pc,
|
||||||
|
const char *symname,
|
||||||
|
uintptr_t symval ATTRIBUTE_UNUSED,
|
||||||
|
uintptr_t symsize ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
struct backtrace_moredata *md = (struct backtrace_moredata *) data;
|
||||||
|
struct backtrace_call_full *bdata;
|
||||||
|
struct backtrace_moredata callback_md;
|
||||||
|
|
||||||
|
bdata = (struct backtrace_call_full *) md->backtrace_data;
|
||||||
|
memset (&callback_md, 0, sizeof callback_md);
|
||||||
|
callback_md.backtrace_version = BACKTRACE_MOREDATA_VERSION;
|
||||||
|
callback_md.backtrace_data = bdata->full_data;
|
||||||
|
bdata->ret = bdata->full_callback (&callback_md, pc, NULL, 0, symname);
|
||||||
|
}
|
||||||
|
|
||||||
/* An error callback that corresponds to
|
/* An error callback that corresponds to
|
||||||
backtrace_syminfo_to_full_callback. */
|
backtrace_syminfo_to_full_callback. */
|
||||||
|
|
||||||
|
|||||||
@@ -394,6 +394,15 @@ extern void backtrace_syminfo_to_full_callback (void *data, uintptr_t pc,
|
|||||||
uintptr_t symval,
|
uintptr_t symval,
|
||||||
uintptr_t symsize);
|
uintptr_t symsize);
|
||||||
|
|
||||||
|
/* A variant of backtrace_syminfo_to_full_callback for when the moredata
|
||||||
|
flag is set. */
|
||||||
|
|
||||||
|
extern void backtrace_syminfo_to_full_callback_moredata (void *data,
|
||||||
|
uintptr_t pc,
|
||||||
|
const char *symname,
|
||||||
|
uintptr_t symval,
|
||||||
|
uintptr_t symsize);
|
||||||
|
|
||||||
/* An error callback that corresponds to
|
/* An error callback that corresponds to
|
||||||
backtrace_syminfo_to_full_callback. */
|
backtrace_syminfo_to_full_callback. */
|
||||||
|
|
||||||
|
|||||||
+215
@@ -0,0 +1,215 @@
|
|||||||
|
/* strippedtest.c -- Test for libbacktrace library with no debug info
|
||||||
|
Copyright (C) 2026 Free Software Foundation, Inc.
|
||||||
|
Written by Ian Lance Taylor.
|
||||||
|
|
||||||
|
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. */
|
||||||
|
|
||||||
|
/* Test libbacktrace when there is no debug info. */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "backtrace.h"
|
||||||
|
#include "backtrace-supported.h"
|
||||||
|
#include "internal.h"
|
||||||
|
|
||||||
|
#include "testlib.h"
|
||||||
|
|
||||||
|
/* Used to collect moredata info from backtraces. */
|
||||||
|
|
||||||
|
struct mdinfo
|
||||||
|
{
|
||||||
|
int decl_lineno;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* We pass a pointer to this as the data field to the backtrace
|
||||||
|
functions. */
|
||||||
|
|
||||||
|
struct mddata
|
||||||
|
{
|
||||||
|
struct bdata bdata;
|
||||||
|
struct mdinfo *mdall;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* backtrace_full_callback with moredata flag. */
|
||||||
|
|
||||||
|
static int
|
||||||
|
md_callback_one (void *vdata, uintptr_t pc, const char *filename, int lineno,
|
||||||
|
const char *function)
|
||||||
|
{
|
||||||
|
struct backtrace_moredata *md = (struct backtrace_moredata *) vdata;
|
||||||
|
struct mddata *mddata = (struct mddata *) md->backtrace_data;
|
||||||
|
struct bdata *data = &mddata->bdata;
|
||||||
|
|
||||||
|
if (md->backtrace_version != BACKTRACE_MOREDATA_VERSION)
|
||||||
|
{
|
||||||
|
fprintf (stderr,
|
||||||
|
"md_callback_one: wrong moredata version: got %u, want %u\n",
|
||||||
|
md->backtrace_version, BACKTRACE_MOREDATA_VERSION);
|
||||||
|
data->failed = 1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data->index < data->max)
|
||||||
|
mddata->mdall[data->index].decl_lineno = md->backtrace_decl_lineno;
|
||||||
|
|
||||||
|
return callback_one ((void *) data, pc, filename, lineno, function);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The check function for a stripped executable. */
|
||||||
|
|
||||||
|
static void
|
||||||
|
stripped_check (const char *name, int index, const struct info *all,
|
||||||
|
const char *want_function, int *failed)
|
||||||
|
{
|
||||||
|
if (*failed)
|
||||||
|
return;
|
||||||
|
if (all[index].filename != NULL)
|
||||||
|
{
|
||||||
|
fprintf (stderr, "%s: [%d]: unexpected file name in stripped program\n",
|
||||||
|
name, index);
|
||||||
|
*failed = 1;
|
||||||
|
}
|
||||||
|
if (all[index].function == NULL)
|
||||||
|
{
|
||||||
|
fprintf (stderr, "%s: [%d]: missing function name\n",
|
||||||
|
name, index);
|
||||||
|
*failed = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (all[index].lineno != 0)
|
||||||
|
{
|
||||||
|
fprintf (stderr, "%s: [%d]: got %d expected 0\n", name, index,
|
||||||
|
all[index].lineno);
|
||||||
|
*failed = 1;
|
||||||
|
}
|
||||||
|
if (strcmp (all[index].function, want_function) != 0)
|
||||||
|
{
|
||||||
|
fprintf (stderr, "%s: [%d]: got %s expected %s\n", name, index,
|
||||||
|
all[index].function, want_function);
|
||||||
|
*failed = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int test1 (int) __attribute__ ((noinline, noclone, optnone, unused));
|
||||||
|
static int f2 (int, int) __attribute__ ((noinline, noclone));
|
||||||
|
static int f3 (int, int, int) __attribute__ ((noinline, noclone));
|
||||||
|
|
||||||
|
static int
|
||||||
|
test1 (int mdtest)
|
||||||
|
{
|
||||||
|
return f2 (mdtest, __LINE__) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
f2 (int mdtest, int f1line)
|
||||||
|
{
|
||||||
|
return f3 (mdtest, f1line, __LINE__) + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
f3 (int mdtest, int f1line ATTRIBUTE_UNUSED, int f2line ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
struct info all[20];
|
||||||
|
struct mdinfo mdall[20];
|
||||||
|
struct bdata bdata;
|
||||||
|
struct mddata mddata;
|
||||||
|
void *data;
|
||||||
|
backtrace_full_callback callback;
|
||||||
|
int i;
|
||||||
|
int failed;
|
||||||
|
size_t index;
|
||||||
|
|
||||||
|
bdata.all = &all[0];
|
||||||
|
bdata.index = 0;
|
||||||
|
bdata.max = 20;
|
||||||
|
bdata.failed = 0;
|
||||||
|
data = (void *) &bdata;
|
||||||
|
callback = callback_one;
|
||||||
|
|
||||||
|
if (mdtest)
|
||||||
|
{
|
||||||
|
mddata.bdata = bdata;
|
||||||
|
mddata.mdall = &mdall[0];
|
||||||
|
data = (void *) &mddata;
|
||||||
|
callback = md_callback_one;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = backtrace_full (state, 0, callback, error_callback_one, data);
|
||||||
|
|
||||||
|
failed = mdtest ? mddata.bdata.failed : bdata.failed;
|
||||||
|
|
||||||
|
if (i != 0)
|
||||||
|
{
|
||||||
|
fprintf (stderr, "test1: unexpected return value %d\n", i);
|
||||||
|
failed = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
index = mdtest ? mddata.bdata.index : bdata.index;
|
||||||
|
if (index < 3)
|
||||||
|
{
|
||||||
|
fprintf (stderr,
|
||||||
|
"test1: not enough frames; got %zu, expected at least 3\n",
|
||||||
|
index);
|
||||||
|
failed = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
stripped_check ("test1", 0, all, "f3", &failed);
|
||||||
|
stripped_check ("test1", 1, all, "f2", &failed);
|
||||||
|
stripped_check ("test1", 2, all, "test1", &failed);
|
||||||
|
|
||||||
|
printf ("%s: backtrace_full noinline%s\n", failed ? "FAIL" : "PASS",
|
||||||
|
mdtest ? " mdtest" : "");
|
||||||
|
|
||||||
|
if (failed)
|
||||||
|
++failures;
|
||||||
|
|
||||||
|
return failures;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc ATTRIBUTE_UNUSED, char **argv)
|
||||||
|
{
|
||||||
|
state = backtrace_create_state (argv[0], BACKTRACE_SUPPORTS_THREADS,
|
||||||
|
error_callback_create, NULL);
|
||||||
|
|
||||||
|
#if BACKTRACE_SUPPORTED
|
||||||
|
test1 (0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
state = backtrace_create_state (argv[0], BACKTRACE_SUPPORTS_THREADS | 2,
|
||||||
|
error_callback_create, NULL);
|
||||||
|
|
||||||
|
#if BACKTRACE_SUPPORTED
|
||||||
|
test1 (1);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
exit (failures ? EXIT_FAILURE : EXIT_SUCCESS);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user