gcc/libbacktrace
Ian Lance Taylor c926fd82bb 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
2019-12-13 20:04:47 +00:00
..
aclocal.m4
alloc.c Update copyright years. 2019-01-01 13:31:55 +01:00
allocfail.c * allocfail.c (main): Increase portability of printf statement. 2019-01-20 15:09:02 +00:00
allocfail.sh Update copyright years. 2019-01-01 13:31:55 +01:00
atomic.c Update copyright years. 2019-01-01 13:31:55 +01:00
backtrace-supported.h.in Update copyright years. 2019-01-01 13:31:55 +01:00
backtrace.c [libbacktrace] Declare external backtrace fns noinline 2019-02-08 09:49:06 +00:00
backtrace.h PR other/16615 [1/5] 2019-01-09 16:37:45 -05:00
btest.c [libbacktrace] Fix btest-lto for older gcc 2019-02-26 16:09:40 +00:00
ChangeLog libbacktrace: add DWARF 5 support 2019-12-13 20:04:47 +00:00
ChangeLog.jit
config.h.in
configure libbacktrace: add DWARF 5 support 2019-12-13 20:04:47 +00:00
configure.ac libbacktrace: add DWARF 5 support 2019-12-13 20:04:47 +00:00
dwarf.c libbacktrace: add DWARF 5 support 2019-12-13 20:04:47 +00:00
edtest2.c Update copyright years. 2019-01-01 13:31:55 +01:00
edtest.c * edtest.c (test1): Add noclone attribute. 2019-12-05 03:56:40 +00:00
elf.c libbacktrace: add DWARF 5 support 2019-12-13 20:04:47 +00:00
fileline.c Update copyright years. 2019-01-01 13:31:55 +01:00
filetype.awk
install-debuginfo-for-buildid.sh.in [libbacktrace] Add test-cases exercising build-id and dwz 2019-01-29 16:25:46 +00:00
instrumented_alloc.c Update copyright years. 2019-01-01 13:31:55 +01:00
internal.h libbacktrace: add DWARF 5 support 2019-12-13 20:04:47 +00:00
Makefile.am libbacktrace: add DWARF 5 support 2019-12-13 20:04:47 +00:00
Makefile.in libbacktrace: add DWARF 5 support 2019-12-13 20:04:47 +00:00
mmap.c Update copyright years. 2019-01-01 13:31:55 +01:00
mmapio.c re PR libbacktrace/88890 (libbacktrace on 32-bit system with _FILE_OFFSET_BITS == 64) 2019-01-18 17:13:59 +00:00
nounwind.c Update copyright years. 2019-01-01 13:31:55 +01:00
pecoff.c libbacktrace: add DWARF 5 support 2019-12-13 20:04:47 +00:00
posix.c Update copyright years. 2019-01-01 13:31:55 +01:00
print.c [libbacktrace] Declare external backtrace fns noinline 2019-02-08 09:49:06 +00:00
read.c re PR libbacktrace/88890 (libbacktrace on 32-bit system with _FILE_OFFSET_BITS == 64) 2019-01-18 17:13:59 +00:00
README
simple.c [libbacktrace] Declare external backtrace fns noinline 2019-02-08 09:49:06 +00:00
sort.c Update copyright years. 2019-01-01 13:31:55 +01:00
state.c Update copyright years. 2019-01-01 13:31:55 +01:00
stest.c Update copyright years. 2019-01-01 13:31:55 +01:00
test_format.c Update copyright years. 2019-01-01 13:31:55 +01:00
testlib.c Update copyright years. 2019-01-01 13:31:55 +01:00
testlib.h Update copyright years. 2019-01-01 13:31:55 +01:00
ttest.c Update copyright years. 2019-01-01 13:31:55 +01:00
unittest.c Update copyright years. 2019-01-01 13:31:55 +01:00
unknown.c Update copyright years. 2019-01-01 13:31:55 +01:00
xcoff.c libbacktrace: add DWARF 5 support 2019-12-13 20:04:47 +00:00
ztest.c Update copyright years. 2019-01-01 13:31:55 +01:00

The libbacktrace library
Initially written by Ian Lance Taylor <iant@google.com>

The libbacktrace library may be linked into a program or library and
used to produce symbolic backtraces.  Sample uses would be to print a
detailed backtrace when an error occurs or to gather detailed
profiling information.

The libbacktrace library is provided under a BSD license.  See the
source files for the exact license text.

The public functions are declared and documented in the header file
backtrace.h, which should be #include'd by a user of the library.

Building libbacktrace will generate a file backtrace-supported.h,
which a user of the library may use to determine whether backtraces
will work.  See the source file backtrace-supported.h.in for the
macros that it defines.

As of September 2012, libbacktrace only supports ELF executables with
DWARF debugging information.  The library is written to make it
straightforward to add support for other object file and debugging
formats.