2008-12-29 DavidAnderson * libdwarf.h: Add support for .debug_ranges with dwarf_get_ranges() and dwarf_ranges_dealloc(). * dwarf_init_finish.c: Add support for .debug_ranges. * dwarf_base_types.h: Add support for .debug_ranges functions. * dwarf_alloc.c, dwarf_alloc.h: Add support for .debug_ranges alloc/dealloc. * dwarf_opaque.h: Add support for .debug_ranges. * libdwarf2.1.mm: Documented dwarf_get_ranges() and dwarf_ranges_dealloc() (rev 1.72). * libdwarf2.1.pdf: Regenerated. 2008-12-09 DavidAnderson * dwarf_alloc.c: Remove useless comments and tweak a few comments. 2008-12-08 DavidAnderson * dwarf_opaque.h: Add di_abbrev_code field to record a DIE abbreviation value so consumers can report it. * libdwarf.h: Add dwarf_die_abbrev_code() interface. * dwarf_query.c: Add dwarf_die_abbrev_code() interface. * dwarf_die_deliv.c: Set di_abbrev_code for consumers. * libdwarf2.1.mm: Documented dwarf_die_abbrev_code(). * libdwarf2.1.pdf: Regenerated. * pro_util.h: Removed gratuitous tabs. Used a space instead. 2008-12-07 DavidAnderson * dwarf.h: Entered DWARF4 defines known so far. * dwarf_opaque.h: Updated dwarf 4 section-version comment with the latest info. 2008-12-07 DavidAnderson * dwarf_original_elf_init.c: Delete unused local variables. * pro_forms.c: Delete unused local variables and initialize local variables at definition. * dwarf_pubtypes.c, dwarf_line.c: Delete accidental duplicated /* comment-start. * malloc_check.c: In the 'do nothing' case, create an extern declaration to eliminate a compiler warning. 2008-11-19 DavidAnderson * dwarf_die_deliv.c: Handle the case where DW_AT_sibling uses DW_FORM_ref_addr. * dwarf_util.c: Add a comment about DW_FORM_ref_addr. * dwarf_opaque.h: Add a comment about CU fields, comment out an unused CU header field. * dwarf_query.c: Added dwarf_die_CU_offset_range() so dwarfdump can check for additional errors. * dwarf_form.c: Clarifying a comment. * dwarf_print_lines.c: Add additional print detail on line table headers (used by dwarfdump). * libdwarf2.1.mm: Documenting the new function dwarf_die_CU_offset_range(). * libdwarf2.1.pdf: Regenerated. * libdwarf.h: Added dwarf_die_CU_offset_range() interface declaration. 2008-10-13 DavidAnderson * dwarf_frame2.c: Removed last use of DW_FRAME_LAST_REG_NUM: use dbg->de_frame_reg_rules_entry_count instead. 2008-09-30 DavidAnderson * dwarf_print_lines.c: Print corrected warning about bogus prologue length. * dwarf_line.c: Work around bogus prologue length compiler bug. * dwarf_line.h: Rename arguments. 2008-09-29 DavidAnderson * libdwarf2.1.mm: Documented requirement that dwarf_get_fde_n() dwarf_get_fde_at_pc() pass a pointer to an fde table that contains at least 1 entry. * libdwarf2.1.pdf: regenerated. * dwarf_opaque.h: Add new fields for cie/fde specific fields for eh. * dwarf_frame2.c: Initialize the new Dwarf_debug and Dwarf_Fde fields. * dwarf_frame.c: Access the new Dwarf_Fde fields. * dwarf_frame.h: Define a new Dwarf_Fde field so we keep eh and non-eh distinct. 2008-09-29 DavidAnderson * All .c files: Mechanically removed tab characters with the expand tool. 2008-09-29 DavidAnderson * libdwarf.h: DW_DLE_LINE_SET_ADDR_ERROR no longer used. The tests which generated it were bogus. * dwarf_print_lines.c: Print a warning if there are any apparently wasted bytes after the line prologue and before the line table instructions. Match the new prologue reading function prototype. * dwarf_sort_line.c: Match the new prologue reading function prototype. * dwarf_line.c: Modify the prologue reading function so it correctly finds the beginning of instructions even when there are 'wasted' bytes after the prologue. Drop bogus tests for minimum-instruction-size matching the ABI pointer size. Removing the tests removed all uses of DW_DLE_LINE_SET_ADDR_ERROR. * dwarf_line.h: Modify the prototype for the prologue reading function so it is possible for a caller to know about the possibly wasted bytes after a prologue. 2008-09-02 DavidAnderson * dwarf_init_finish.c (_dwarf_setup): Delete unused local variable 'section_error'. 2008-08-14 DavidAnderson * libdwarf2p.1.mm: Make it clearer that dwarf_get_pubnames, dwarf_get_varnames, etc return a result across all compilation units (an entire section), not just for a single compilation unit. Document version 1.68. * libdwarf2p.1.pdf: Regenerated. 2008-08-08 DavidAnderson * libdwarf2p.1.mm: Removed some long time spelling mistakes: no technical change in content. Document version 1.67. * libdwarf2p.1.pdf: Regenerated. 2008-08-05 DavidAnderson * libdwarf.h, dwarf_error.c: DW_DLA_PUBTYPE_CONTEXT was a mistake, DW_DLE_PUBTYPE_CONTEXT was intended and is now the spelling (neither is used). * dwarf_pubtypes.c dwarf_vars.c dwarf_funcs.c dwarf_global.c dwarf_weaks.c: tabs removed and previous strange formatting generated by a tool removed (4 space indent per level now present). 2008-08-05 DavidAnderson * libdwarf2.1.mm: There were numerous places the apostrophe was used incorrectly, thru is now spelled through, and a few other small typographical errors were corrected. The document revision id printed is now 1.67. There is no technical change in content. * libdwarf2.1.pdf: Regenerated. 2008-06-17 DavidAnderson * libdwarf.h: Add DW_DLE_STRP_OFFSET_BAD error code. * dwarf_form.c: Add runtime check for strp offset. * dwarf_error.c: Add DW_DLE_STRP_OFFSET_BAD error code string. * dwarf_init_finish.c, dwarf_opaque.h, dwarf_elf_access.h: Remove CR characters that crept in. 2008-06-13 DavidAnderson * libdwarf.h: Remove __SGI_FAST_LIBELF dwarf_original_elf_init.c: Remove __SGI_FAST_LIBELF and fix some indentation botches. * dwarf_init_finish.c: Fix typo in variable name introduced a few days ago. * dwarf_elf_access.c: Remove __SGI_FAST_LIBELF and fix some indentation botches. 2008-05-20 DavidAnderson * dwarf_init_finish.c: Expand tabs to spaces. 2008-05-20 DavidAnderson * dwarf_init_finish.c(dwarf_object_init): When there is no DWARF information return DW_DLV_NO_ENTRY gracefully. Thanks to Carlos Alberto Enciso for pointing out the bug. 2008-04-12 DavidAnderson * pro_section.c: Initialize local variables to zero. Change leading tabs to spaces. * pro_reloc_stream.c: Initialize local variables to zero. Change leading tabs to spaces. * pro_reloc.c: Initialize local variables to zero. Change leading tabs to spaces. 2008-04-04 DavidAnderson * dwarf_base_types.h: Removed unused macro definition. * dwarf_util.c: Altered abbreviations hash table for a small performance improvement and space saving. * dwarf_util.h: Changed declaration for space saving in dwarf abbreviations table. 2008-04-04 DavidAnderson * libdwarf.h: A trivial change to make a declaration look better. * dwarf_abbrev.h: We record tags in more than 16 bits now just in case we encounter such a thing (increased ab_tag field size), though we should not find such. * dwarf_abbrev.c: Adding a comment about the dwarf TAG value. * dwarf_util.c: Initialize local variables at declaration for safety. Removed truncation of some values: internally record more bits. Rewrote handling of the abbrev table as the old one did not scale to large numbers of abbreviations (things got very slow). * dwarf_util.h: Now has a larger field size in the argument to _dwarf_get_abbrev_for_code (not quite necessary but not harmful). * dwarf_die_deliv.c: Initializing local variables at declaration and removing truncation of bits from some uleb values. * dwarf_die_deliv.h: Increased size of ab_code field. * dwarf_opaque.h: Added a comment about abbreviations. * dwarf_base_types.h: Revised to match addition of new allocation table entry. * dwarf_alloc.h: Document macro definitions and increase one to match new table size. * dwarf_alloc.c: Arrange handling of new DW_DLA_HASH_TABLE_ENTRY (most of the work done in dwarf_util.c). 2008-02-27 DavidAnderson * libdwarf.h: Fixed minor typo in latest libdwarf.h that gcc did not complain about. Noted by Josh Fuhs. 2008-02-26 DavidAnderson * dwarf_alloc.h: Add comment giving placement of DWARF_SIMPLE_MALLOC. * pro_opaque.h: Remove de_access field, it is never used. * libdwarf.h: Add new data structures to allow reading of non-Elf object files. * dwarf_original_elf_init.c: dwarf_init(), dwarf_elf_init() moved here from dwarf_init_finish.c. * Makefile.in: Build new source files dwarf_original_elf_init.c and dwarf_elf_access.c. * dwarf_init_finish.c: All dependencies on libelf and elf have been removed. * dwarf_opaque.h: The elf related info is removed and Dwarf_Debug_s now contains a new structure (from libdwarf.h) to hide object information. * dwarf_elf_access.c: All the Elf-using code is now in this source file and elf details are kept in a struct defined and used here. Non-libelf and non-elf object access code would write a new source file with their own details using this as an example. * dwarf_elf_access.h: Prototypes for calling between dwarf_original_elf_init.c and dwarf_elf_access.c. 2008-02-18 DavidAnderson * libdwarf.h: Declare new object-access functions and structures. * dwarf_original_elf_init.c: Traditional dwarf_init() and dwarf_elf_init() are moved to this new source file. * Makefile.in: Add new source files. * dwarf_init_finish.c: Now uses the function pointers, not libelf specific fields or ifdefs. * pro_opaque.h: Remove de_access field, it is unused. * dwarf_opaque.h: New fields for new object-access functions. * dwarf_elf_access.c: New implementation details for elf access functions moved here from dwarf_init_finish.c. * dwarf_elf_access.h: New function interface so dwarf_elf_access.c and dwarf_original_elf_init.c can communicate. 2008-02-08 DavidAnderson * dwarf_print_lines.c: Added commentary to clarify that dwarf_print_lines() and _dwarf_print_lines are intentionally identical. Initialized local variables so they are alll visibly set to some sensible value. 2008-02-07 DavidAnderson * dwarf_frame.c (_dwarf_fde_section_offset): A typo in the last release made this an infinite loop. A one character change fixed it. Thanks to Carlos Alberto Enciso for noticing the bug. 2008-02-04 DavidAnderson * dwarf_incl.h, pro_incl.h: Moved #include of dwarf.h before libdwarf.h * pro_forms.c: Some newer attributes are now handled. * dwarf_print_lines.c: Removed unused #include. * dwarf_sort_line.c: Removed alloca use in favor of malloc and removed the alloca #include. * dwarf_line.c: Removed unused #include. * dwarf_line2.c: Removed unused #include. 2008-02-04 DavidAnderson * libdwarf.h: Fix commentary mistakes. 2008-02-02 DavidAnderson * libdwarf.h: Add DW_DLC_OFFSET_SIZE_64 for run-time selection of DWARF3 64bit extension producer offset generation. * libdwarf2p.1.mm: Document DW_DLC_OFFSET_SIZE_64. * pro_init.c (dwarf_producer_init): Now standard DWARF3 is the default. * configure.in: Add --enable-dwarf-format-sgi-irix for those wanting IRIX offset-style DWARF2. Add --enable-dwarf-format-strict-32bit for those wanting strictly 32bit offsets. Otherwise default to generating 64bit offsets from the producer code, but allow the DWARF3 extended 64bit offsets if the flag DW_DLC_OFFSET_SIZE_64 is turned on in the call to dwarf_producer_init(). * config.h.in: Provide undefs for the offset macros. 2008-01-25 DavidAnderson * pro_die.c: Changed leading tabs to spaces. 2008-01-23 DavidAnderson * pro_die.c: Using di_last_child field dwarf_die_link goes from O(N) to O(1) in adding a child. Thanks to Daniel Gollub for the suggestion. An omission in linking left/right children is fixed. Changed some leading TABs to spaces. * pro_opaque.h: Add di_last_child field. 2008-01-14 DavidAnderson * libdwarf2p.1.mm: Added missing backslash to correct formatting error. Thanks to Daniel Golub for pointing out the ommission. * libdwarf2.p1.pdf: Regenerated.