1March 29, 2006 2 The March 27, 2006 version accomodates DWARF3. 3 Some people have been using the library without 4 altering dwarf.h, libdwarf.h to accomodate 5 large numbers of registers. This exposed a bug 6 (an off-by-one error) but also makes it clear 7 additional documentation is needed. So 8 in libdwarf large new comments near 'TARGET DEPENDENCY' 9 attempt to explain better. 10Oct 03, 2005 11 The July version had an incompatible interface: old 12 dealloc code did not always work right. The incompatibility 13 is now fixed and the new features remain. 14 15July 15, 2005 16 New optional alloc-check code optionally checks all 17 allocated memory is freed (malloc_check.h malloc_check.c) 18 Various new dealloc routines written as the previous approach 19 of letting client code do detailed dealloc turned out not 20 to dealloc all memory. 21 To get the new checking you must manually change a line 22 in malloc_check.h and rebuild libdwarf. 23 24 25Mar 31, 2005 26 Documented the libexc.so/.debug_funcnames 27 dependency and the 64bit-offset DWARF extension in 28 mips_extentions.{mm,ps}. 29 30Mar 21, 2005 31 gcc 3.3 and 3.4 .eh_frame 'z' augmentations are not handled 32 correctly, so libdwarf gives an error when attempting to 33 print such. gcc 2 'eh' augmentation is simpler and 34 prints correctly. (.eh_frame is a GNU section, 35 not DWARF2/3, and what is recorded in .eh_frame is not 36 specified by DWARF2/3, though .eh_frame does resemble 37 DWARF2/3 .debug_frame). 38 39 40Oct 28, 2004 41 Updated contact address in copyright: SGI moved 1/4 mile 42 in 2003 to a new address: 1500 Crittenden Lane. 43 44 Documented additional vendor extensions. 45 46Oct 27, 2004 47 Added known vendor extensions to dwarf2/3 to dwarf.h 48 HP, GNU, PGI and UPC extensions are now recorded. 49 Recorded vendor extensions from Concurrent. 50 51Feb 3, 2004 52 If 'Dwarf_Word' is 64 bits, two macros reading leb numbers 53 fail to initialize upper bits of the values read. 54 First noticed with bogus line numbers printing from dwarfdump. 55 Now we use already-existing functions, avoiding the problem. 56 57Oct 02, 2003 58 Support .debug_loc section fully. 59 60Sept 29, 2003 61 Support DW_FORM_indirect properly. 62 Supports loclists in part (but not multiple loclist entries yet). 63 Support 'padding bytes' at end of .debug_arange and 64 .debug_pubnames and .debug_pubtypes per CU 65 (recent dwarf committee email made it clear this is appropriate). 66 67May 23, 2002 68 Libdwarf now asks for sections only when they are 69 used, so that unneeded sections aren't loaded. 70 Support for using SGI's ELF library as an alternative to 71 using AT&T libelf-style has been added (the SGI ELF 72 library is presently only available internally to SGI). 73 74Jan 10, 2002 75 Fixed memory leak in dwarf_finish(). 76 77Aug 21, 2001 78 If one called dwarf_add_file_decl() 79 or dwarf_add_directory_decl() but never added a line, 80 .debug_line was not produced. This was a mistake, 81 as if any file or directory was provided .debug_line 82 should be produced. Now it is produced. 83 84June 14, 2001 85 Given a cu header offset, it was not easy to derive the 86 CU header DIE offset. Created the new 87 function dwarf_get_cu_die_offset_given_cu_header_offset() 88 do get the CU header DIE offset. 89 Added the function dwarf_get_arange_cu_header_offset() 90 so the cu header offset could be retrieved from .debug_aranges 91 information. 92 93June 07, 2001 94 Major bug in dwarf_leb.c decoding large integers 95 (Dwarf_Signed 64 bit where library is compiled in ILP32) 96 found and fixed. 97 98May 21, 2001 99 Some small fixes have been found by various folks, 100 so it seems time to prepare a new source release. 101 See ChangeLog for details. 102 103April 15, 2000 104 The libdwarf copyright has changed to 105 version 2.1 of the GNU Lesser General Public License. 106 Anyone holding a version of libdwarf that was published 107 before this new copyright is allowed to use 108 the copyright published in that earlier libdwarf source 109 on the earlier source 110 or to use 111 this new copyright on the earlier source, 112 at their option. 113 114 115December 08, 1999 116 The dwarf committee has adopted the offset-extension 117 proposal. This allows compatibly emitting 118 dwarf with 64bit offsets. 119 120 The dwarf reader now automatically figures out which is in use. 121 The dwarf writer configures itself at the time the 122 writer initialization routine is called, though 123 the writer is restricted, at libdwarf 124 compile time, to one of 125 mips/sgi pure 32/pure 64 offsets/pointers. 126 127 32bit offsets only (per dwarf 2.0.0 and cygnus) 128 129 32bit offsets with extension to 64bit offsets 130 allowed (the offset-extension newly passed). 131 132 In addition, a great deal of duplicate code 133 for the sgi .debug_weaknames, .debug_funcnames, 134 .debug_varnames and .debug_typenames sections has 135 been removed: a single set of functions does the real work now. 136 137Sept 29, 1999 138 Just found out that cygnus is, on 64bit targets, generating 139 32bit offsets (as elf32 has, for example) with 64 bit 140 pointers (in references to text and data). 141 Whereas sgi has always generated 64bit dwarf with 142 64 bit offsets (as in elf64) and 64bit pointers for 143 64bit pointer objects. 144 I'll call the sgi approach 64-bit and the cygnus approach 145 32bit-offsets. 146 147 Cygnus is following the DWARF2 spec as written, so they are 148 right in doing only 32bit-offsets. 149 150 Folks at sgi (including me) think that, as for elf64, 151 the offsets in dwarf for 64bit pointer-apps should be 152 64 bits. We think it is only a matter of time 153 before we really *need* 64bit offsets and when that happens 154 it will be on an important app. Disk space is cheap, 155 so lets just go 64 bit on 64bit apps (such as ia64 apps) 156 to avoid a future problem. 157 I(davea@sgi.com) think the 'pointer-size' references in the dwarf 158 spec were really written for 64-bit pointer apps. 159 I don't recall serious consideration of 64bit pointer 160 apps in the committee deliberations (I did miss 161 a couple of meetings) and think 64bit offsets 162 are consistent with dwarf2, even though the speci 163 was not written for such. We think true full 64 bit 164 dwarf2 is the right way to go (the spec changes 165 are obvious: file and section offsets become 64bit 166 with 64bit pointer objects. 167 168 MIPS/SGI is definitely 64-bit offsets for 64 bit objects, 169 cygnus is definitely 32bit-offsets for earlier 64bit pointer 170 environments. 171 172 At any rate, now the dwarf reader allows and accomodates 173 both and the dwarf producer also accomodates both. 174 Some tweaking of the pro_init.c or dwarf_init_finish.c 175 files may be necessary in future: no other changes should 176 be needed to accomodate the two 64bit approaches, as 177 the library (and dwarfdump) now deal with both forms. 178 179 180August 20, 1999 181 Added some #ifndef/#define to pro_util.h to let libdwarf build 182 on more hosts. (since those hosts don't need the producer 183 code, AFAIK, zero values suffice for missing #defines.) 184 185July 21, 1999 186 Now reader transparently reads either-endianness data 187 from an either-endianness object. 188 Updated dwarf.h and libdwarf.h to recognize 189 GNU egcs dwarf extensions and to print the egcs eh_frame 190 section. 191 192June 10, 1999 193 gnu configure version of libdwarf made available for the 194 first time. 195 Still allows only same-endian-as-host in objects. 196 197August, 1994 198 libdwarf source made available for ftp on sgigate.sgi.com 199 /ftp/pub 200 201June, 1994 202 Consumer interface changed completely, following 203 "Candy Machine Interfaces" chapter from 204 "Writing Solid Code" by Steve Maguire (Microsoft Press). 205 206April, 1993 207 Initial version of libdwarf for dwarf version 2 208 written at sgi. 209