summaryrefslogtreecommitdiff
path: root/libdwarf/ChangeLog2009
blob: a62bc0f914a98a9655f3ac7f6fa16f0c96d731b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
2009-12-30  DavidAnderson <davea42@earthlink.net>
     * configure: Regenerated with autoconf 2.64.
     * config.guess, config.sub: Delete these.
     * configure.in, README: The --enable-nonshared 
       option was coded incorrectly. The configure
       options are --enable-shared and --disable-nonshared
       work correctly.  Options --disable-shared and --enable-nonshared work
       correctly as well (these are the default values).
2009-12-29  DavidAnderson <davea42@earthlink.net>
     * gennames.c: Add cast to int  in printf so that the printf with *
       as the field width sees an int, not size_t.
     * Makefile.in:  Add depenencies for libdwarf.so to match
       libdwarf.a
2009-12-26  DavidAnderson <davea42@earthlink.net>
     * libdwarf.h, pro_section.c, pro_reloc_symbolic.c: Reformatted
       a few lines that were badly formatted. 
       Initialized local variables where a few were not initialized
       (this did not affect correctness, just readability).
2009-11-27  DavidAnderson <davea42@earthlink.net>
     * dwarf_form.c: Was an incorrect implemenation of
       the reading of DW_FORM_sec_offset.
     * libdwarf2.1.mm: Improved the documentation on reading DW_FORM_sec_offset.
       See dwarf_global_formref() documentation.
     * libdwarf2.1.pdf: Regenerate.
2009-11-27  DavidAnderson <davea42@earthlink.net>
     * libdwarf.h, dwarf_form.c, dwarf_query.c: Adding 
       new form-class for the old DW_AT_MIPS_fde
       SGI/IRIX extension (offset into .debug_frame).
2009-11-27  DavidAnderson <davea42@earthlink.net>
     * libdwarf.h: Added dwarf_formexprloc() and a new
       error code for it.
     * dwarf_query.c: The new dwarf_get_form_class()
       function had a typo for the address class.
     * dwarf_form.c: dwarf_formexprloc() added so one can read
       DW_FORM_exprloc location expressions.
     * dwarf_error.c: New error added for dwarf_formexprloc().
     * libdwarf2.1.mm: Document dwarf_formexprloc().
     * libdwarf2.1.pdf: Regenerate.
2009-11-27  DavidAnderson <davea42@earthlink.net>
     * libdwarf.h: Defines typedef Dwarf_Sig8 and
       the new function dwarf_formsig8().
     * dwarf_error.c: Now deals with the latest
       error codes, including a new one for dwarf_formsig8().
     * libdwarf2.1.mm: Document dwarf_formsig8().
     * libdwarf2.1.pdf: Regenerate.
2009-11-24  DavidAnderson <davea42@earthlink.net>
     * libdwarf.h: Added enum dwarf_form_class_e and
       dwarf_get_form_class() so clients have a simple
       way to get the  form-class mentioned in the DWARF
       specification. 
     * dwarf_query.c:  Implemented dwarf_get_form_class().
     * dwarf_die_deliv.c:  Added dwarf_next_cu_header_b()
       function as more useful than dwarf_next_cu_header().
     * dwarf_opaque.h:  Added commentary about CU record.
     * dwarf_elf_access.c:  Added commentary about the CU header
       data.
     * libdwarf2.1.mm: Document dwarf_next_cu_header_b()
       and suggest users convert to it.
       Document dwarf_get_form_class().  Rev 1.84
     * libdwarf2.1.pdf: Regenerate.
2009-11-23  DavidAnderson <davea42@earthlink.net>
     * dwarf_line.c:  file_name_is_full_path() did not
       allow for lower case  in Windows root path
       detection (with --enable-windowspath at configure
       time).  Now it does.
2009-11-17  DavidAnderson <davea42@earthlink.net>
     * gennames.c: Check the return value from fgets().
     * dwarf_form.c, dwarf_util.c: Handle DW_FORM_sec_offset, new in DWARF4.
     * libdwarf2.1.mm: Add comment to macro example to clarify its
       limitation (it cannot always work).
     * libdwarf2.1.pdf: Regenerate.
