Skip to content
This repository has been archived by the owner on Apr 2, 2024. It is now read-only.

Update to latest upstream master #1

Closed
wants to merge 6 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
287 changes: 264 additions & 23 deletions Makefile.am
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Makefile.am -- Backtrace Makefile.
# Copyright (C) 2012-2018 Free Software Foundation, Inc.
# Copyright (C) 2012-2019 Free Software Foundation, Inc.

# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
Expand Down Expand Up @@ -31,6 +31,8 @@

ACLOCAL_AMFLAGS = -I config

AM_CPPFLAGS =

AM_CFLAGS = $(EXTRA_FLAGS) $(WARN_FLAGS) $(PIC_FLAG)

include_HEADERS = backtrace.h backtrace-supported.h
Expand Down Expand Up @@ -83,77 +85,279 @@ libbacktrace_la_DEPENDENCIES = $(libbacktrace_la_LIBADD)

# Testsuite.

# Add test to this variable, if you want it to be build.
check_PROGRAMS =
CLEANFILES =

TESTS = $(check_PROGRAMS)
# Add test to this variable, if you want it to be run.
TESTS =

# Add test to this variable, if you want it to be build and run.
BUILDTESTS =

if NATIVE
check_LTLIBRARIES = libbacktrace_alloc.la

libbacktrace_alloc_la_SOURCES = $(libbacktrace_la_SOURCES)
libbacktrace_alloc_la_LIBADD = $(BACKTRACE_FILE) $(FORMAT_FILE) read.lo alloc.lo

libbacktrace_alloc_la_DEPENDENCIES = $(libbacktrace_alloc_la_LIBADD)

check_LTLIBRARIES += libbacktrace_noformat.la

libbacktrace_noformat_la_SOURCES = $(libbacktrace_la_SOURCES)
libbacktrace_noformat_la_LIBADD = $(BACKTRACE_FILE) $(VIEW_FILE) $(ALLOC_FILE)

libbacktrace_noformat_la_DEPENDENCIES = $(libbacktrace_noformat_la_LIBADD)

if HAVE_ELF
if HAVE_OBJCOPY_DEBUGLINK

TEST_BUILD_ID_DIR=$(abs_builddir)/usr/lib/debug/.build-id/

check_LTLIBRARIES += libbacktrace_elf_for_test.la

libbacktrace_elf_for_test_la_SOURCES = $(libbacktrace_la_SOURCES)
libbacktrace_elf_for_test_la_LIBADD = $(BACKTRACE_FILE) elf_for_test.lo \
$(VIEW_FILE) $(ALLOC_FILE)

elf_for_test.c: elf.c
SEARCH='^#define SYSTEM_BUILD_ID_DIR.*$$'; \
REPLACE="#define SYSTEM_BUILD_ID_DIR \"$(TEST_BUILD_ID_DIR)\""; \
$(SED) "s%$$SEARCH%$$REPLACE%" \
$< \
> [email protected]
mv [email protected] $@

endif HAVE_OBJCOPY_DEBUGLINK
endif HAVE_ELF

elf_%.c: elf.c
SEARCH='#error "Unknown BACKTRACE_ELF_SIZE"'; \
REPLACE='#undef BACKTRACE_ELF_SIZE\
#define BACKTRACE_ELF_SIZE'; \
$(SED) "s/^$$SEARCH\$$/$$REPLACE $*/" \
$< \
> [email protected]
mv [email protected] $@

xcoff_%.c: xcoff.c
SEARCH='#error "Unknown BACKTRACE_XCOFF_SIZE"'; \
REPLACE='#undef BACKTRACE_XCOFF_SIZE\
#define BACKTRACE_XCOFF_SIZE'; \
$(SED) "s/^$$SEARCH\$$/$$REPLACE $*/" \
$< \
> [email protected]
mv [email protected] $@

test_elf_32_SOURCES = test_format.c testlib.c
test_elf_32_LDADD = libbacktrace_noformat.la elf_32.lo

BUILDTESTS += test_elf_32

test_elf_64_SOURCES = test_format.c testlib.c
test_elf_64_LDADD = libbacktrace_noformat.la elf_64.lo

BUILDTESTS += test_elf_64

test_xcoff_32_SOURCES = test_format.c testlib.c
test_xcoff_32_LDADD = libbacktrace_noformat.la xcoff_32.lo

BUILDTESTS += test_xcoff_32

test_xcoff_64_SOURCES = test_format.c testlib.c
test_xcoff_64_LDADD = libbacktrace_noformat.la xcoff_64.lo

BUILDTESTS += test_xcoff_64

test_pecoff_SOURCES = test_format.c testlib.c
test_pecoff_LDADD = libbacktrace_noformat.la pecoff.lo

