diff options
Diffstat (limited to 'libdwarf/NEWS')
-rw-r--r-- | libdwarf/NEWS | 406 |
1 files changed, 406 insertions, 0 deletions
diff --git a/libdwarf/NEWS b/libdwarf/NEWS new file mode 100644 index 0000000..4aa6176 --- /dev/null +++ b/libdwarf/NEWS @@ -0,0 +1,406 @@ +December 13, 2011 + dwarf_lineoff() is now deprecated, dwarf_lineoff_b() is + strongly recommended instead. + dwarf_add_line_entry() does not have all the line fields + needed for generating DWARF3/4, use dwarf_add_line_entry_b() instead. + Generation of DWARF3/4 is not yet functional, this new function + is a first step. +October 29, 2011 + Added support for reading .debug_types (type unit) data. +October 26,2011 + Revised the Makefile.in and README to make building libdwarf + easier to accomplish with unusual locations of libelf headers + or other headers or libraries. +June 04,2011 + Non-Elf objects could be used with libdwarf, but + no one has contributed non-elf-reading code for libdwarf + and a crucial detail was not documented so those writing + such object-reading code have not done it entirely correctly. + Fundamentally such code must treat a section index of 0 as + a real but empty section with no name (an empty name). + dwarf_elf_access.c and dwarf_elf_init_finish.c have some comments + on this point now. +March 29,2011 + All the code changed a lot because indentations were all over + the map, now they are consistent. + Additions were made to DWARF4 support. + Now we use dicheck (a new open source application) to check indentation. + Library users will not see any change, all interfaces remain + as before. +January 12,2010 + A libdwarf user has noticed that the April 4, 2009 + consumer function changes introduced + a problem: the default CFA column was DW_FRAME_CFA_COL + even when a newer DWARF3 consumer frame interface like + dwarf_get_fde_info_for_all_regs3() is used. The + libdwarf2.1.pdf documentation + stated the default should be DW_FRAME_CFA_COL3 in that case. + + The introduction of a caller-specified frame-column + function (dwarf_set_frame_cfa_value()) + in that April 4, 2009 release was flawed in that it failed + to match the documentation. + + Now the default frame column is DW_FRAME_CFA_COL3 unless + the configure option --enable-oldframecol + is used at libdwarf build time. + If you are using libdwarf old frame consumer interfaces + dwarf_get_fde_info_for_reg(), dwarf_get_fde_info_for_cfa_reg(), + and dwarf_get_fde_info_for_all_regs() and want unchanged operation + then please configure libdwarf with --enable-oldframecol . + or add the call dwarf_set_frame_cfa_value(dbg,DW_FRAME_CFA_COL) + after calling a libdwarf initialization function. + It is impossible to configure a single libdwarf.a so that + it transparently defaults to both DW_FRAME_CFA_COL + and DW_FRAME_CFA_COL3. + + A call such as dwarf_set_frame_cfa_value(dbg,DW_FRAME_CFA_COL3) + or dwarf_set_frame_cfa_value(dbg,DW_FRAME_CFA_COL) + (or some other name/value of your choosing) + following the dwarf_init() call gives your application + full control of the frame cfa column independent of the libdwarf + configure option. See the libdwarf2.1.pdf documentation for details. + We strongly recommend that you use dwarf_set_frame_cfa_value() + to avoid a configure-time dependency. + +July 7, 2009 + Implemented support for elf 'rela' relocations so libdwarf and dwarfdump + can read *nix .o files with such relocations reasonably, + at least for some machines + (see dwarf_elf_access.c for EM_ in 'case' statements.) + This changes the binary access for non-Elf object users (folks + who have coded there own non-Elf access routines do reference + internals of dwarf_opaque.h), but the new data can be left zero + and the rest of the code should work fine. + dwarf_opaque.h gathers section data in Dwarf_Section_s structs + which simplifies the code in dwarf_init_finish.c and clarifies + what fields are section related. +July 4, 2009 + When something erroneous is detected in a die + information about the CU context may be of interest. + So we added dwarf_CU_dieoffset_given_die(), a function which allows + clients to find the relevant CU die for any die. + The consumer can use normal attribute access functions to + print information about that CU die (and the erroneous die, + of course). See the libdwarf consumer document for more + information. +April 27, 2009 + Interface additions: dwarf_loclist_from_expr_a() and + dwarf_get_ranges_a() are new interfaces like + dwarf_loclist_from_expr() and dwarf_get_ranges() respectively, + but with arguments allowing + full support for different CIEs + in an executable having different address-sizes + (and their compilation unit DIEs if .debug_info is present). + dwarf_get_loclist_entry() does not support + differing address sizes per CIE/CU. +April 4, 2009 + Added new functions dwarf_set_frame_cfa_value() + dwarf_set_frame_same_value(), and + dwarf_set_frame_undefined_value(). These are essential + for ABIs where the real register numbers exceed 1033 + (such as ppc). Failing to use these leads to + frame instructions DW_CFA_undefined and + DW_CFA_same_value emitting values that cannot be + interpreted correctly by a libdwarf consumer. + See dwarfdump for examples of use. +Feb 14, 2009 + Added configure option --enable-nonstandardprintf + which makes it easy to get printf of Dwarf_Unsigned (etc) + types correct even for non-standard compilers. +Dec 30, 2008 + Added interfaces for getting and printing the .debug_ranges + data. +Dec 8, 2008 + Record the abbreviation 'code' (index) in each DIE. + Making it possible for a pretty-printer to print the + abbreviation code. +Sep 30, 2008 + Phil Mucci provided an a.out test chase which demonstrates a bug + in 64bit DWARF2 output by gcc. Now libdwarf works around this + and with -v -v -v -v prints a warning. +Sep 29, 2008 + Thanks to Phil Mucci for providing a little-endian 64bit + test object file that exposed a problem when there are 'extra' bytes + (possibly unused) after a line table prologue header and before the + line table itself. This releases fixes the bug. + + Thanks to Matthew Legendre for pointing out that we were sharing + de_fde_count for eh and non-eh and that could cause erroneous + error returns in a couple of functions. + These counts are now separate. +April 9, 2008 + libdwarf would behave badly if one compilation unit had more than 64K + abbreviations: It was both very slow dealing with abbreviations and would + get mixed up and error-off. Increased the size of some internal variables + and rewrote abbreviation lookup. +February 18, 2008 + It is now possible to write one's own access to objects, making it possible + to use a different library than libelf or even read a completely + different object format than ELF. + See dwarf_object_init() and see the new source files + dwarf_original_elf_init.c and dwarf_elf_access.c for example + code using the new function-pointer approach as it's implementation. + Thanks to Josh Fuhs for doing the design and 99% of the work to make + this happen. +February 2, 2008 + Now pro_init() defaults to standard DWARF3 generated offset sizes. + But if a new flag DW_DLC_OFFSET_SIZE_64 or'd into flags passed to + dwarf_produser_init() or dwarf_producer_init_b, + the DWARF3 extended offset size is generated (if the address size + is 64 bit). + The new configure option --enable-dwarf-format-strict-32bit + forces pro_init() to always cause 32bit offset dwarf generation. + The new configure option --enable-dwarf-format-sgi-irix forces + the old SGI IRIX 64bit offset generation for 64bit pointer size objects. + + This is intended to simplify standard DWARF3 generation with + the now-normal use of 32bit DWARF offsets for both 32 and 64 + bit pointer objects. + + It does require that anyone wanting SGI IRIX dwarf generation + with its non-standard offsets for 64bit objects use the new + --enable-dwarf-format-sgi-irix configure time option. + + This has no effect on dwarf reader code. It affects code calling + the libdwarf producer interfaces. + +December 8, 2007 + Had to add an ugly configure conditional as libelf has + unconditional use of off64_t in recent libelf.h +July 3, 2007 + A new interface function, dwarf_loclist_from_expr(), + allows easy extraction of dwarf expression bytes from + expressions in frame data. +May 8, 2007 + Now documents released as .mm and .pdf (no longer as .ps). +May 7, 2007 + Incorporates Sun Microsystems extensions to dwarf.h and + to the consumer and producer libraries. The changes + include corrections so the producer library cleans up it's memory + use on a call to dwarf_producer_finish(dbg). + Thanks to Chris Quenelle of Sun for these contributions. + +March 20, 2007 + nroff/troff and the AT&T -mm package are not widely available, + so now the Makefile refers to groff, which works quite nicely. + +February 20, 2007 + Documented libdwarf thread safety in README. + Fixed memory leak in dwarf macro reading code. + Removed use of static data in dwarf macro + reading code: now uses stack/heap (for + thread safety). + +February 9, 2007 + Maintenance of libdwarf is now outside SGI + as David Anderson has left SGI. + +March 29, 2006 + The March 27, 2006 version accomodates DWARF3. + Some people have been using the library without + altering dwarf.h, libdwarf.h to accomodate + large numbers of registers. This exposed a bug + (an off-by-one error) but also makes it clear + additional documentation is needed. So + in libdwarf large new comments near 'TARGET DEPENDENCY' + attempt to explain better. +Oct 03, 2005 + The July version had an incompatible interface: old + dealloc code did not always work right. The incompatibility + is now fixed and the new features remain. + +July 15, 2005 + New optional alloc-check code optionally checks all + allocated memory is freed (malloc_check.h malloc_check.c) + Various new dealloc routines written as the previous approach + of letting client code do detailed dealloc turned out not + to dealloc all memory. + To get the new checking you must manually change a line + in malloc_check.h and rebuild libdwarf. + + +Mar 31, 2005 + Documented the libexc.so/.debug_funcnames + dependency and the 64bit-offset DWARF extension in + mips_extentions.{mm,ps}. + +Mar 21, 2005 + gcc 3.3 and 3.4 .eh_frame 'z' augmentations are not handled + correctly, so libdwarf gives an error when attempting to + print such. gcc 2 'eh' augmentation is simpler and + prints correctly. (.eh_frame is a GNU section, + not DWARF2/3, and what is recorded in .eh_frame is not + specified by DWARF2/3, though .eh_frame does resemble + DWARF2/3 .debug_frame). + + +Oct 28, 2004 + Updated contact address in copyright: SGI moved 1/4 mile + in 2003 to a new address: 1500 Crittenden Lane. + + Documented additional vendor extensions. + +Oct 27, 2004 + Added known vendor extensions to dwarf2/3 to dwarf.h + HP, GNU, PGI and UPC extensions are now recorded. + Recorded vendor extensions from Concurrent. + +Feb 3, 2004 + If 'Dwarf_Word' is 64 bits, two macros reading leb numbers + fail to initialize upper bits of the values read. + First noticed with bogus line numbers printing from dwarfdump. + Now we use already-existing functions, avoiding the problem. + +Oct 02, 2003 + Support .debug_loc section fully. + +Sept 29, 2003 + Support DW_FORM_indirect properly. + Supports loclists in part (but not multiple loclist entries yet). + Support 'padding bytes' at end of .debug_arange and + .debug_pubnames and .debug_pubtypes per CU + (recent dwarf committee email made it clear this is appropriate). + +May 23, 2002 + Libdwarf now asks for sections only when they are + used, so that unneeded sections aren't loaded. + Support for using SGI's ELF library as an alternative to + using AT&T libelf-style has been added (the SGI ELF + library is presently only available internally to SGI). + +Jan 10, 2002 + Fixed memory leak in dwarf_finish(). + +Aug 21, 2001 + If one called dwarf_add_file_decl() + or dwarf_add_directory_decl() but never added a line, + .debug_line was not produced. This was a mistake, + as if any file or directory was provided .debug_line + should be produced. Now it is produced. + +June 14, 2001 + Given a cu header offset, it was not easy to derive the + CU header DIE offset. Created the new + function dwarf_get_cu_die_offset_given_cu_header_offset() + do get the CU header DIE offset. + Added the function dwarf_get_arange_cu_header_offset() + so the cu header offset could be retrieved from .debug_aranges + information. + +June 07, 2001 + Major bug in dwarf_leb.c decoding large integers + (Dwarf_Signed 64 bit where library is compiled in ILP32) + found and fixed. + +May 21, 2001 + Some small fixes have been found by various folks, + so it seems time to prepare a new source release. + See ChangeLog for details. + +April 15, 2000 + The libdwarf copyright has changed to + version 2.1 of the GNU Lesser General Public License. + Anyone holding a version of libdwarf that was published + before this new copyright is allowed to use + the copyright published in that earlier libdwarf source + on the earlier source + or to use + this new copyright on the earlier source, + at their option. + + +December 08, 1999 + The dwarf committee has adopted the offset-extension + proposal. This allows compatibly emitting + dwarf with 64bit offsets. + + The dwarf reader now automatically figures out which is in use. + The dwarf writer configures itself at the time the + writer initialization routine is called, though + the writer is restricted, at libdwarf + compile time, to one of + mips/sgi pure 32/pure 64 offsets/pointers. + + 32bit offsets only (per dwarf 2.0.0 and cygnus) + + 32bit offsets with extension to 64bit offsets + allowed (the offset-extension newly passed). + + In addition, a great deal of duplicate code + for the sgi .debug_weaknames, .debug_funcnames, + .debug_varnames and .debug_typenames sections has + been removed: a single set of functions does the real work now. + +Sept 29, 1999 + Just found out that cygnus is, on 64bit targets, generating + 32bit offsets (as elf32 has, for example) with 64 bit + pointers (in references to text and data). + Whereas sgi has always generated 64bit dwarf with + 64 bit offsets (as in elf64) and 64bit pointers for + 64bit pointer objects. + I'll call the sgi approach 64-bit and the cygnus approach + 32bit-offsets. + + Cygnus is following the DWARF2 spec as written, so they are + right in doing only 32bit-offsets. + + Folks at sgi (including me) think that, as for elf64, + the offsets in dwarf for 64bit pointer-apps should be + 64 bits. We think it is only a matter of time + before we really *need* 64bit offsets and when that happens + it will be on an important app. Disk space is cheap, + so lets just go 64 bit on 64bit apps (such as ia64 apps) + to avoid a future problem. + I(davea@sgi.com) think the 'pointer-size' references in the dwarf + spec were really written for 64-bit pointer apps. + I don't recall serious consideration of 64bit pointer + apps in the committee deliberations (I did miss + a couple of meetings) and think 64bit offsets + are consistent with dwarf2, even though the speci + was not written for such. We think true full 64 bit + dwarf2 is the right way to go (the spec changes + are obvious: file and section offsets become 64bit + with 64bit pointer objects. + + MIPS/SGI is definitely 64-bit offsets for 64 bit objects, + cygnus is definitely 32bit-offsets for earlier 64bit pointer + environments. + + At any rate, now the dwarf reader allows and accomodates + both and the dwarf producer also accomodates both. + Some tweaking of the pro_init.c or dwarf_init_finish.c + files may be necessary in future: no other changes should + be needed to accomodate the two 64bit approaches, as + the library (and dwarfdump) now deal with both forms. + + +August 20, 1999 + Added some #ifndef/#define to pro_util.h to let libdwarf build + on more hosts. (since those hosts don't need the producer + code, AFAIK, zero values suffice for missing #defines.) + +July 21, 1999 + Now reader transparently reads either-endianness data + from an either-endianness object. + Updated dwarf.h and libdwarf.h to recognize + GNU egcs dwarf extensions and to print the egcs eh_frame + section. + +June 10, 1999 + gnu configure version of libdwarf made available for the + first time. + Still allows only same-endian-as-host in objects. + +August, 1994 + libdwarf source made available for ftp on sgigate.sgi.com + /ftp/pub + +June, 1994 + Consumer interface changed completely, following + "Candy Machine Interfaces" chapter from + "Writing Solid Code" by Steve Maguire (Microsoft Press). + +April, 1993 + Initial version of libdwarf for dwarf version 2 + written at sgi. |