2009-09-30  DavidAnderson <davea42@earthlink.net>
     * libdwarf.h: Added  dwarf_insert_fde_inst_bytes()
       to simplify copying an fde.  Added dwarf_get_cie_index()
       to provide a direct specific way to get a cie index for an fde.
     * libdwarf2.1.mm: Minor reformatting to make things easier to read.
       This is revision 1.82.  Documented the new function
       dwarf_get_cie_index().
     * libdwarf2.1.pdf: Regenerated.
     * dwarf.h: Corrected typo, DW_CFA_cfa_offset_extended_sf is 
       really spelled DW_CFA_offset_extended_sf.
       Added final new attributes, tag, language.
     * pro_alloc.c: Reformatting a comment so the line is not so long.
     * libdwarf2p.1.mm: Clarified that some arguments in fde
       creation are MIPS/IRIX only (other targets should just pass 0).
       This is revision 1.27. Document the new function
       dwarf_insert_fde_inst_bytes().
     * libdwarf2p.1.pdf: Regenerated.
     * config.h.in: Added HAVE_WINDOWS_PATH. 
     * configure.in: Added --enable-windowspath to set
       HAVE_WINDOWS_PATH.
     * configure: Regenerated.
     * pro_section.c: Now allows use of a block of fde instructions
       from dwarf_insert_fde_inst_bytes(). Some indentation fixed too.
     * dwarf_line.c: Added detection of Windows full path if
       HAVE_WINDOWS_PATH defined at library build time.
     * pro_frame.c: Now handles dwarf3 CFA operations (but not the
       expression operands yet).  Removed some duplicated code in
       a switch statement. Fixed commentary typos.
       Created new function dwarf_insert_fde_inst_bytes().
     * pro_frame.h: Added fields to support dwarf_insert_fde_inst_bytes().
     * dwarf_arange.c: dwarf_get_arange_cu_header_offset() was
       failing to load .debug_info, so a legitimate use of the function
       might crash a client.
     * dwarf_frame2.c: If there are CIE records but no FDEs this
       is not considered a 'NO ENTRY' case.  It is strange
       but not a formal error and we might want to access the orphan
       CIE records (to print them when debugging a compiler, for example).
     * README: Documented --enable-windowspath.
     * dwarf_frame.c: Adding dwarf_get_cie_index() convenience function.
2009-09-09  DavidAnderson <davea42@earthlink.net>
     * libdwarf2p.1.mm: Improved the discussion of
       dwarf_transform_to_disk_form.
     * libdwarf2p.1.pdf: Regenerated.
2009-08-12  DavidAnderson <davea42@earthlink.net>
     * pro_section.c: The Dwarf_Die argument to fde creation
       functions is really optional (NULL is ok) and only used
       for an IRIX/MIPS extension.  So the code now allows
       a NULL Dwarf_Die argument for these functions.
     * libdwarf2p.1.mm: Rev 1.24, 11 Aug 2009 now documents
       the argument as NULL for most users.
     * libdwarf2p.1.pdf: Regenerated Rev 1.24, 11 Aug 2009.
2009-08-07  DavidAnderson <davea42@earthlink.net>
     * libdwarf.h: Added to Dwarf_Regtable_Entry_s
       and Dwarf_Regtable_Entry_s comments.
     * libdwarf2.1.mm: Revised dwarf_set_frame_rule_table_size()
       description, making it a bit more complete.
     * libdwarf2.1.pdf: Regenerated, rev 1.81, 07 August 2009.
2009-08-05  DavidAnderson <davea42@earthlink.net>
     * libdwarf.h: Interface to dwarf_expand_frame_instructions()
       changed, the original could not really work right.
     * libdwarf2.1.mm: Documented revised dwarf_expand_frame_instructions().
     * libdwarf2.1.pdf: Regenerated, rev 1.80, 05 August 2009.
     * dwarf_frame.c: Fixed dwarf_expand_frame_instructions();
2009-08-05  DavidAnderson <davea42@earthlink.net>
     * gennames.c: Change include from getopt.h to unistd.h
       so the code is more universally compilable.