BUILDTESTS += test_pecoff

test_unknown_SOURCES = test_format.c testlib.c
test_unknown_LDADD = libbacktrace_noformat.la unknown.lo

BUILDTESTS += test_unknown

unittest_SOURCES = unittest.c testlib.c
unittest_LDADD = libbacktrace.la

BUILDTESTS += unittest

unittest_alloc_SOURCES = $(unittest_SOURCES)
unittest_alloc_LDADD = libbacktrace_alloc.la

BUILDTESTS += unittest_alloc

check_LTLIBRARIES += libbacktrace_instrumented_alloc.la

libbacktrace_instrumented_alloc_la_SOURCES = $(libbacktrace_la_SOURCES)
libbacktrace_instrumented_alloc_la_LIBADD = $(BACKTRACE_FILE) $(FORMAT_FILE) \
read.lo instrumented_alloc.lo

libbacktrace_instrumented_alloc_la_DEPENDENCIES = \
$(libbacktrace_instrumented_alloc_la_LIBADD)

instrumented_alloc.lo: alloc.c

allocfail_SOURCES = allocfail.c testlib.c
allocfail_LDADD = libbacktrace_instrumented_alloc.la

check_PROGRAMS += allocfail

allocfail.sh: allocfail

TESTS += allocfail.sh

if HAVE_ELF
if HAVE_OBJCOPY_DEBUGLINK

b2test_SOURCES = $(btest_SOURCES)
b2test_CFLAGS = $(btest_CFLAGS)
b2test_LDFLAGS = -Wl,--build-id
b2test_LDADD = libbacktrace_elf_for_test.la

check_PROGRAMS += b2test
TESTS += b2test_buildid

if HAVE_DWZ

b3test_SOURCES = $(btest_SOURCES)
b3test_CFLAGS = $(btest_CFLAGS)
b3test_LDFLAGS = -Wl,--build-id
b3test_LDADD = libbacktrace_elf_for_test.la

check_PROGRAMS += b3test
TESTS += b3test_dwz_buildid

endif HAVE_DWZ

endif HAVE_OBJCOPY_DEBUGLINK
endif HAVE_ELF

btest_SOURCES = btest.c testlib.c
btest_CFLAGS = $(AM_CFLAGS) -g -O
btest_LDADD = libbacktrace.la

check_PROGRAMS += btest
BUILDTESTS += btest

if HAVE_ELF

btest_lto_SOURCES = btest.c testlib.c
btest_lto_CFLAGS = $(AM_CFLAGS) -g -O -flto
btest_lto_LDADD = libbacktrace.la

BUILDTESTS += btest_lto

endif HAVE_ELF

btest_alloc_SOURCES = $(btest_SOURCES)
btest_alloc_CFLAGS = $(btest_CFLAGS)
btest_alloc_LDADD = libbacktrace_alloc.la

BUILDTESTS += btest_alloc

if HAVE_DWZ

btest_static_SOURCES = btest.c testlib.c
btest_static_CFLAGS = $(AM_CFLAGS) -g -O
btest_static_LDADD = libbacktrace.la
btest_static_LDFLAGS = -static-libtool-libs
%_dwz: %
rm -f $@ $@_common.debug
cp $< $@_1
cp $< $@_2
$(DWZ) -m $@_common.debug $@_1 $@_2
rm -f $@_2
mv $@_1 $@

check_PROGRAMS += btest_static
TESTS += btest_dwz

if HAVE_OBJCOPY_DEBUGLINK

TESTS += btest_dwz_gnudebuglink

endif HAVE_OBJCOPY_DEBUGLINK

endif HAVE_DWZ

stest_SOURCES = stest.c
stest_LDADD = libbacktrace.la

check_PROGRAMS += stest
BUILDTESTS += stest

stest_alloc_SOURCES = $(stest_SOURCES)
stest_alloc_LDADD = libbacktrace_alloc.la

BUILDTESTS += stest_alloc

if HAVE_ELF

ztest_SOURCES = ztest.c testlib.c
ztest_CFLAGS = -DSRCDIR=\"$(srcdir)\"
ztest_LDADD = libbacktrace.la
ztest_alloc_LDADD = libbacktrace_alloc.la

if HAVE_ZLIB
ztest_LDADD += -lz
ztest_alloc_LDADD += -lz
endif
ztest_LDADD += $(CLOCK_GETTIME_LINK)
ztest_alloc_LDADD += $(CLOCK_GETTIME_LINK)

BUILDTESTS += ztest

ztest_alloc_SOURCES = $(ztest_SOURCES)
ztest_alloc_CFLAGS = $(ztest_CFLAGS)

check_PROGRAMS += ztest
BUILDTESTS += ztest_alloc

