libdwarf/dwarf_errmsg_list.c
libdwarf/libdwarf.h.in
Test for inconsistent line table header data
and provide a default string indicating failure
in case the inconsistency test is inadequate.
libdwarf/dwarf_line.c
libdwarf/dwarf_line_table_reader_common.c
modified: bugxml/readbugs.py
Fixed an incorrect length check to prevent a crash.
modified: dwarfdump/print_frames.c
Set a macro structure field that was left unset.
No longer creates a zero-length malloc field.
modified: libdwarf/dwarf_macro5.c
More like other configure setups.
dwarfdump/configure.in
Regenerate.
dwarfdump/configure
Fix spelling mistakes, and an erroneous . in column 1.
dwarfdump/dwarfdump.1
CFLAGS is no on HOST_CFLAGS.
libdwarf/Makefile.in
Improve the output with respect to things tested.
More like other configure setups.
libdwarf/configure.in
Regenerate.
libdwarf/configure
* print_die.c: Fix typo in error message.
* print_frames.c: Do additional checks for incorrect data
when printing frame instructions to avoid dwarfdump crash..
libdwarf
* dwarf_form.c: Directly check expression length against
section length in case expression length very very large.
* dwarf_query.c: _dwarf_calculate_info_section_*() routines
made clearer and the *_start_ptr() instance also now returns
the length (via a pointer arg).
* dwarf_xu_index.c: Check data read from the section so
a wildly large columns count or slots count will be caught
and an error returned.
Moved a couple functions between source files
and made them static. A couple commentary changes.
print_frames.c, though, needed hardening against
corrupt frame data.
dwarfdump/globals.h
dwarfdump/print_aranges.c
dwarfdump/print_die.c
dwarfdump/print_frames.c
dwarfdump/print_sections.c
All data reads from an object ensure the
read is actually in a section.
It is always possible something was overlooked, but
all the reading macros and functions now do checks.
libdwarf/dwarf_arange.c
libdwarf/dwarf_die_deliv.c
libdwarf/dwarf_errmsg_list.c
libdwarf/dwarf_form.c
libdwarf/dwarf_frame.c
libdwarf/dwarf_frame2.c
libdwarf/dwarf_global.c
libdwarf/dwarf_line.c
libdwarf/dwarf_line_table_reader_common.c
libdwarf/dwarf_loc.c
libdwarf/dwarf_loc2.c
libdwarf/dwarf_macro5.c
libdwarf/dwarf_opaque.h
libdwarf/dwarf_print_lines.c
libdwarf/dwarf_query.c
libdwarf/dwarf_ranges.c
libdwarf/dwarf_util.c
libdwarf/dwarf_util.h
libdwarf/dwarf_xu_index.c
libdwarf/libdwarf.h.in
bugxml/data.txt
libdwarf
* dwarf_errmsg_list.c: Added DW_DLE_ZLIB_SECTION_SHORT.
* dwarf_form.c: Now checking for section overrun.
* dwarf_init_finish.c: Now checking zlib reading
for section overrun.
* dwarf_macro5.c: Now checking for section overrun and
also fixing double delete caused by having
_dwarf_get_alloc() space pointing at other _dwarf_get_alloc()
space. Because in case of error the order of free
of such is unpredictable!
* dwarf_macro5.h: Added comment on mc_srcfiles member.
* libdwarf.h.in: Added DW_DLE_ZLIB_SECTION_SHORT.
bugxml/data.txt
Now prints strings so that
control characters do not
cause problems. Easier to read too.
dwarfdump/Makefile.in
dwarfdump/NEWS
dwarfdump/dwarfdump.1
dwarfdump/dwarfdump.c
dwarfdump/globals.h
dwarfdump/print_die.c
dwarfdump/print_frames.c
dwarfdump/print_lines.c
dwarfdump/print_macro.c
dwarfdump/print_macros.c
dwarfdump/sanitized.c
Removed trailing whitespace.
dwarfexample/simplereader.c
New checking for corrupt input.
libdwarf/dwarf_errmsg_list.c
libdwarf/dwarf_form.c
libdwarf/dwarf_line.c
libdwarf/dwarf_opaque.h
libdwarf/dwarf_query.c
libdwarf/dwarf_util.h
libdwarf/libdwarf.h.in
standard tables: header says lno now,
for line number (row was incorrect).
dwarfdump/dwarfdump.c
dwarfdump/print_die.c
dwarfdump/print_lines.c
New checks for correctness and section overrun.
Fixed duplicate free due to bug in DWARF5 macro
handling.
libdwarf/dwarf_arange.c
libdwarf/dwarf_die_deliv.c
libdwarf/dwarf_elf_access.c
libdwarf/dwarf_errmsg_list.c
libdwarf/dwarf_frame2.c
libdwarf/dwarf_leb.c
libdwarf/dwarf_line.c
libdwarf/dwarf_line.h
libdwarf/dwarf_line_table_reader_common.c
libdwarf/dwarf_macro5.c
libdwarf/dwarf_util.h
libdwarf/libdwarf.h.in
* dwarf_arange.c,dwarf_util.c: first use of READ_UNALIGNED_CK.
* dwarf_errmsg_list.c, libdwarf.h.in: DW_DLE_READ_LITTLEENDIAN_ERROR
and DW_DLE_READ_BIGENDIAN_ERROR are errors possible
in READ_UNALIGNED_CK.
* dwarf_query.c: Using local variables for shorter lines.
* dwarf_util.h: Implement READ_UNALIGNED_CK macros.
Preventing a wide class of crashes due to damaged
object files.
libdwarf/dwarf_arange.c
libdwarf/dwarf_frame.c
libdwarf/dwarf_frame.h
libdwarf/dwarf_frame2.c
libdwarf/dwarf_line_table_reader_common.c
libdwarf/dwarf_loc2.c
* dwarf_die_deliv.c: Now _dwarf_next_die_info_ptr() has
a section end argument.
* dwarf_query.c, dwarf_util.c: Now uses the checked version
of leb reading.
* dwarf_util.h: Now _dwarf_get_size_of_val() has
section_end_ptr argument for checking leb values
do not overrun end of section.
dwarfdump/dwarfdump.c
Ensure dependency on dwarf_errmsg_list.c
libdwarf/Makefile.in
Do much much more testing to ensure we do not
run off the end of section or accept a bogus
leb number.
libdwarf/dwarf_abbrev.c
libdwarf/dwarf_die_deliv.c
libdwarf/dwarf_errmsg_list.c
libdwarf/dwarf_frame.c
libdwarf/dwarf_frame.h
libdwarf/dwarf_frame2.c
libdwarf/dwarf_frame3.c
libdwarf/dwarf_leb.c
libdwarf/dwarf_line.c
libdwarf/dwarf_line.h
libdwarf/dwarf_line_table_reader_common.c
libdwarf/dwarf_opaque.h
libdwarf/dwarf_query.c
libdwarf/dwarf_util.c
libdwarf/dwarf_util.h
libdwarf/libdwarf.h.in
* dwarf_tied.c: A C11-ism crept in. Fixed.
Added 'static' to local function declaration.
Removed unused local variable.
* dwarf_errmsg_list.c: Now checks that the number in ()
matches the index (and still checks that the array size
is the declared size) when compiled -DTESTING.
dwarf_errmsg_list.c: Fixed indent mistakes.
dwarf_leb.c: Fixed places where leb128_length
was assumed non-null (dwarf_form.c passes NULL!).
Made the NULL tests more consistent in appearance.
and just use char*.
Ensure the getopt tests still work.
modified: dwarfdump/dwarfdump.c
modified: dwarfdump/dwgetopt.c
modified: dwarfdump/esb.c
modified: dwarfdump/esb.h
modified: dwarfdump/getopttest.c
modified: dwarfdump/globals.h
modified: dwarfdump/print_die.c
modified: dwarfdump/print_frames.c
modified: dwarfdump/print_lines.c
modified: dwarfdump/print_strings.c
modified: dwarfdump/tag_attr.c
modified: dwarfdump/tag_tree.c
Fixing errnumber->string array and arranging
that we test it during build.
modified: libdwarf/Makefile.in
renamed: libdwarf/dwarf_error.c -> libdwarf/dwarf_errmsg_list.c
modified: libdwarf/dwarf_error.c
Changes that enable Windows compilation with a C++ compiler
though the code in libdwarf is all C90.
And fix a bug with esb* interfaces that was found by
testing code not in libdwarf or dwarfdump.
dwarfexample/frame1.c
Added new options for test coverage.
dwarfexample/simplereader.c
Notes about changes new this year.
libdwarf/NEWS
Better words about error handling.
libdwarf/dwarf_error.c
libdwarf/libdwarf2.1.mm
libdwarf/libdwarf2.1.pdf
(for testing libdwarf it's no longer so simple).
Support configure --enable-wall.
dwarfexample/Makefile.in
dwarfexample/configure
dwarfexample/configure.in
dwarfexample/simplereader.c
Now works with DW_FORM_GNU_strp_alt and DW_FORM_strp_sup
(as well as it can) even if there is no error argument passed
in to dwarf_formstring (and now dwarf_diename()
and dwarf_die_text() call dwarf_formstring() so all
types of string values are handled).
libdwarf/dwarf_form.c
libdwarf/dwarf_query.c
Dwarf_Error* and with mistakes treating DW_DLV_NO_ENTRY
as if it were DW_DLV_ERROR.
* dwarf_form.c: Only do dwarf_errno(*error) when error is non-null.
* dwarf_macro5.c, dwarf_query.c, dwarf_ranges.c: Avoid the
possibility of
doing dwarf_errno(*error) when error is null.
* dwarf_util.c(_dwarf_error_mv_s_to_t): Added code to
ensure that nothing crash-worthy happens
even if a future internal caller calls it with one or more NULL
arguments.
* libdwarf2.1.mm: Added a few words about Error Handling in general
to clarify earlier wording (earlier wording was not as explicit
as it should have been).
* libdwarf2.1.pdf: Regenerated. Version 2.45
* dwarf_sort_line.c: Though no longer built or used, added
an initializer to a local variable for correctness.
dwarfdump/globals.h
dwarfdump/print_aranges.c
dwarfdump/print_die.c
dwarfdump/print_frames.c
dwarfdump/print_lines.c
dwarfdump/print_macro.c
dwarfdump/print_pubnames.c
print_lines.c,print_macro.c,print_pubnames.c:
Remove the global dieprint_cu_offset, use local vars and pass around instead.
Ensure the traverse() logic when checking type references do not evaluate
references to other sections. Many argument lists got an additional argument or two.
libdwarf/dwarf_form.c
fix a comment
dwarf_alloc.h, dwarf_alloc.c, dwarf_base_types.h, dwarf_opaque.h:
New allocator type (DW_DLA_CHAIN_2), to allow a list of addressed
types (address, offset).
dwarf_query.c: Use the new allocator type.
print_frames.c,print_lines.c,print_locs.c,print_macro.c,
print_pubnames.c,print_reloc.ckprint_static_funcs.c,
print_static_vars.c,print_strings.c,print_types.c,
print_weaknames.c: Removed global Dwarf_Error err
and provided local Dwarf_Error as needed.
libdwarf2.1.mm: Added dwarf_lineoff_b() documentation.
Fixed a typo in dwarf_formexprloc() documentation.
libdwarf2.1.pdf: Regenerated. Version 2.41
* dwarf_init_finish.c: Fix indents. remove a trailing space.
* dwarf_tsearch.h,dwarf_tsearchhash.c: Now DW_TSHASHTYPE (if not defined
otherwise) defines the type returned by the hash function
used in tsearchhash.
* pro_alloc.c: Removed trailing whitespace.
tsearch:
* RUNTEST: the script had a couple of problems (typos). Fixed.
Added comments about running the tests.
* dwarf_tsearch.h: Provide a default DW_TSHASHTYPE
for tsearchhash and use DW_TSHASHTYPE.
* dwarf_tsearchbal.c,dwarf_tsearchbin.c,dwarf_tsearchepp.c,
dwarf_tsearchred.c: Use DW_TSHASHTYPE.
* dwarf_tsearchhash.c: use DW_TSHASHTYPE, add UNUSEDARG use.
Now the primes list starts at 79, not 5 (the low numbers
were really only for basic testing). Add UNUSEDARG
though it is defined as empty here (it is for gcc
to suppress some warnings).
* tsearch_tester.c: Use DW_TSHASHTYPE. Changed one
error message to help match with input test files.