mirror of
https://github.com/gcc-mirror/gcc.git
synced 2024-11-21 13:40:47 +00:00
libbacktrace: add DWARF 5 support
* dwarf.c (struct attr): Add val field. (enum attr_val_encoding): Add ATTR_VAL_ADDDRESS_INDEX, ATTR_VAL_STRING_INDEX, ATTR_VAL_RNGLISTS_INDEX. (struct line_header): Add addrsize field. (struct line_header_format): Define. (struct unit): Add str_offsets_base, addr_base, and rnglists_base fields. (read_uint24): New static function. (read_attribute): Add implicit_val parameter. Replace dwarf_str and dwarf_str_size parameters with dwarf_sections parameter. Add support for new DWARF 5 forms. Change all callers. (resolve_string): New static function. (resolve_addr_index): Likewise. (read_abbrevs): Support DW_FORM_implicit_const. (struct pcrange): Add lowpc_is_addr_index, highpc_is_addr_Index, and ranges_is_index fields. (update_pcrange): Support DWARF 5 encodings. (add_high_low_range): New static function, split out of add_ranges. (add_ranges_from_ranges): Likewise. (add_ranges_from_rnglists): New static function. (add_ranges): Just call new helper functions. (find_address_ranges): Use resolve_string for strings, after reading all attributes. Handle new DWARF 5 attributes. (build_address_map): Support DWARF 5 compilation units. (read_v2_paths): New static function, split out of read_line_header. (read_lnct): New static function. (read_line_header_format_entries): Likewise. (read_line_header): Add ddata parameter. Support DWARF 5 line headers. Call new helper functions. Change all callers. (read_line_program): Use addrsize from line program header. Don't special case directory index 0 for DWARF 5. (read_referenced_name): Use resolve_string. (read_function_entry): Handle DWARF 5 encodings. Use resolve_string. * internal.h (enum dwarf_section): Add DEBUG_ADDR, DEBUG_STR_OFFSETS, DEBUG_LINE_STR, DEBUG_RNGLISTS. * elf.c (dwarf_section_names): Add new section names. * pecoff.c (dwarf_section_names): Likewise. * xcoff.c (xcoff_add): Clear dwarf_sections before setting fields. * configure.ac: Define HAVE_DWARF5 automake conditional. * Makefile.am (dwarf5_SOURCES): New variable if HAVE_DWARF5. (dwarf5_CFLAGS, dwarf5_LDADD): Likewise. (dwarf5_alloc_SOURCES, dwarf5_alloc_CFLAGS): Likewise. (dwarf5_alloc_LDADD): Likewise. (BUILDTESTS): Add dwarf5 tests if HAVE_DWARF5. (CLEANFILES, clean-local): Define. From-SVN: r279380
This commit is contained in:
parent
510873f901
commit
c926fd82bb
@ -1,3 +1,56 @@
|
||||
2019-12-13 Ian Lance Taylor <iant@golang.org>
|
||||
|
||||
Add DWARF 5 support.
|
||||
* dwarf.c (struct attr): Add val field.
|
||||
(enum attr_val_encoding): Add ATTR_VAL_ADDDRESS_INDEX,
|
||||
ATTR_VAL_STRING_INDEX, ATTR_VAL_RNGLISTS_INDEX.
|
||||
(struct line_header): Add addrsize field.
|
||||
(struct line_header_format): Define.
|
||||
(struct unit): Add str_offsets_base, addr_base, and rnglists_base
|
||||
fields.
|
||||
(read_uint24): New static function.
|
||||
(read_attribute): Add implicit_val parameter. Replace dwarf_str
|
||||
and dwarf_str_size parameters with dwarf_sections parameter. Add
|
||||
support for new DWARF 5 forms. Change all callers.
|
||||
(resolve_string): New static function.
|
||||
(resolve_addr_index): Likewise.
|
||||
(read_abbrevs): Support DW_FORM_implicit_const.
|
||||
(struct pcrange): Add lowpc_is_addr_index, highpc_is_addr_Index,
|
||||
and ranges_is_index fields.
|
||||
(update_pcrange): Support DWARF 5 encodings.
|
||||
(add_high_low_range): New static function, split out of
|
||||
add_ranges.
|
||||
(add_ranges_from_ranges): Likewise.
|
||||
(add_ranges_from_rnglists): New static function.
|
||||
(add_ranges): Just call new helper functions.
|
||||
(find_address_ranges): Use resolve_string for strings, after
|
||||
reading all attributes. Handle new DWARF 5 attributes.
|
||||
(build_address_map): Support DWARF 5 compilation units.
|
||||
(read_v2_paths): New static function, split out of
|
||||
read_line_header.
|
||||
(read_lnct): New static function.
|
||||
(read_line_header_format_entries): Likewise.
|
||||
(read_line_header): Add ddata parameter. Support DWARF 5 line
|
||||
headers. Call new helper functions. Change all callers.
|
||||
(read_line_program): Use addrsize from line program header. Don't
|
||||
special case directory index 0 for DWARF 5.
|
||||
(read_referenced_name): Use resolve_string.
|
||||
(read_function_entry): Handle DWARF 5 encodings. Use
|
||||
resolve_string.
|
||||
* internal.h (enum dwarf_section): Add DEBUG_ADDR,
|
||||
DEBUG_STR_OFFSETS, DEBUG_LINE_STR, DEBUG_RNGLISTS.
|
||||
* elf.c (dwarf_section_names): Add new section names.
|
||||
* pecoff.c (dwarf_section_names): Likewise.
|
||||
* xcoff.c (xcoff_add): Clear dwarf_sections before setting
|
||||
fields.
|
||||
* configure.ac: Define HAVE_DWARF5 automake conditional.
|
||||
* Makefile.am (dwarf5_SOURCES): New variable if HAVE_DWARF5.
|
||||
(dwarf5_CFLAGS, dwarf5_LDADD): Likewise.
|
||||
(dwarf5_alloc_SOURCES, dwarf5_alloc_CFLAGS): Likewise.
|
||||
(dwarf5_alloc_LDADD): Likewise.
|
||||
(BUILDTESTS): Add dwarf5 tests if HAVE_DWARF5.
|
||||
(CLEANFILES, clean-local): Define.
|
||||
|
||||
2019-12-08 Ian Lance Taylor <iant@golang.org>
|
||||
|
||||
* dwarf.c (struct pcrange): Define.
|
||||
|
@ -385,12 +385,33 @@ 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
|
||||
|
@ -121,10 +121,10 @@ build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
$(am__EXEEXT_11)
|
||||
$(am__EXEEXT_12)
|
||||
TESTS = $(am__append_4) $(am__append_6) $(am__append_8) \
|
||||
$(am__append_11) $(am__append_12) $(am__append_18) \
|
||||
$(am__EXEEXT_11)
|
||||
$(am__EXEEXT_12)
|
||||
@HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_1 = libbacktrace_elf_for_test.la
|
||||
@NATIVE_TRUE@am__append_2 = test_elf_32 test_elf_64 test_xcoff_32 \
|
||||
@NATIVE_TRUE@ test_xcoff_64 test_pecoff test_unknown unittest \
|
||||
@ -148,6 +148,7 @@ TESTS = $(am__append_4) $(am__append_6) $(am__append_8) \
|
||||
@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@am__append_19 = ctestg ctesta \
|
||||
@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ ctestg_alloc \
|
||||
@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ ctesta_alloc
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@am__append_20 = dwarf5 dwarf5_alloc
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/../config/cet.m4 \
|
||||
@ -224,9 +225,11 @@ libbacktrace_noformat_la_OBJECTS = \
|
||||
@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ ctesta$(EXEEXT) \
|
||||
@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ ctestg_alloc$(EXEEXT) \
|
||||
@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ ctesta_alloc$(EXEEXT)
|
||||
am__EXEEXT_11 = $(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@am__EXEEXT_11 = dwarf5$(EXEEXT) \
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@ dwarf5_alloc$(EXEEXT)
|
||||
am__EXEEXT_12 = $(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \
|
||||
$(am__EXEEXT_7) $(am__EXEEXT_8) $(am__EXEEXT_9) \
|
||||
$(am__EXEEXT_10)
|
||||
$(am__EXEEXT_10) $(am__EXEEXT_11)
|
||||
@NATIVE_TRUE@am_allocfail_OBJECTS = allocfail.$(OBJEXT) \
|
||||
@NATIVE_TRUE@ testlib.$(OBJEXT)
|
||||
allocfail_OBJECTS = $(am_allocfail_OBJECTS)
|
||||
@ -305,20 +308,39 @@ ctestg_alloc_OBJECTS = $(am_ctestg_alloc_OBJECTS)
|
||||
ctestg_alloc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(ctestg_alloc_CFLAGS) \
|
||||
$(CFLAGS) $(ctestg_alloc_LDFLAGS) $(LDFLAGS) -o $@
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@am_dwarf5_OBJECTS = \
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@ dwarf5-btest.$(OBJEXT) \
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@ dwarf5-testlib.$(OBJEXT)
|
||||
dwarf5_OBJECTS = $(am_dwarf5_OBJECTS)
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@dwarf5_DEPENDENCIES = libbacktrace.la
|
||||
dwarf5_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(dwarf5_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@am__objects_7 = \
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@ dwarf5_alloc-btest.$(OBJEXT) \
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@ dwarf5_alloc-testlib.$(OBJEXT)
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@am_dwarf5_alloc_OBJECTS = \
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@ $(am__objects_7)
|
||||
dwarf5_alloc_OBJECTS = $(am_dwarf5_alloc_OBJECTS)
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@dwarf5_alloc_DEPENDENCIES = \
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@ libbacktrace_alloc.la
|
||||
dwarf5_alloc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(dwarf5_alloc_CFLAGS) \
|
||||
$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
@NATIVE_TRUE@am_edtest_OBJECTS = edtest.$(OBJEXT) \
|
||||
@NATIVE_TRUE@ edtest2_build.$(OBJEXT) testlib.$(OBJEXT)
|
||||
edtest_OBJECTS = $(am_edtest_OBJECTS)
|
||||
@NATIVE_TRUE@edtest_DEPENDENCIES = libbacktrace.la
|
||||
@NATIVE_TRUE@am__objects_7 = edtest.$(OBJEXT) edtest2_build.$(OBJEXT) \
|
||||
@NATIVE_TRUE@am__objects_8 = edtest.$(OBJEXT) edtest2_build.$(OBJEXT) \
|
||||
@NATIVE_TRUE@ testlib.$(OBJEXT)
|
||||
@NATIVE_TRUE@am_edtest_alloc_OBJECTS = $(am__objects_7)
|
||||
@NATIVE_TRUE@am_edtest_alloc_OBJECTS = $(am__objects_8)
|
||||
edtest_alloc_OBJECTS = $(am_edtest_alloc_OBJECTS)
|
||||
@NATIVE_TRUE@edtest_alloc_DEPENDENCIES = libbacktrace_alloc.la
|
||||
@NATIVE_TRUE@am_stest_OBJECTS = stest.$(OBJEXT)
|
||||
stest_OBJECTS = $(am_stest_OBJECTS)
|
||||
@NATIVE_TRUE@stest_DEPENDENCIES = libbacktrace.la
|
||||
@NATIVE_TRUE@am__objects_8 = stest.$(OBJEXT)
|
||||
@NATIVE_TRUE@am_stest_alloc_OBJECTS = $(am__objects_8)
|
||||
@NATIVE_TRUE@am__objects_9 = stest.$(OBJEXT)
|
||||
@NATIVE_TRUE@am_stest_alloc_OBJECTS = $(am__objects_9)
|
||||
stest_alloc_OBJECTS = $(am_stest_alloc_OBJECTS)
|
||||
@NATIVE_TRUE@stest_alloc_DEPENDENCIES = libbacktrace_alloc.la
|
||||
@NATIVE_TRUE@am_test_elf_32_OBJECTS = test_format.$(OBJEXT) \
|
||||
@ -359,11 +381,11 @@ ttest_OBJECTS = $(am_ttest_OBJECTS)
|
||||
ttest_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(ttest_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@am__objects_9 = \
|
||||
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@am__objects_10 = \
|
||||
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@ ttest_alloc-ttest.$(OBJEXT) \
|
||||
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@ ttest_alloc-testlib.$(OBJEXT)
|
||||
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@am_ttest_alloc_OBJECTS = \
|
||||
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@ $(am__objects_9)
|
||||
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@ $(am__objects_10)
|
||||
ttest_alloc_OBJECTS = $(am_ttest_alloc_OBJECTS)
|
||||
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@ttest_alloc_DEPENDENCIES = \
|
||||
@HAVE_PTHREAD_TRUE@@NATIVE_TRUE@ libbacktrace_alloc.la
|
||||
@ -374,8 +396,8 @@ ttest_alloc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
@NATIVE_TRUE@ testlib.$(OBJEXT)
|
||||
unittest_OBJECTS = $(am_unittest_OBJECTS)
|
||||
@NATIVE_TRUE@unittest_DEPENDENCIES = libbacktrace.la
|
||||
@NATIVE_TRUE@am__objects_10 = unittest.$(OBJEXT) testlib.$(OBJEXT)
|
||||
@NATIVE_TRUE@am_unittest_alloc_OBJECTS = $(am__objects_10)
|
||||
@NATIVE_TRUE@am__objects_11 = unittest.$(OBJEXT) testlib.$(OBJEXT)
|
||||
@NATIVE_TRUE@am_unittest_alloc_OBJECTS = $(am__objects_11)
|
||||
unittest_alloc_OBJECTS = $(am_unittest_alloc_OBJECTS)
|
||||
@NATIVE_TRUE@unittest_alloc_DEPENDENCIES = libbacktrace_alloc.la
|
||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@am_ztest_OBJECTS = ztest-ztest.$(OBJEXT) \
|
||||
@ -387,11 +409,11 @@ ztest_OBJECTS = $(am_ztest_OBJECTS)
|
||||
ztest_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(ztest_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@am__objects_11 = \
|
||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@am__objects_12 = \
|
||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ ztest_alloc-ztest.$(OBJEXT) \
|
||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ ztest_alloc-testlib.$(OBJEXT)
|
||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@am_ztest_alloc_OBJECTS = \
|
||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(am__objects_11)
|
||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ $(am__objects_12)
|
||||
ztest_alloc_OBJECTS = $(am_ztest_alloc_OBJECTS)
|
||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ztest_alloc_DEPENDENCIES = \
|
||||
@HAVE_ELF_TRUE@@NATIVE_TRUE@ libbacktrace_alloc.la \
|
||||
@ -441,7 +463,8 @@ SOURCES = $(libbacktrace_la_SOURCES) $(EXTRA_libbacktrace_la_SOURCES) \
|
||||
$(b2test_SOURCES) $(b3test_SOURCES) $(btest_SOURCES) \
|
||||
$(btest_alloc_SOURCES) $(btest_lto_SOURCES) $(ctesta_SOURCES) \
|
||||
$(ctesta_alloc_SOURCES) $(ctestg_SOURCES) \
|
||||
$(ctestg_alloc_SOURCES) $(edtest_SOURCES) \
|
||||
$(ctestg_alloc_SOURCES) $(dwarf5_SOURCES) \
|
||||
$(dwarf5_alloc_SOURCES) $(edtest_SOURCES) \
|
||||
$(edtest_alloc_SOURCES) $(stest_SOURCES) \
|
||||
$(stest_alloc_SOURCES) $(test_elf_32_SOURCES) \
|
||||
$(test_elf_64_SOURCES) $(test_pecoff_SOURCES) \
|
||||
@ -863,7 +886,7 @@ libbacktrace_la_DEPENDENCIES = $(libbacktrace_la_LIBADD)
|
||||
# Add test to this variable, if you want it to be build and run.
|
||||
BUILDTESTS = $(am__append_2) $(am__append_9) $(am__append_10) \
|
||||
$(am__append_15) $(am__append_16) $(am__append_17) \
|
||||
$(am__append_19)
|
||||
$(am__append_19) $(am__append_20)
|
||||
@NATIVE_TRUE@check_LTLIBRARIES = libbacktrace_alloc.la \
|
||||
@NATIVE_TRUE@ libbacktrace_noformat.la $(am__append_1) \
|
||||
@NATIVE_TRUE@ libbacktrace_instrumented_alloc.la
|
||||
@ -960,6 +983,13 @@ BUILDTESTS = $(am__append_2) $(am__append_9) $(am__append_10) \
|
||||
@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ctesta_alloc_CFLAGS = $(ctesta_CFLAGS)
|
||||
@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ctesta_alloc_LDFLAGS = $(ctesta_LDFLAGS)
|
||||
@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ctesta_alloc_LDADD = libbacktrace_alloc.la
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@dwarf5_SOURCES = btest.c testlib.c
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@dwarf5_CFLAGS = $(AM_CFLAGS) -gdwarf-5
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@dwarf5_LDADD = libbacktrace.la
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@dwarf5_alloc_SOURCES = $(dwarf5_SOURCES)
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@dwarf5_alloc_CFLAGS = $(dwarf5_CFLAGS)
|
||||
@HAVE_DWARF5_TRUE@@NATIVE_TRUE@dwarf5_alloc_LDADD = libbacktrace_alloc.la
|
||||
CLEANFILES = $(TESTS) *.debug elf_for_test.c edtest2_build.c gen_edtest2_build
|
||||
|
||||
# We can't use automake's automatic dependency tracking, because it
|
||||
# breaks when using bootstrap-lean. Automatic dependency tracking
|
||||
@ -1124,6 +1154,14 @@ ctestg_alloc$(EXEEXT): $(ctestg_alloc_OBJECTS) $(ctestg_alloc_DEPENDENCIES) $(EX
|
||||
@rm -f ctestg_alloc$(EXEEXT)
|
||||
$(AM_V_CCLD)$(ctestg_alloc_LINK) $(ctestg_alloc_OBJECTS) $(ctestg_alloc_LDADD) $(LIBS)
|
||||
|
||||
dwarf5$(EXEEXT): $(dwarf5_OBJECTS) $(dwarf5_DEPENDENCIES) $(EXTRA_dwarf5_DEPENDENCIES)
|
||||
@rm -f dwarf5$(EXEEXT)
|
||||
$(AM_V_CCLD)$(dwarf5_LINK) $(dwarf5_OBJECTS) $(dwarf5_LDADD) $(LIBS)
|
||||
|
||||
dwarf5_alloc$(EXEEXT): $(dwarf5_alloc_OBJECTS) $(dwarf5_alloc_DEPENDENCIES) $(EXTRA_dwarf5_alloc_DEPENDENCIES)
|
||||
@rm -f dwarf5_alloc$(EXEEXT)
|
||||
$(AM_V_CCLD)$(dwarf5_alloc_LINK) $(dwarf5_alloc_OBJECTS) $(dwarf5_alloc_LDADD) $(LIBS)
|
||||
|
||||
edtest$(EXEEXT): $(edtest_OBJECTS) $(edtest_DEPENDENCIES) $(EXTRA_edtest_DEPENDENCIES)
|
||||
@rm -f edtest$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(edtest_OBJECTS) $(edtest_LDADD) $(LIBS)
|
||||
@ -1311,6 +1349,30 @@ ctestg_alloc-testlib.o: testlib.c
|
||||
ctestg_alloc-testlib.obj: testlib.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ctestg_alloc_CFLAGS) $(CFLAGS) -c -o ctestg_alloc-testlib.obj `if test -f 'testlib.c'; then $(CYGPATH_W) 'testlib.c'; else $(CYGPATH_W) '$(srcdir)/testlib.c'; fi`
|
||||
|
||||
dwarf5-btest.o: btest.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dwarf5_CFLAGS) $(CFLAGS) -c -o dwarf5-btest.o `test -f 'btest.c' || echo '$(srcdir)/'`btest.c
|
||||
|
||||
dwarf5-btest.obj: btest.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dwarf5_CFLAGS) $(CFLAGS) -c -o dwarf5-btest.obj `if test -f 'btest.c'; then $(CYGPATH_W) 'btest.c'; else $(CYGPATH_W) '$(srcdir)/btest.c'; fi`
|
||||
|
||||
dwarf5-testlib.o: testlib.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dwarf5_CFLAGS) $(CFLAGS) -c -o dwarf5-testlib.o `test -f 'testlib.c' || echo '$(srcdir)/'`testlib.c
|
||||
|
||||
dwarf5-testlib.obj: testlib.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dwarf5_CFLAGS) $(CFLAGS) -c -o dwarf5-testlib.obj `if test -f 'testlib.c'; then $(CYGPATH_W) 'testlib.c'; else $(CYGPATH_W) '$(srcdir)/testlib.c'; fi`
|
||||
|
||||
dwarf5_alloc-btest.o: btest.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dwarf5_alloc_CFLAGS) $(CFLAGS) -c -o dwarf5_alloc-btest.o `test -f 'btest.c' || echo '$(srcdir)/'`btest.c
|
||||
|
||||
dwarf5_alloc-btest.obj: btest.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dwarf5_alloc_CFLAGS) $(CFLAGS) -c -o dwarf5_alloc-btest.obj `if test -f 'btest.c'; then $(CYGPATH_W) 'btest.c'; else $(CYGPATH_W) '$(srcdir)/btest.c'; fi`
|
||||
|
||||
dwarf5_alloc-testlib.o: testlib.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dwarf5_alloc_CFLAGS) $(CFLAGS) -c -o dwarf5_alloc-testlib.o `test -f 'testlib.c' || echo '$(srcdir)/'`testlib.c
|
||||
|
||||
dwarf5_alloc-testlib.obj: testlib.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dwarf5_alloc_CFLAGS) $(CFLAGS) -c -o dwarf5_alloc-testlib.obj `if test -f 'testlib.c'; then $(CYGPATH_W) 'testlib.c'; else $(CYGPATH_W) '$(srcdir)/testlib.c'; fi`
|
||||
|
||||
ttest-ttest.o: ttest.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ttest_CFLAGS) $(CFLAGS) -c -o ttest-ttest.o `test -f 'ttest.c' || echo '$(srcdir)/'`ttest.c
|
||||
|
||||
@ -1771,6 +1833,20 @@ ctesta_alloc.log: ctesta_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)
|
||||
dwarf5.log: dwarf5$(EXEEXT)
|
||||
@p='dwarf5$(EXEEXT)'; \
|
||||
b='dwarf5'; \
|
||||
$(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)
|
||||
dwarf5_alloc.log: dwarf5_alloc$(EXEEXT)
|
||||
@p='dwarf5_alloc$(EXEEXT)'; \
|
||||
b='dwarf5_alloc'; \
|
||||
$(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)
|
||||
.test.log:
|
||||
@p='$<'; \
|
||||
$(am__set_b); \
|
||||
@ -1816,6 +1892,7 @@ mostlyclean-generic:
|
||||
-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
@ -1973,6 +2050,9 @@ uninstall-am:
|
||||
@NATIVE_TRUE@ "$(TEST_BUILD_ID_DIR)" \
|
||||
@NATIVE_TRUE@ $<
|
||||
@NATIVE_TRUE@ $(OBJCOPY) --strip-debug $< $@
|
||||
|
||||
clean-local:
|
||||
-rm -rf usr
|
||||
alloc.lo: config.h backtrace.h internal.h
|
||||
backtrace.lo: config.h backtrace.h internal.h
|
||||
btest.lo: (INCDIR)/filenames.h backtrace.h backtrace-supported.h
|
||||
|
40
libbacktrace/configure
vendored
40
libbacktrace/configure
vendored
@ -643,6 +643,8 @@ HAVE_COMPRESSED_DEBUG_FALSE
|
||||
HAVE_COMPRESSED_DEBUG_TRUE
|
||||
HAVE_ZLIB_FALSE
|
||||
HAVE_ZLIB_TRUE
|
||||
HAVE_DWARF5_FALSE
|
||||
HAVE_DWARF5_TRUE
|
||||
HAVE_PTHREAD_FALSE
|
||||
HAVE_PTHREAD_TRUE
|
||||
PTHREAD_CFLAGS
|
||||
@ -11497,7 +11499,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 11500 "configure"
|
||||
#line 11502 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@ -11603,7 +11605,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 11606 "configure"
|
||||
#line 11608 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@ -13280,6 +13282,36 @@ else
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -gdwarf-5 is supported" >&5
|
||||
$as_echo_n "checking whether -gdwarf-5 is supported... " >&6; }
|
||||
if ${libbacktrace_cv_lib_dwarf5+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
CFLAGS_hold=$CFLAGS
|
||||
CFLAGS="$CFLAGS -gdwarf-5"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
int i;
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
libbacktrace_cv_lib_dwarf5=yes
|
||||
else
|
||||
libbacktrace_cv_lib_dwarf5=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
CFLAGS=$CFLAGS_hold
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libbacktrace_cv_lib_dwarf5" >&5
|
||||
$as_echo "$libbacktrace_cv_lib_dwarf5" >&6; }
|
||||
if test "$libbacktrace_cv_lib_dwarf5" = yes; then
|
||||
HAVE_DWARF5_TRUE=
|
||||
HAVE_DWARF5_FALSE='#'
|
||||
else
|
||||
HAVE_DWARF5_TRUE='#'
|
||||
HAVE_DWARF5_FALSE=
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compress in -lz" >&5
|
||||
$as_echo_n "checking for compress in -lz... " >&6; }
|
||||
if ${ac_cv_lib_z_compress+:} false; then :
|
||||
@ -13665,6 +13697,10 @@ if test -z "${HAVE_PTHREAD_TRUE}" && test -z "${HAVE_PTHREAD_FALSE}"; then
|
||||
as_fn_error $? "conditional \"HAVE_PTHREAD\" was never defined.
|
||||
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||
fi
|
||||
if test -z "${HAVE_DWARF5_TRUE}" && test -z "${HAVE_DWARF5_FALSE}"; then
|
||||
as_fn_error $? "conditional \"HAVE_DWARF5\" was never defined.
|
||||
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||
fi
|
||||
if test -z "${HAVE_ZLIB_TRUE}" && test -z "${HAVE_ZLIB_FALSE}"; then
|
||||
as_fn_error $? "conditional \"HAVE_ZLIB\" was never defined.
|
||||
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||
|
@ -420,6 +420,17 @@ AC_SUBST(PTHREAD_CFLAGS)
|
||||
|
||||
AM_CONDITIONAL(HAVE_PTHREAD, test "$libgo_cv_lib_pthread" = yes)
|
||||
|
||||
dnl Test whether the compiler supports the -gdwarf-5 option.
|
||||
AC_CACHE_CHECK([whether -gdwarf-5 is supported],
|
||||
[libbacktrace_cv_lib_dwarf5],
|
||||
[CFLAGS_hold=$CFLAGS
|
||||
CFLAGS="$CFLAGS -gdwarf-5"
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])],
|
||||
[libbacktrace_cv_lib_dwarf5=yes],
|
||||
[libbacktrace_cv_lib_dwarf5=no])
|
||||
CFLAGS=$CFLAGS_hold])
|
||||
AM_CONDITIONAL(HAVE_DWARF5, test "$libbacktrace_cv_lib_dwarf5" = yes)
|
||||
|
||||
AC_CHECK_LIB([z], [compress],
|
||||
[AC_DEFINE(HAVE_ZLIB, 1, [Define if -lz is available.])])
|
||||
AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_lib_z_compress" = yes)
|
||||
|
1241
libbacktrace/dwarf.c
1241
libbacktrace/dwarf.c
File diff suppressed because it is too large
Load Diff
@ -346,6 +346,10 @@ static const char * const dwarf_section_names[DEBUG_MAX] =
|
||||
".debug_abbrev",
|
||||
".debug_ranges",
|
||||
".debug_str",
|
||||
".debug_addr",
|
||||
".debug_str_offsets",
|
||||
".debug_line_str",
|
||||
".debug_rnglists"
|
||||
};
|
||||
|
||||
/* Information we gather for the sections we care about. */
|
||||
|
@ -295,6 +295,10 @@ enum dwarf_section
|
||||
DEBUG_ABBREV,
|
||||
DEBUG_RANGES,
|
||||
DEBUG_STR,
|
||||
DEBUG_ADDR,
|
||||
DEBUG_STR_OFFSETS,
|
||||
DEBUG_LINE_STR,
|
||||
DEBUG_RNGLISTS,
|
||||
|
||||
DEBUG_MAX
|
||||
};
|
||||
|
@ -141,7 +141,11 @@ static const char * const debug_section_names[DEBUG_MAX] =
|
||||
".debug_line",
|
||||
".debug_abbrev",
|
||||
".debug_ranges",
|
||||
".debug_str"
|
||||
".debug_str",
|
||||
".debug_addr",
|
||||
".debug_str_offsets",
|
||||
".debug_line_str",
|
||||
".debug_rnglists"
|
||||
};
|
||||
|
||||
/* Information we gather for the sections we care about. */
|
||||
|
@ -1286,6 +1286,8 @@ xcoff_add (struct backtrace_state *state, int descriptor, off_t offset,
|
||||
+ (dwsect[i].offset - min_offset));
|
||||
}
|
||||
|
||||
memset (&dwarf_sections, 0, sizeof dwarf_sections);
|
||||
|
||||
dwarf_sections.data[DEBUG_INFO] = dwsect[DEBUG_INFO].data;
|
||||
dwarf_sections.size[DEBUG_INFO] = dwsect[DEBUG_INFO].size;
|
||||
#if BACKTRACE_XCOFF_SIZE == 32
|
||||
|
Loading…
Reference in New Issue
Block a user