libbacktrace: add preliminary Mach-O support

This commit is contained in:
Ian Lance Taylor
2020-02-18 18:57:14 -08:00
parent 929d6205cf
commit 4e548e735f
7 changed files with 1561 additions and 49 deletions

View File

@@ -57,6 +57,7 @@ BACKTRACE_FILES = \
FORMAT_FILES = \
elf.c \
macho.c \
pecoff.c \
unknown.c \
xcoff.c
@@ -85,18 +86,28 @@ libbacktrace_la_DEPENDENCIES = $(libbacktrace_la_LIBADD)
# Testsuite.
# Add test to this variable, if you want it to be build.
# Add a test to this variable if you want it to be built.
check_PROGRAMS =
# Add test to this variable, if you want it to be run.
# Add a 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.
# Add a test to this variable if you want it to be built and run.
BUILDTESTS =
# Add a file to this variable if you want it to be built for testing.
check_DATA =
# Flags to use when compiling test programs.
libbacktrace_TEST_CFLAGS = $(EXTRA_FLAGS) $(WARN_FLAGS) -g
if HAVE_DSYMUTIL
%.dSYM: %
$(DSYMUTIL) $<
endif HAVE_DSYMUTIL
if NATIVE
check_LTLIBRARIES = libbacktrace_alloc.la
@@ -164,6 +175,12 @@ test_elf_64_LDADD = libbacktrace_noformat.la elf_64.lo
BUILDTESTS += test_elf_64
test_macho_SOURCES = test_format.c testlib.c
test_macho_CFLAGS = $(libbacktrace_TEST_CFLAGS)
test_macho_LDADD = libbacktrace_noformat.la macho.lo
BUILDTESTS += test_macho
test_xcoff_32_SOURCES = test_format.c testlib.c
test_xcoff_32_CFLAGS = $(libbacktrace_TEST_CFLAGS)
test_xcoff_32_LDADD = libbacktrace_noformat.la xcoff_32.lo
@@ -221,6 +238,10 @@ allocfail.sh: allocfail
TESTS += allocfail.sh
if HAVE_DSYMUTIL
check_DATA += allocfail.dSYM
endif HAVE_DSYMUTIL
if HAVE_ELF
if HAVE_OBJCOPY_DEBUGLINK
@@ -253,6 +274,10 @@ btest_LDADD = libbacktrace.la
BUILDTESTS += btest
if HAVE_DSYMUTIL
check_DATA += btest.dSYM
endif HAVE_DSYMUTIL
if HAVE_ELF
btest_lto_SOURCES = btest.c testlib.c
@@ -269,6 +294,10 @@ btest_alloc_LDADD = libbacktrace_alloc.la
BUILDTESTS += btest_alloc
if HAVE_DSYMUTIL
check_DATA += btest_alloc.dSYM
endif HAVE_DSYMUTIL
if HAVE_DWZ
%_dwz: %
@@ -295,12 +324,20 @@ stest_LDADD = libbacktrace.la
BUILDTESTS += stest
if HAVE_DSYMUTIL
check_DATA += stest.dSYM
endif HAVE_DSYMUTIL
stest_alloc_SOURCES = $(stest_SOURCES)
stest_alloc_CFLAGS = $(libbacktrace_TEST_CFLAGS)
stest_alloc_LDADD = libbacktrace_alloc.la
BUILDTESTS += stest_alloc
if HAVE_DSYMUTIL
check_DATA += stest_alloc.dSYM
endif HAVE_DSYMUTIL
if HAVE_ELF
ztest_SOURCES = ztest.c testlib.c
@@ -330,10 +367,18 @@ edtest_LDADD = libbacktrace.la
BUILDTESTS += edtest
if HAVE_DSYMUTIL
check_DATA += edtest.dSYM
endif HAVE_DSYMUTIL
edtest_alloc_SOURCES = $(edtest_SOURCES)
edtest_alloc_CFLAGS = $(libbacktrace_TEST_CFLAGS)
edtest_alloc_LDADD = libbacktrace_alloc.la
if HAVE_DSYMUTIL
check_DATA += edtest_alloc.dSYM
endif HAVE_DSYMUTIL
BUILDTESTS += edtest_alloc
edtest2_build.c: gen_edtest2_build; @true
@@ -350,12 +395,20 @@ ttest_SOURCES = ttest.c testlib.c
ttest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -pthread
ttest_LDADD = libbacktrace.la
if HAVE_DSYMUTIL
check_DATA += ttest.dSYM
endif HAVE_DSYMUTIL
BUILDTESTS += ttest_alloc
ttest_alloc_SOURCES = $(ttest_SOURCES)
ttest_alloc_CFLAGS = $(ttest_CFLAGS)
ttest_alloc_LDADD = libbacktrace_alloc.la
if HAVE_DSYMUTIL
check_DATA += ttest_alloc.dSYM
endif HAVE_DSYMUTIL
endif HAVE_PTHREAD
if HAVE_OBJCOPY_DEBUGLINK
@@ -410,12 +463,20 @@ dwarf5_LDADD = libbacktrace.la
BUILDTESTS += dwarf5
if HAVE_DSYMUTIL
check_DATA += dwarf5.dSYM
endif HAVE_DSYMUTIL
dwarf5_alloc_SOURCES = $(dwarf5_SOURCES)
dwarf5_alloc_CFLAGS = $(dwarf5_CFLAGS)
dwarf5_alloc_LDADD = libbacktrace_alloc.la
BUILDTESTS += dwarf5_alloc
if HAVE_DSYMUTIL
check_DATA += dwarf5_alloc.dSYM
endif HAVE_DSYMUTIL
endif
endif NATIVE
@@ -447,6 +508,7 @@ 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
macho.lo: config.h backtrace.h internal.h
mmap.lo: config.h backtrace.h internal.h
mmapio.lo: config.h backtrace.h internal.h
nounwind.lo: config.h internal.h