endif HAVE_ELF

edtest_SOURCES = edtest.c edtest2_build.c testlib.c
edtest_LDADD = libbacktrace.la

check_PROGRAMS += edtest
BUILDTESTS += edtest

edtest_alloc_SOURCES = $(edtest_SOURCES)
edtest_alloc_LDADD = libbacktrace_alloc.la

BUILDTESTS += edtest_alloc

edtest2_build.c: gen_edtest2_build; @true
gen_edtest2_build: $(srcdir)/edtest2.c
cat $(srcdir)/edtest2.c > tmp-edtest2_build.c
$(SHELL) $(srcdir)/move-if-change tmp-edtest2_build.c edtest2_build.c
echo timestamp > $@

CLEANFILES += edtest2_build.c gen_edtest2_build

if HAVE_PTHREAD

check_PROGRAMS += ttest
BUILDTESTS += ttest

ttest_SOURCES = ttest.c testlib.c
ttest_CFLAGS = $(AM_CFLAGS) -pthread
ttest_LDADD = libbacktrace.la

BUILDTESTS += ttest_alloc

ttest_alloc_SOURCES = $(ttest_SOURCES)
ttest_alloc_CFLAGS = $(ttest_CFLAGS)
ttest_alloc_LDADD = libbacktrace_alloc.la

endif HAVE_PTHREAD

if HAVE_OBJCOPY_DEBUGLINK

TESTS += dtest
TESTS += btest_gnudebuglink

dtest: btest_static
$(OBJCOPY) --only-keep-debug btest_static btest.debug
$(OBJCOPY) --strip-debug --add-gnu-debuglink=btest.debug btest_static dtest

CLEANFILES += dtest btest.debug
%_gnudebuglink: %
$(OBJCOPY) --only-keep-debug $< [email protected]
$(OBJCOPY) --strip-debug [email protected] $< $@

endif HAVE_OBJCOPY_DEBUGLINK

%_buildid: %
./install-debuginfo-for-buildid.sh \
"$(TEST_BUILD_ID_DIR)" \
$<
$(OBJCOPY) --strip-debug $< $@

if HAVE_COMPRESSED_DEBUG

ctestg_SOURCES = btest.c testlib.c
Expand All @@ -166,12 +370,49 @@ ctesta_CFLAGS = $(AM_CFLAGS) -g
ctesta_LDFLAGS = -Wl,--compress-debug-sections=zlib-gabi
ctesta_LDADD = libbacktrace.la

check_PROGRAMS += ctestg ctesta
BUILDTESTS += ctestg ctesta

ctestg_alloc_SOURCES = $(ctestg_SOURCES)
ctestg_alloc_CFLAGS = $(ctestg_CFLAGS)
ctestg_alloc_LDFLAGS = $(ctestg_LDFLAGS)
ctestg_alloc_LDADD = libbacktrace_alloc.la

ctesta_alloc_SOURCES = $(ctesta_SOURCES)
ctesta_alloc_CFLAGS = $(ctesta_CFLAGS)
ctesta_alloc_LDFLAGS = $(ctesta_LDFLAGS)
ctesta_alloc_LDADD = libbacktrace_alloc.la

BUILDTESTS += ctestg_alloc ctesta_alloc

endif

if HAVE_DWARF5

dwarf5_SOURCES = btest.c testlib.c
dwarf5_CFLAGS = $(AM_CFLAGS) -gdwarf-5
dwarf5_LDADD = libbacktrace.la

BUILDTESTS += dwarf5

dwarf5_alloc_SOURCES = $(dwarf5_SOURCES)
dwarf5_alloc_CFLAGS = $(dwarf5_CFLAGS)
dwarf5_alloc_LDADD = libbacktrace_alloc.la

BUILDTESTS += dwarf5_alloc

endif

endif NATIVE

check_PROGRAMS += $(BUILDTESTS)

TESTS += $(BUILDTESTS)

CLEANFILES = $(TESTS) *.debug elf_for_test.c edtest2_build.c gen_edtest2_build

clean-local:
-rm -rf usr

# We can't use automake's automatic dependency tracking, because it
# breaks when using bootstrap-lean. Automatic dependency tracking
# with GCC bootstrap will cause some of the objects to depend on
Expand All @@ -186,7 +427,7 @@ endif NATIVE

alloc.lo: config.h backtrace.h internal.h
backtrace.lo: config.h backtrace.h internal.h
btest.lo: backtrace.h backtrace-supported.h filenames.h
btest.lo: filenames.h backtrace.h backtrace-supported.h
dwarf.lo: config.h filenames.h backtrace.h internal.h
elf.lo: config.h backtrace.h internal.h
fileline.lo: config.h backtrace.h internal.h
Expand Down
Loading