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
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
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
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
* dwarfdump.c: Update version string. Added CU_low_address so
CU_base_address is properly used only for the DWARF
CU 'base address' notion. Print CU_low_address in PRINT_CU_INFO().
* common.c: Update version string
* globals.h: New macro DROP_ERROR_INSTANCE(d,r,e) improves consistency
where we need to drop a Dwarf_Error instance.
* print_die.c: Support for CU_low_address. Use DROP_ERROR_INSTANCE
where appropriate.
* print_frames.c: Use DROP_ERROR_INSTANCE
where appropriate.
Missing '_' just for consistency.
Print any harmless errors only the required in command line
* globals.h:
Unused declaration.
* print_die.c:
When displaying a DW_AT_type offset error, uses the standard
0xdddddddd format.
Wrap to 80 columns, a long line.
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
better reflect the meaning and avoid 'std'
as 'std' seems to be a keyword
in at least one environment.
dwarfdump/dwarfdump.c
dwarfdump/globals.h
dwarfdump/print_lines.c
And new checks for wasted space made.
dwarfdump/dwarfdump.c
dwarfdump/globals.h
dwarfdump/macrocheck.c
dwarfdump/macrocheck.h
dwarfdump/print_die.c
dwarfdump/print_macros.c
Now all with prototypes.
Local functions now declared static.
One crucial bug in macrocheck.c in calling dwarf_twalk fixed.
dwarfdump/configure
dwarfdump/configure.in
dwarfdump/dwarf_tsearchbal.c delete unused function
dwarfdump/dwarfdump.c
dwarfdump/dwconf.c
dwarfdump/dwgetopt.c
dwarfdump/globals.h
dwarfdump/macrocheck.c
dwarfdump/naming.c
dwarfdump/print_gdbindex.c
dwarfdump/tag_attr.c
dwarfdump/tag_common.c
Better compiler checking with --enable-wall..
Now all with prototypes.
Local functions now declared static.
Some old and new functions documented in mm.
libdwarf/Makefile.in
libdwarf/configure
libdwarf/configure.in
libdwarf/dwarf_macro5.c
libdwarf/dwarf_original_elf_init.c
libdwarf/dwarf_query.c
libdwarf/dwarf_stubs.c
libdwarf/dwarf_util.c
libdwarf/dwgetopt.c
libdwarf/libdwarf.h.in
libdwarf/libdwarf2.1.mm
libdwarf/libdwarf2.1.pdf Regenerated. V 2.39
libdwarf/pro_alloc.c
libdwarf/pro_alloc.h
delete unused function.
tsearch/dwarf_tsearchbal.c
files:
and comment the other places (where not critical).
dwarfdump/globals.h
dwarfdump/print_frames.c
dwarfdump/print_lines.c
dwarfdump/print_locs.c
dwarfdump/print_macros.c
dwarfdump/print_pubnames.c
dwarfdump/print_static_funcs.c
dwarfdump/print_static_vars.c
dwarfdump/print_types.c
dwarfdump/print_weaknames.c
Enable retrieving true section name from object file.
libdwarf/dwarf_frame.c
libdwarf/libdwarf.h.in
* dwarfdump.c: Add enum line_flag_type_e so we can test
all the srclines interfaces (4 of them). Expand -x
for that too.
* print_die.c: Support DW_FORM_GNU_strp_alt.
* print_lines.c: Update for old and new srclines
interfaces.
* globals.h: Added the enum line_flag_e variable for
recording -x line5= value.
libdwarf
* checkexamples.c: Fixed data type in the example code.
* dwarf.h: Updated comment about DW_FORM_GNU_strp_alt
* dwarf_elf_access.c: Fixed trailing whitespace and
removed debug printf that got left in.
* dwarf_error.c: Add new TIED file errors.
DW_DLE_NO_TIED_FILE_AVAILABLE, DW_DLE_NO_TIED_STRING_AVAILABLE.
* dwarf_form.c: Added support for DW_FORM_GNU_strp_alt.
* dwarf_init_finish.c: #if 0 routine all_sig8bits_zero().
* dwarf_line.c: Now always notice windows-like c: etc
as start of a full path. Ensure directories with \ are
turned to / in line tables. (for full such transforms
configure with --enable-windowspath ) Remove some debug #ifdef
lines.
Alter the linecontext interface to pass back table count,
not linecount.
* dwarf_line.h: Add commentary and lc_table_count field.
* dwarf_line_table_reader_common.c: Fix indent/trailing whitespace.
Now sets lc_table_count;
* dwarf_opaque.h: Add _dwarf_get_string_from_tied() interface.
* dwarf_print_lines.c: Remove trailing whitespace and some debug printf..
* libdwarf.h.in: New error codes. Fix trailing whitespace. Expand
commentary.
reading code so line table routines can be tested thoroughly.
print_lines.c: Uses one of the selected line table routine
. Adds new line access routine calls to test those too.
globals.h: Declares new flag line_skeleton_flag;
print_die.c: Moved a local declaration to where it is used.
Added a missing DW_DLV_ERROR check so in case of error
we do not leak memory.
that emits DWARF4. The check failed when:
a) The DW_TAG_compile_unit, does have a DW_AT_low_pc and DW_AT_ranges.
Dwarfdump is expecting the pair DW_AT_low_pc and DW_AT_high_pc values.
b) The DW_AT_high_pc is an offset from DW_AT_low_pc.
Dwarfdump is expecting the DW_AT_high_pc to be a relocated address.
so we get consistent behavior. Specifically allowing the
notion of :: in the option list.
Fixed issues with handling files with both .debug_types and
.debug_info (got spurious warnings with -ky -kd, for example)
on a .dwp object.
Corrected a couple places where we needed to reset a static
variable (renamed the static variable for readability and removed
it from the globals variables).
change to make consistent use of 'if', 'for' and 'while'.
===================
dwarfdump.c lines 73-78 Any time an 'extern foo' appears in a .c or a .cc
file it represents a current or future error that cannot be easily detected
at compile time. Bad.
Instead, put print_attributes_encoding and current_cu_die_for_print_frames
declarations into appropriate .h files (possibly new one or ones?) and
include the header in each .c/.cc where it is needed. That prevents future
spelling errors from causing mysterious runtime failures due to argument
errors: the compiler will catch argument errors.
Now line 56-58 is special in that it refers to some windows thing, not
defined in dwarfdump. So that one perhaps should or must stay as written.
===================
dwarfdump.c line 549: the variable 'bitmap' should be named something else.
bitmap is just too generic, not helpful to the reader. Easier for a
reviewer to see this sort of issue than the author :-)
Possibly local_section_bitmap? Somehow get 'section' in there in that
function-argument-name?
=======
dwarfdump.c: good catch on the indent errors in qsort_compare_compiler(),
I have no idea how I failed to run dicheck on that.
======
dwarfdump.c line 1043. The 'Just for the moment' comment is odd. What
does that mean? Why 'for the moment'? I am not going to try to guess
why you did that, but it has to be somehow wrong?
Either the code or the comment?
========
dwarfdump.c line 1162. The comment says do not do reloc_flag = TRUE
yet you added exactly that! Yikes! I don't know what to do about
this, but something has to change. Comment or statement. Can we detect
non-elf somehow? We probably already do, but...
===================
dwarfdump.c line 1630. Oops. Good catch on removing the mistaken extra
break;
Check the encoding form used for those attributes that use constant values
and determine if the number of bytes used to represent the attribute data
can be reduced by using unsigned LEB128 encoding. Gives a table with the
current usage, the usage if LEB128 is used and a percentage rate.
Signed-off-by: Carlos Alberto Enciso <carlos.alberto.enciso@gmail.com>
config.h.in, configure.in now use a configure-time dependency
on HAVE_STDAFX_H rather than the older built-in ifdef.
So folks using mingw have an easier time.