2009-07-24  DavidAnderson <davea42@earthlink.net>
     * dwarf_frame.c: Change debug printf to use libdwarf.h DW_PR macros
       instead of %d.
2009-07-20  DavidAnderson <davea42@earthlink.net>
     * libdwarf.h: Added DW_DLE_NO_ELF64_SUPPORT.
     * dwarf_elf_access.c: If one has no Elf64 libelf support at build time
       and runtime one finds an Elf64 object then we return
       an error (DW_DLE_NO_ELF64_SUPPORT).  Pretending we could handle
       the elf64 was a bug.
     * dwarf_error.c: Adding strings for new error codes.
     * dwarf_elf_access.c: Add error code argument.
     * dwarf_elf_access.h: Add error code argument.
     * dwarf_original_elf_init.c: Report the correct error code instead
       of a generic code.

2009-07-16  DavidAnderson <davea42@earthlink.net>
     * libdwarf.h: Add an error message define relating to rela relocations.
     * dwarf_alloc.c: Add code to free malloc space (related 
       to rela relocations).
     * config.h.in: Add ifdef for Sun host machines so rela processing
       does not segv.
     * dwarf_opaque.h: Add a flag to the section data to note that we malloced
       space when rela relocations are involved.
     * dwarf_elf_access.c: Refine is_32bit_abs_reloc() and  
       is_64bit_abs_reloc() for easier debugging.  
       Add malloc call when doing rela processing
       as some host libelf libraries make some libelf data areas read-only 
       (Solaris and Irix for example). The malloc space avoids getting 
       a segv. 
2009-07-13  DavidAnderson <davea42@earthlink.net>
     * dwarf_elf_access.c: some cases had = where == was
       needed in the reloc switch code.
2009-07-05  DavidAnderson <davea42@earthlink.net>
     * dwarf_opaque.h: New data for .rela and unify section data 
       information.  The changes will require consumers supporting
       non-elf-objects to make small (hopefully simple) changes.
     * dwarf_init_finish.c: Note existence of .rela sections.
     * pro_forms.c: Explicitly allow DW_AT_const_value,
       DW_AT_entry_pc, DW_AT_call_file, DW_AT_call_line.
     * dwarf_ranges.c:  Use simplified _dwarf_load_section() interface.
       Change an accidental C++ style // comment to oldstyle C comment.
     * dwarf_print_lines.c, dwarf_form.c, dwarf_query.c,
       dwarf_vars.c, dwarf_pubtypes.c, dwarf_frame3.c, dwarf_funcs.c,
       dwarf_arange.c, dwarf_global.c, dwarf_init_finish.c,
       dwarf_line.c, dwarf_opaque.h, dwarf_string.c, dwarf_weaks.c
       dwarf_util.c, dwarf_loc.c, dwarf_frame.c, dwarf_macro.c, 
       dwarf_types.c: Use simplified _dwarf_load_section() interface.

2009-07-05  DavidAnderson <davea42@earthlink.net>
     * dwarf_init_finish.c: Unified some common code into
       a new local function , reducing file by 60 lines.
     * dwarf_init_finish.c: Has long checked the wrong field
       for duplicate debug_info and debug_abbrev. Fixed.
       Also noted SGI IRIX only sections by adding comments.
2009-07-04  DavidAnderson <davea42@earthlink.net>
     * libdwarf.h: Adding new function dwarf_CU_dieoffset_given_die(),
        and comments on dwarf_get_cu_die_offset_given_cu_header_offset();
     * libdwarf2.1.mm: documenting dwarf_CU_dieoffset_given_die().
     * libdwarf2.1.pdf: Regenerated.
     * dwarf_opaque.h: New structure Dwarf_Section_s consolidates
       section information into one struct per section with
       index and size so we remove many Dwarf_Debug_s fields. 
     * dwarf_print_lines.c, dwarf_form.c, dwarf_query.c, dwarf_vars.c,
       dwarf_pubtypes.c, dwarf_frame3.c, dwarf_funcs.c,
       dwarf_alloc.c, dwarf_arange.c, dwarf_init_finish.c ,
       dwarf_ranges.c, dwarf_line.c, dwarf_abbrev.c, dwarf_string.c,
       dwarf_weaks.c, dwarf_frame2.c, dwarf_util.c, dwarf_loc.c,
       dwarf_die_deliv.c, dwarf_frame.c, dwarf_macro.c, dwarf_types.c,
       Reflect Dwarf_Section_s addition using its fields.
       Simplify years list of SGI copyright using y-y replacing comma list.
       Minor reformatting for consistency with 4-space indentation.
       Initialize uninitialized local variables at declaration.
     * dwarf_addr_finder.c, dwarf_print_lines.c: Initialize 'res'
       local variables at declaration to DW_DLV_ERROR.
     * dwarf_global.c: Add dwarf_CU_dieoffset_given_die().
       Reflect Dwarf_Section_s addition using its fields.
       Simplify years list of SGI copyright using y-y replacing comma list.
       Minor reformatting for consistency with 4-space indentation.
       Initialize uninitialized local variables at declaration.
