summaryrefslogtreecommitdiff
path: root/libdwarf/NEWS
diff options
context:
space:
mode:
Diffstat (limited to 'libdwarf/NEWS')
-rw-r--r--libdwarf/NEWS406
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.