2009-06-06  DavidAnderson <davea42@earthlink.net>
      * configure.in: The new option --enable_namestable
        switches build time to generate a runtime binary search
        in the dwarf_get_TAG_name() etc functions instead of the
        default switch statement (for the rare case one knows a
        compiler generates poor switch code).
      * configure: regenerated.
      * libdwarf.h: Correct format mistakes and omissions in
        the Dwarf_Regtable_Entry3_s comments.
        Add prototypes for dwarf_get_TAG_name() and the related
        new functions.
      * dwarf_frame.c: Add {} to clarify some 'if' ranges.
        Remove code updating the DW_FRAME_CFA_COL row when finishing
        up establishing the current frame table.  The code should never
        have been there. Fixed some indentation of function
        formal parameters.  Removed use of DW_FRAME_CFA_COL 
        and use de_frame_cfa_col_number instead.
        In dwarf_get_fde_info_for_reg (the older interface)
        correctly return the cfa table column in the 'old style'.
      * gennames.c: Copied from dwarfdump.c (with changes).
        This generates dwarf_names.c so that libdwarf has
        functions like dwarf_get_TAG_name() which returns
        functions like dwarf_get_TAG_name() which returns
        the tag as a string (through a pointer argument).
      * dwarf.h: The first word of a comment is now capitalized (1 place).
      * common.c: New, used by gennames.c.
      * common.h: New, used by gennames.c
      * Makefile.in: Now contains changes which build and run
        gennames and create dwarf_names.o (which is part
        of libdwarf).
      * libdwarf2.1.mm: Document the new libdwarf functions.
      * libdwarf2.1.pdf: Regenerated as rev 1.76, 6 June 2009.
2009-06-05  DavidAnderson <davea42@earthlink.net>
      * dwarf.h: added new DWARF4 attribute (etc) defines.
2009-05-10  DavidAnderson <davea42@earthlink.net>
      * dwarf_frame.c: Remove use of DW_FRAME_UNDEFINED_VAL in
        favor of the value in the dbg structure.
        Adding comments about the meaning of an error case.
2009-05-07  DavidAnderson <davea42@earthlink.net>
      * Makefile.in: Ensure temp files all get deleted.
2009-05-04  DavidAnderson <davea42@earthlink.net>
      * dwarf_die_deliv.c: Update _dwarf_get_size_of_val() 
        call (with its new address_size argument).
      * dwarf_frame.c: Use the new ci_address_size instead
        of de_pointer_size.
      * dwarf_frame.h: Added  ci_address_size to cie
        in preparation for this value in DWARF4.
      * dwarf_util.h: Adding address_size functions
        and arguments declarations  so address_size can vary by CU.
      * dwarf_util.c: Adding address_size functions
        and arguments so address_size can vary by CU.
      * dwarf_loc.c: Adding function dwarf_loclist_from_expr_a()
        as a version with an address size argument.
      * dwarf_frame2.c: Now initializes new ci_address_size field.
      * dwarf_line.c: Now uses address size for CU instead of
        default de_pointer_size.
      * dwarf_ranges.c: File left out of svn before.
        Implements dwarf_get_ranges() and dwarf_get_ranges_a(),
        the latter is new with address size passed in via a DIE pointer.
      * dwarf_arange.c: Added commentary. Removed erroneous
        insistence that every aranges group have the same
        address_size as the main elf object.
      * dwarf_query.c: Adding address size to internal calls.
      * dwarf_print_lines.c: Added '(file number is %d)' 
        to -l -v -v -v output as the
        file number and traditional C zero-origin index index of a 
        line table header are not the same value
        (see DWARF3 documentation, the end of section 6.2.5.3).
      * libdwarf2.1.mm: Documented dwarf_loclist_from_expr_a()
         and  dwarf_get_ranges_a().
      * libdwarf2.1.pdf: Regenerated.
      * libdwarf.h: Add commentary.
        Add   dwarf_loclist_from_expr_a() and
        dwarf_get_ranges_a() interfaces so address_size passed in.
2009-04-04  DavidAnderson <davea42@earthlink.net>
      * libdwarf.h, dwarf_frame.c: Added dwarf_set_frame_cfa_value().
        Added dwarf_set_frame_rule_initial_value() as proper
        spelling of dwarf_set_frame_rule_inital_value(), keeping
        the old spelling for compatibility.
      * libdwarf2.1.mm: Documented Added dwarf_set_frame_cfa_value(),
        corrected spelling to dwarf_set_frame_rule_initial_value().
      * libdwarf2.1.pdf: Regenerated.
      * dwarf_opaque.h: Added field de_frame_cfa_col_number so that
        we do not need to use magic macros at execution time.
      * dwarf_init_finish.c: Now sets de_frame_cfa_col_number,
        de_frame_same_value_number, and de_frame_undefined_value_number.
2009-02-02  DavidAnderson <davea42@earthlink.net>
      * dwarf.h: Added dwarf extensions reported by
        John Bishop.
2009-03-30  DavidAnderson <davea42@earthlink.net>
      * dwarf.h: Added dwarf extensions reported
        on the dwarf-workgroup mailing list by John DelSignore.
2009-03-19  DavidAnderson <davea42@earthlink.net>
      * libdwarf.h: Expanded comments.
      * dwarf_die_deliv.c: Expanded comments.
2009-03-16  DavidAnderson <davea42@earthlink.net>
      * libdwarf.h: Fixed several instances of
        inconsistent indentation. Documented arguments
	to dwarf_uncompress_integer_block().
2009-02-17  DavidAnderson <davea42@earthlink.net>
      * dwarf_print_lines.c,dwarf_line.c,dwarf_frame.c: C99-isms
        of // comments and declarations-in-code do not belong in
	libdwarf.
2009-02-14  DavidAnderson <davea42@earthlink.net>
      * libdwarf.h: Add support for compile-time definition
        of the format for Dwarf_Unsigned types.
        Using macros for DW_PR_DUx etc.
      * dwarf_print_lines.c: Use the DW_PR_DUx macros.
      * configure.in: Define --enable-nonstandardprintf
      * config.h.in: new #undef HAVE_NONSTANDARD_PRINTF_64_FORMAT
      * configure: Regenerated.
      * config.guess, config.sub: Latest version from GNU.
      * dwarf_line.c: Use the DW_PR_DUx macros.
      * dwarf_frame2.c: Use the DW_PR_DUx macros.
      * README: document --enable-nonstandardprintf

2009-02-13  DavidAnderson <davea42@earthlink.net>
      * libdwarf.h: Added argument to dwarf_print_lines()
        for better error reporting.  Added dwarf_check_lineheader()
	which allows some error reporting when not calling dwarf_print_lines().
      * dwarf_print_lines.c: Implements dwarf_check_lineheader() now.
      * dwarf_sort_line.c: Match up with new arguments to 
        dwarf_read_line_table_prefix().
      * dwarf_line.c: Implement new arguments to 
        dwarf_read_line_table_prefix() for better error reporting.
	Allow erroneous ARM-compiler line table header to be used.
      * dwarf_line.h: Adding new argument to dwarf_read_line_table_prefix
        so we can report back on minor errors in the line table prefix.
2009-01-31  DavidAnderson <davea42@earthlink.net>
      * libdwarf.h: Corrected  DW_DLE_LAST.
      * dwarf_frame.c: Remove accidental use of C99 mid-block
        variable definition.