libdw: Add new DWARF5 tag constants.
[platform/upstream/elfutils.git] / libdw / ChangeLog
1 2017-07-25  Mark Wielaard  <mark@klomp.org>
2
3         * dwarf.h: Add DW_TAG_coarray_type, DW_TAG_generic_subrange,
4         DW_TAG_dynamic_type, DW_TAG_call_site, DW_TAG_call_site_parameter,
5         DW_TAG_skeleton_unit, DW_TAG_immutable_type. Add reserved comments
6         for currently unused numbers.
7
8 2017-07-25  Mark Wielaard  <mark@klomp.org>
9
10         * dwarf.h (DWARF attributes enum): Remove DW_AT_subscr_data,
11         DW_AT_element_list and DW_AT_member. Add DWARF5 attribute constants.
12         (DW_AT_subscr_data, DW_AT_element_list, DW_AT_member): New defines.
13
14 2017-07-21  Mark Wielaard  <mark@klomp.org>
15
16         * dwarf_line_file.c: New file.
17         * Makefile.am (libdw_a_SOURCES): Add dwarf_line_file.c.
18         * libdw.h (dwarf_line_file): New function declaration.
19         * libdw.map (ELFUTILS_0.170): New. Add dwarf_line_file.
20
21 2017-02-17  Ulf Hermann  <ulf.hermann@qt.io>
22
23         * Makefile.am: Add libdw_so_LIBS to specify the archives libdw is is
24         made of, libdw_so_DEPS for libraries it depends on (including
25         libeu.a), libdw_so_LDLIBS to specify libraries libdw links against.
26         (libdw.so$(EXEEXT)): Add $(libdw_so_LDLIBS), remove enumeration of
27         library dependencies, use libdw_so_LIBS rather than relying on the
28         order of dependencies specified, add -z,relro.
29
30 2017-04-20  Ulf Hermann  <ulf.hermann@qt.io>
31
32         * libdw.h: Remove attribute macro declarations and use
33         __noreturn_attribute__ as defined in libelf.h.
34
35 2017-04-20  Ulf Hermann  <ulf.hermann@qt.io>
36
37         * dwarf_begin_elf.c: Include endian.h.
38
39 2017-03-30  Mark Wielaard  <mjw@redhat.com>
40
41         * dwarf_peel_type.c (dwarf_peel_type): Call dwarf_attr_integrate on
42         result.
43
44 2016-10-22  Mark Wielaard  <mjw@redhat.com>
45
46         * dwarf.h: Correct spelling of DW_LANG_PLI. Add compatibility define.
47         * dwarf_aggregate_size.c (array_size): Use correct spelling of
48         DW_LANG_PLI.
49
50 2016-11-02  Mark Wielaard  <mjw@redhat.com>
51
52         * cfi.c (execute_cfi): Add fallthrough comments.
53         * encoded-value.h (encoded_value_size): Add explicit return instead
54         of relying on fallthrough.
55         * dwfl_report_elf.c (__libdwfl_elf_address_range): Add fallthrough
56         comment.
57
58 2016-10-11  Akihiko Odaki  <akihiko.odaki.4i@stu.hosei.ac.jp>
59
60         * dwarf_getpubnames.c: Remove sys/param.h include, add system.h.
61         * libdw_alloc.c: Likewise.
62
63 2016-07-08  Mark Wielaard  <mjw@redhat.com>
64
65         * libdw.map (ELFUTILS_0.167): New. Add dwelf_strtab_init,
66         dwelf_strtab_add, dwelf_strtab_add_len, dwelf_strtab_finalize,
67         dwelf_strent_off, dwelf_strent_str and dwelf_strtab_free.
68
69 2016-02-13  Mark Wielaard  <mjw@redhat.com>
70
71         * dwarf_getsrclines.c (read_srclines): Calculate ndirs first, then
72         assign to ndirlist.
73
74 2015-12-18  Mark Wielaard  <mjw@redhat.com>
75
76         * libdwP.h (struct Dwarf): Remove sectiondata_gzip_mask.
77         (__libdw_free_zdata): Remove.
78         * dwarf_begin_elf.c (inflate_section): Remove.
79         (check_section): Remove __libdw_free_zdata calls. Use elf_compress
80         and elf_compress_gnu to decompress if necessary.
81         (valid_p): Remove __libdw_free_zdata calls.
82         (scngrp_read): Use elf_compress if section is compressed. Remove
83         __libdw_free_zdata calls.
84         * dwarf_end.c (__libdw_free_zdata): Remove.
85         (dwarf_end): Don't call __libdw_free_zdata.
86
87 2015-10-28  Mark Wielaard  <mjw@redhat.com>
88
89         * libdw.map (ELFUTILS_0.165): New. Add dwelf_scn_gnu_compressed_size.
90
91 2015-12-02  Mark Wielaard  <mjw@redhat.com>
92
93         * fde.c (intern_fde): Don't leak duplicate FDEs.
94
95 2015-12-01  Mark Wielaard  <mjw@redhat.com>
96
97         * fde.c (intern_fde): Don't intern an fde that doesn't cover a
98         valid code range.
99
100 2015-12-01  Mark Wielaard  <mjw@redhat.com>
101
102         * dwarf_end.c (dwarf_end): Call cu_free on fake_loc_cu if it exists.
103
104 2015-10-14  Chih-Hung Hsieh  <chh@google.com>
105
106         * dwarf_entry_breakpoints.c (dwarf_entry_breakpoints): Move recursive
107         functions 'add_bkpt', 'entrypc_bkpt', and 'search_range' to file scope.
108
109 2015-10-14  Chih-Hung Hsieh  <chh@google.com>
110
111         * libdw_visit_scopes.c (__libdw_visit_scopes): Move recursive nested
112         function 'walk_children' to file scope; inline 'recurse' at its call
113         site.
114
115 2015-10-19  Mark Wielaard  <mjw@redhat.com>
116
117         * frame-cache.c (__libdw_destroy_frame_cache): Call ebl_closebackend
118         if necessary.
119
120 2015-10-16  Dmitry V. Levin  <ldv@altlinux.org>
121
122         * dwarf_getsrclines.c (read_srclines): Initialize state early.
123
124 2015-10-13  Chih-Hung Hsieh  <chh@google.com>
125
126         * dwarf_getsrclines.c (read_srclines): Move nested functions
127         'advance_pc' and 'add_new_line' to file scope and keep many
128         local state variables within one structure.
129
130 2015-10-13  Chih-Hung Hsieh  <chh@google.com>
131
132         * dwarf_getscopevar.c (dwarf_getscopevar): Move nested
133         function 'file_matches' to file scope.
134
135 2015-10-16  Mark Wielaard  <mjw@redhat.com>
136
137         * Makefile.am (libdw.so): Add -lz.
138
139 2015-10-14  Chih-Hung Hsieh  <chh@google.com>
140
141         * cfi.c (execute_cfi): Move nested functions 'enough_registers'
142         and 'require_cfa_offset' to file scope.
143
144 2015-10-09  Josh Stone  <jistone@redhat.com>
145
146         * dwarf_begin.c (dwarf_begin): Replace stat64 and fstat64 with stat
147         and fstat.
148
149 2015-10-05  Josh Stone  <jistone@redhat.com>
150
151         * Makefile.am (libdw.so): Add AM_V_CCLD and AM_V_at silencers.
152
153 2015-09-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
154
155         * Makefile.am (AM_CFLAGS): Use -fPIC instead of -fpic to avoid
156         relocation overflows in some platforms.
157
158 2015-09-23  Mark Wielaard  <mjw@redhat.com>
159
160         * dwarf_error.c (__libdw_seterrno): Mark as internal_function.
161         * dwarf_formref.c (__libdw_formref): Likewise.
162         * libdw_findcu.c (__libdw_findcu): Likewise.
163         * libdw_visit_scopes.c (__libdw_visit_scopes): Likewise.
164
165 2015-09-22  Mark Wielaard  <mjw@redhat.com>
166
167         * *.c: Remove old-style function definitions.
168
169 2015-09-15  Mark Wielaard  <mjw@redhat.com>
170
171         * dwarf_peel_type.c (dwarf_peel_type): Don't reassign result pointer.
172
173 2015-09-09  Chih-Hung Hsieh  <chh@google.com>
174
175         * dwarf_macro_getsrcfiles.c (dwarf_macro_getsrcfiles): Remove
176         redundant NULL tests on parameters declared with __nonnull_attribute__.
177         * dwarf_siblingof.c (dwarf_siblingof): Likewise.
178         * libdw_visit_scopes.c (__libdw_visit_scopes): Likewise.
179
180 2015-09-04  Chih-Hung Hsieh  <chh@google.com>
181             Mark Wielaard  <mjw@redhat.com>
182
183         * dwarf_getlocation.c (getlocations_addr): Replace K&R function
184         definition with ansi-C definition and add const qualifier to
185         locs argument.
186
187 2015-09-04  Chih-Hung Hsieh  <chh@google.com>
188
189         * libdw_findcu.c (__libdw_intern_next_unit): Replace K&R function
190         definition with ansi-C definitions.
191         (__libdw_findcu): Likewise.
192
193 2015-08-25  Mark Wielaard  <mjw@redhat.com>
194
195         * dwarf.h: Add DW_LANG_Haskell.
196
197 2015-06-18  Mark Wielaard  <mjw@redhat.com>
198
199         * dwarf_begin_elf.c (dwarf_begin_elf): Assert page size is big enough
200         to hold a Dwarf.
201
202 2015-06-18  Mark Wielaard  <mjw@redhat.com>
203
204         * dwarf_getpubnames.c (get_offsets): Always free mem on error.
205
206 2015-06-18  Mark Wielaard  <mjw@redhat.com>
207
208         * dwarf_getmacros.c (get_macinfo_table): Return NULL when
209         dwarf_formudata reports an error.
210         (get_table_for_offset): Likewise.
211
212 2015-06-08  Mark Wielaard  <mjw@redhat.com>
213
214         * dwarf_getsrclines.c (read_srclines): Initialize dirarray early.
215
216 2015-06-06  Mark Wielaard  <mjw@redhat.com>
217
218         * dwarf_getsrclines.c (read_srclines): Initialize filelist early.
219
220 2015-05-27  Mark Wielaard  <mjw@redhat.com>
221
222         * encoded-value.h (read_encoded_value): Check data d_size contains
223         at least enough data to hold a pointer for DW_EH_PE_indirect.
224
225 2015-05-22  Mark Wielaard  <mjw@redhat.com>
226
227         * dwarf_getsrclines.c (read_srclines): Limit stack usage of lines
228         with MAX_STACK_LINES, files with MAX_STACK_LINES and dirs with
229         MAX_STACK_DIRS. Calculate number of dirs needed first, then
230         create dirarray directly, without needing the next field. Free
231         not stack allocated lines and files at the end.
232
233 2015-05-19  Mark Wielaard <mjw@redhat.com>
234
235         * dwarf_getlocation.c (__libdw_intern_expression): Create a stack
236         allocated array to hold locs. Allocate locs bigger than the array
237         with malloc and free them when done.
238
239 2015-05-11  Jonathan Lebon  <jlebon@redhat.com>
240
241         * libdwP.h (DWARF_E_COMPRESSED_ERROR): New enumerator.
242         * dwarf_error.c (errmsgs): Add DWARF_E_COMPRESSED_ERROR message.
243         * dwarf_begin_elf.c (inflate_section): New static function, lifted
244         from...
245         (check_section): ... here. Call inflate_section, set libdw errno to
246         DWARF_E_COMPRESSED_ERROR if .debug_info section couldn't be inflated.
247
248 2015-05-11  Jonathan Lebon  <jlebon@redhat.com>
249
250         * dwarf_begin_elf.c (check_section): Add compressed flag. Always
251         check for .zdebug sections. Only wrap decompression in #if USE_ZLIB.
252
253 2015-05-06  Mark Wielaard  <mjw@redhat.com>
254
255         * dwarf_getsrclines.c (read_srclines): Use an int64_t to store and
256         check the line number.
257
258 2015-05-05  Mark Wielaard  <mjw@redhat.com>
259
260         * dwarf_getaranges.c (dwarf_getaranges): Check there is enough data
261         left before reading values.
262
263 2015-05-04  Anthony G. Basile  <blueness@gentoo.org>
264
265         * Makefile.am (libdw_so_SOURCES): Append $(argp_LDADD) to link
266         command.
267
268 2015-04-22  Mark Wielaard  <mjw@redhat.com>
269
270         * memory-access.h (__libdw_max_len_leb128): Take type_len as argument.
271         (__libdw_max_len_uleb128): New function.
272         (__libdw_max_len_sleb128): Likewise.
273         (__libdw_get_uleb128): Use __libdw_max_len_uleb128.
274         (__libdw_get_sleb128): Use __libdw_max_len_sleb128.
275
276 2015-04-21  Mark Wielaard  <mjw@redhat.com>
277
278         * dwarf_getmacros.c (read_macros): Allocate attributes dynamically
279         when there are more than 8.
280
281 2015-04-01  Petr Machata  <pmachata@redhat.com>
282
283         * libdwP.h (DWARF_E_NOT_CUDIE): New enumerator.
284         (is_cudie): New function.
285         * dwarf_error.c (errmsgs): Add message for DWARF_E_NOT_CUDIE.
286         * dwarf_getsrcfiles.c (dwarf_getsrcfiles): Call is_cudie instead
287         of white-listing valid tags.
288         * dwarf_getsrclines.c (dwarf_getsrclines): Likewise.
289
290 2015-03-18  Petr Machata  <pmachata@redhat.com>
291
292         * Makefile.am (pkginclude_HEADERS): Add known-dwarf.h.
293         (EXTRA_DIST): Remove known-dwarf.h.
294
295 2015-02-09  Mark Wielaard  <mjw@redhat.com>
296
297         * dwarf.h: Add DW_LANG_Fortran03 and DW_LANG_Fortran08.
298         * dwarf_aggregate_size.c (array_size): Recognize array lower bound
299         for new Fortran language codes is 1.
300
301 2015-02-09  Mark Wielaard  <mjw@redhat.com>
302
303         * dwarf.h: Add DW_TAG_atomic_type.
304         * libdw.h (dwarf_peel_type): Document DW_TAG_atomic_type.
305         * dwarf_peel_type.c (dwarf_peel_type): Handle DW_TAG_atomic_type.
306
307 2015-02-11  Josh Stone  <jistone@redhat.com>
308
309         * encoded-value.h (read_encoded_value): Initialize value.
310
311 2015-02-11  Petr Machata  <pmachata@redhat.com>
312
313         * dwarf_ranges.c (dwarf_ranges): Do not bail out when neither
314         DW_AT_entry_pc nor DW_AT_low_pc are available.  Instead remember
315         the fact in *BASEP and bail out later if it hasn't been updated by
316         __libdw_read_begin_end_pair_inc.
317
318 2014-12-24  Mark Wielaard  <mjw@redhat.com>
319
320         * dwarf_getsrc_die.c (dwarf_getsrc_die): Return the last line record
321         smaller than or equal to addr, rather than returning immediately on
322         a match.
323
324 2015-01-07  Mark Wielaard  <mjw@redhat.com>
325
326         * cfi.h (struct Dwarf_CFI_s): Add search_table_len.
327         * dwarf_getcfi_elf.c (getcfi_gnu_eh_frame): Check there is enough
328         room in the search table for all entries. Store search_table_len.
329         (getcfi_scn_eh_frame): Likewise.
330         * encoded-value.h (encoded_value_size): Don't abort, return zero.
331         (__libdw_cfi_read_address_inc): Check there is enough room to read
332         values. Pass other byte order to read functions.
333         (read_encoded_value): Check encoded_value_size. Don't abort, but
334         set libdw errno and report failure. Check there is enough room to
335         read values.
336         * fde.c (binary_search_fde): Check encoded value size. Add hdr
337         data buf and size to dummy_cfi.
338
339 2015-01-04  Mark Wielaard  <mjw@redhat.com>
340
341         * dwarf_siblingof.c (dwarf_siblingof): Check sibling attribute
342         is after current DIE.
343
344 2015-01-04  Mark Wielaard  <mjw@redhat.com>
345
346         * cfi.c (enough_registers): Check reg < INT32_MAX / sizeof
347         (dwarf_frame_register).
348
349 2015-01-02  Mark Wielaard  <mjw@redhat.com>
350
351         * dwarf_getcfi_elf.c (parse_eh_frame_hdr): Add size check.
352         (getcfi_gnu_eh_frame): Remove size check. Check d_buf is not NULL.
353         (getcfi_scn_eh_frame): Check d_buf is not NULL.
354
355 2015-01-02  Mark Wielaard  <mjw@redhat.com>
356
357         * dwarf_getlocation.c (__libdw_intern_expression): Check dbg is not
358         NULL for DW_OP_call_ref and DW_OP_GNU_implicit_pointer. For
359         DW_OP_addr if dbg is NULL then read argument directly.
360
361 2015-01-14  Jason P. Leasure <jpleasu@super.org>
362
363         * dwarf_formref_die.c (dwarf_formref_die): Offset is cu->type_offset
364         plus cu->start.
365
366 2014-12-27  Mark Wielaard  <mjw@redhat.com>
367
368         * dwarf_siblingof.c (dwarf_siblingof): Check sibling attribute offset
369         still falls inside CU data.
370
371 2015-01-11  Mark Wielaard  <mjw@redhat.com>
372
373         * dwarf_func_inline.c (dwarf_func_inline_instances): Call
374         __libdw_visit_scopes with NULL imports.
375         * dwarf_getfuncs.c (dwarf_getfuncs): Likewise.
376         * dwarf_getscopes.c (pc_record): Likewise.
377         (dwarf_getscopes): Likewise.
378         * dwarf_getscopes_die.c (dwarf_getscopes_die): Likewise.
379         * libdwP.h (__libdw_visit_scopes): Add imports argument.
380         * libdw_visit_scopes.c (__libdw_visit_scopes): Likewise. Add new
381         function imports_contains. Push and pop imports around walk_children
382         when processing DW_TAG_imported_unit.
383
384 2014-12-18  Ulrich Drepper  <drepper@gmail.com>
385
386         * Makefile.am: Suppress output of textrel_check command.
387
388 2014-12-16  Mark Wielaard  <mjw@redhat.com>
389
390         * dwarf_getsrclines.c (read_srclines): Check diridx is valid under
391         DW_LNE_define_file.
392
393 2014-12-16  Mark Wielaard  <mjw@redhat.com>
394
395         * dwarf_getpubnames.c (dwarf_getpubnames): Make sure there is enough
396         space to read die offset.
397
398 2014-12-16  Mark Wielaard  <mjw@redhat.com>
399
400         * dwarf_getsrclines.c (read_srclines): Correct overflow check for
401         unit_length.
402
403 2014-12-15  Mark Wielaard  <mjw@redhat.com>
404
405         * dwarf_getpubnames.c (get_offsets): Make sure whole unit fall inside
406         section data. Set error to DWARF_E_NO_ENTRY if cnt is zero.
407         (dwarf_getpubnames): Make sure section data contains string zero
408         terminator.
409
410 2014-12-16  Mark Wielaard  <mjw@redhat.com>
411
412         * memory-access.h (__libdw_get_sleb128): Unroll the first step to help
413         the compiler optimize for the common single-byte case.
414
415 2014-12-15  Josh Stone  <jistone@redhat.com>
416
417         * memory-access.h (__libdw_max_len_leb128): New.
418         (__libdw_get_uleb128): Use __libdw_max_len_leb128.
419         (__libdw_get_sleb128): Likewise.
420
421 2014-12-14  Mark Wielaard  <mjw@redhat.com>
422
423         * cfi.c (execute_cfi): Add program bounds checks.
424         * dwarf_child.c (__libdw_find_attr): Add attrp bounds checks.
425         * dwarf_formblock.c (dwarf_formblock): Call get_uleb128 with endp.
426         * dwarf_formref.c (__libdw_formref): Add datap bounds checks.
427         * dwarf_formsdata.c (dwarf_formsdata): Likewise.
428         * dwarf_formudata.c (dwarf_formudata): Likewise.
429         * dwarf_frame_register.c (dwarf_frame_register): Call get_uleb128
430         with end of data buf.
431         * dwarf_getabbrev.c (__libdw_getabbrev): Add abbrevp bounds checks.
432         * dwarf_getabbrevattr.c (dwarf_getabbrevattr): Assume get_uleb128
433         call gets enough data.
434         * dwarf_getattrs,c (dwarf_getattrs): Call get_uleb128 with endp.
435         * dwarf_getlocation.c (store_implicit_value): Call get_uleb128
436         with enough data.
437         (__libdw_intern_expression): Call get_uleb128/get_sleb128 with
438         end_data.
439         * dwarf_getmacros.c (get_table_for_offset): Add nforms bounds check.
440         * dwarf_getsrclines.c (read_srclines): Bounds check linep and call
441         get_uleb128 with lineendp.
442         * dwarf_hasattr.c (dwarf_hasattr): Bounds check attrp and call
443         get_uleb128 with endp.
444         * dwarf_next_cfi.c (dwarf_next_cfi): Bounds check bytes and call
445         get_uleb128/get_sleb128 with limit.
446         * encoded-value.h (read_encoded_value): Assume get_uleb128 and
447         get_sleb128 get called with enough data.
448         * fde.c (intern_fde): Call get_uleb128 with instructions_end.
449         * libdwP.h (__libdw_dieabbrev): Call get_uleb128 with die->cu->endp.
450         * libdw_form.c (__libdw_form_val_compute_len): Call get_uleb128 with
451         endp.
452         * memory-access.h (__libdw_get_uleb128): Take an extra endp.
453         Don't call get_uleb128_step if out of data.
454         (__libdw_get_sleb128): Likewise for get_sleb128_step.
455
456 2014-12-12  Mark Wielaard  <mjw@redhat.com>
457
458         * libdwP.h (struct Dwarf): Add fake_loc_cu.
459         (cu_data): Removed.
460         (DIE_OFFSET_FROM_CU_OFFSET): Don't use cu_data, use cu_sec_idx.
461         (__libdw_form_val_compute_len): Drop dbg and endp arguments.
462         (__libdw_form_val_len): Likewise.
463         * libdw_form.c (__libdw_form_val_compute_len): Likewise.
464         * libdw_findcu.c (__libdw_intern_next_unit): Don't use cu_data, use
465         the already found data buffer directly.
466         * dwarf_begin_elf.c (valid_p): Setup fake_loc_cu.
467         * dwarf_end.c (dwarf_end): Free fake_loc_cu.
468         * dwarf_child.c (__libdw_find_attr): Call __libdw_form_val_len with
469         just cu.
470         * dwarf_getattrs.c (dwarf_getattrs): Likewise.
471         * dwarf_formblock.c (dwarf_formblock): Add bounds checking.
472         * dwarf_getlocation_attr.c (attr_form_cu): New function.
473         (dwarf_getlocation_attr): Use attr_form_cu to set result->cu.
474         (getlocation): Handle empty blocks immediately.
475         * dwarf_getlocation_implicit_pointer.c (empty_cu): New static var.
476         (__libdw_empty_loc_attr): Drop cu argument, use empty_cu.
477         (dwarf_getlocation_implicit_pointer): Call __libdw_empty_loc_attr with
478         one argument.
479         * dwarf_getmacros.c (read_macros): Also setup startp and endp for
480         fake_cu. Call __libdw_form_val_len with just fake_cu.
481         * dwarf_formref_die.c (dwarf_formref_die): Don't use cu_data, get
482         datap and size directly from cu startp and endp.
483
484 2014-12-11  Mark Wielaard  <mjw@redhat.com>
485
486         * libdw_findcu.c (__libdw_intern_next_unit): Sanity check offset.
487
488 2014-12-13  Mark Wielaard  <mjw@redhat.com>
489
490         * dwarf_getaranges.c (compare_aranges): Make sure Dwarf_Addr
491         difference doesn't wrap around before returning as int.
492
493 2014-12-11  Josh Stone  <jistone@redhat.com>
494
495         * dwarf_getsrclines.c (struct linelist): Add sequence.
496         (compare_lines): Take linelists, and break ties by sequence.
497         (read_srclines): Use linelists for sorting.
498         (read_srclines::add_new_line): Set sequence.
499
500 2014-12-10  Josh Stone  <jistone@redhat.com>
501
502         * libdwP.h (Dwarf_CU): Add startp and endp boundaries.
503         * libdw_findcu.c (__libdw_intern_next_unit): Set startp and endp.
504         * dwarf_child.c (dwarf_child): Use cu->endp.
505         * dwarf_cuoffset.c (dwarf_cuoffset): Use cu->startp.
506         * dwarf_dieoffset.c (dwarf_dieoffset): Use cu->startp.
507         * dwarf_siblingof.c (dwarf_siblingof): Use both.
508
509 2014-12-10  Josh Stone  <jistone@redhat.com>
510
511         * dwarf_hasattr.c (dwarf_hasattr): Just walk abbrev for presence.
512
513 2014-12-10  Josh Stone  <jistone@redhat.com>
514
515         * libdwP.h (__libdw_dieabbrev): New die->abbrev lookup function.
516         * dwarf_child.c (__libdw_find_attr, dwarf_child): Use it.
517         * dwarf_getattrs.c (dwarf_getattrs): Likewise.
518         * dwarf_haschildren.c (dwarf_haschildren): Likewise.
519         * dwarf_tag.c (dwarf_tag): Likewise.
520
521 2014-12-04  Mark Wielaard  <mjw@redhat.com>
522
523         * libdwP.h (__libdw_form_val_compute_len): Add endp argument.
524         (__libdw_form_val_len): Likewise and check len doesn't overflow.
525         * libdw_form.c (__libdw_form_val_compute_len): Likewise.
526         * dwarf_child.c (__libdw_find_attr): Call __libdw_form_val_len
527         with endp.
528         * dwarf_getattrs.c (dwarf_getattrs): Likewise.
529         * dwarf_getmacros.c (read_macros): Likewise and check for errors.
530
531 2014-12-02  Petr Machata  <pmachata@redhat.com>
532
533         * dwarf_getmacros.c (token_from_offset, offset_from_token): New
534         helper functions.
535         (do_dwarf_getmacros_die): Merge into dwarf_getmacros.
536         * libdw.h (DWARF_GETMACROS_START): New macro.
537
538 2014-11-27  Mark Wielaard  <mjw@redhat.com>
539
540         * Makefile.am (libdw.so): Use textrel_check.
541
542 2014-11-27  Mark Wielaard  <mjw@redhat.com>
543
544         * dwarf_getcfi_elf.c (getcfi_gnu_eh_frame): Initialize
545         search_table_entries and search_table_encoding.
546
547 2014-11-24  Mark Wielaard  <mjw@redhat.com>
548
549         * dwarf_getsrclines.c (read_srclines): Check line_range is not zero
550         before usage.
551
552 2014-11-23  Mark Wielaard  <mjw@redhat.com>
553
554         * dwarf_attr.c (dwarf_attr): Check __libdw_find_attr return value.
555         * dwarf_hasattr.c (dwarf_hasattr): Likewise.
556         * dwarf_siblingof.c (dwarf_siblingof): Likewise.
557
558 2014-11-23  Mark Wielaard  <mjw@redhat.com>
559
560         * dwarf_getabbrev.c (__libdw_getabbrev): Don't assert on bad DWARF.
561         Set libdw errno and return NULL.
562
563 2014-11-24  Mark Wielaard  <mjw@redhat.com>
564
565         * dwarf.h (DW_LANG_C_plus_plus_11): Added.
566         (DW_LANG_C11): Likewise.
567         (DW_LANG_C_plus_plus_14): Likewise.
568         * dwarf_aggregate_size.c (array_size): Handle DW_LANG_C11,
569         DW_LANG_C_plus_plus_11, DW_LANG_C_plus_plus_14 and DW_LANG_Go
570         lower bound.
571         * dwarf_getfuncs.c (dwarf_getfuncs): Set c_cu to true for
572         DW_LANG_C11.
573
574 2014-11-26  Mark Wielaard  <mjw@redhat.com>
575
576         * dwarf.h (DW_AT_noreturn): Added.
577
578 2014-11-11  Mark Wielaard  <mjw@redhat.com>
579
580         * dwarf_getsrclines.c (read_srclines): Do address_size comparison
581         explicitly as uint8_t.
582         (__libdw_getsrclines): Add internal_function to declaration.
583
584 2014-09-10  Petr Machata  <pmachata@redhat.com>
585
586         * dwarf_macro_getparamcnt.c: New file.
587         * dwarf_macro_param.c: New file.
588         * dwarf_macro_getsrcfiles.c: New file.
589         * Makefile.am (libdw_a_SOURCES): Add the new files.
590         * libdwP.h (struct files_lines_s): New structure.
591         (DWARF_E_INVALID_OPCODE): New enumerator.
592         (struct Dwarf): New fields macro_ops, files_lines.
593         (Dwarf_Macro_Op_Proto, Dwarf_Macro_Op_Table): New structures for
594         keeping macro opcode prototypes in.
595         (Dwarf_Macro_s): Redefine from scratch.
596         (__libdw_getsrclines, __libdw_getcompdir, libdw_macro_nforms): New
597         internal interfaces.
598         * dwarf_error.c (errmsgs): Add a message for
599         DWARF_E_INVALID_OPCODE.
600         * dwarf_end.c (dwarf_end): Destroy struct Dwarf.macro_ops and
601         files_lines.
602         * libdw.h (dwarf_getmacros_off, dwarf_macro_getparamcnt)
603         (dwarf_macro_getsrcfiles, dwarf_macro_param): New public
604         interfaces.
605         * dwarf_getmacros.c (dwarf_getmacros_off): New function,
606         (get_offset_from, macro_op_compare, build_table)
607         (init_macinfo_table, get_macinfo_table, get_table_for_offset)
608         (cache_op_table, read_macros, gnu_macros_getmacros_off)
609         (macro_info_getmacros_off, do_dwarf_getmacros_die): New helper
610         functions.
611         (dwarf_getmacros): Adjust to dispatch to the new interfaces.
612         * dwarf_getsrclines.c (read_srclines): New function with guts
613         taken from dwarf_getsrclines.
614         (__libdw_getsrclines): Likewise.
615         (__libdw_getcompdir, files_lines_compare): New functions.
616         (dwarf_getsrclines): Make it dispatch to the new interfaces.
617         * dwarf_macro_param1.c (dwarf_macro_param1): Adjust to dispatch to
618         the new interfaces.
619         * dwarf_macro_param2.c (dwarf_macro_param2): Likewise.
620         * libdw.map (ELFUTILS_0.161): New. Add dwarf_getmacros_off,
621         dwarf_macro_getsrcfiles, dwarf_macro_getparamcnt, dwarf_macro_param.
622
623 2014-10-06  Mark Wielaard  <mjw@redhat.com>
624
625         * Makefile.am (libdw_a_SOURCES): Add dwarf_peel_type.c.
626         * dwarf_aggregate_size.c (get_type): Use dwarf_peel_type.
627         (aggregate_size): Likewise. Add old and new version.
628         * dwarf_peel_type.c: New file.
629         * libdw.h (dwarf_peel_type): New function declaration.
630         * libdwP.h (dwarf_peel_type): New internal declaration.
631         * libdw.map (ELFUTILS_0.161): New section.
632
633 2014-10-15  Petr Machata  <pmachata@redhat.com>
634
635         * libdwP.h (struct Dwarf_Files_s.cu): Drop field.
636         * dwarf_getsrclines.c (dwarf_getsrclines): Don't set it.
637
638 2014-10-05  Mark Wielaard  <mjw@redhat.com>
639
640         * dwarf.h: Add DW_AT_GNU_deleted.
641
642 2014-10-02  Mark Wielaard  <mjw@redhat.com>
643
644         * dwarf_aggregate_size.c (aggregate_size): Return CU address_size
645         for sizeless DW_TAG_pointer_type, DW_TAG_reference_type or
646         DW_TAG_rvalue_reference_type.
647
648 2014-09-12  Petr Machata  <pmachata@redhat.com>
649
650         * memory-access.h (read_ubyte_unaligned_inc): Allow only 4- and
651         8-byte quantities.  Consequently, rename to...
652         (read_addr_unaligned_inc): ... this.
653         (read_sbyte_unaligned_inc, read_ubyte_unaligned): Drop.
654         (read_sbyte_unaligned): Drop.
655
656 2014-09-10  Petr Machata  <pmachata@redhat.com>
657
658         * dwarf_getlocation.c (attr_ok): Also accept
659         DW_AT_GNU_call_site_value, DW_AT_GNU_call_site_data_value,
660         DW_AT_GNU_call_site_target, DW_AT_GNU_call_site_target_clobbered.
661
662 2014-08-15  Mark Wielaard  <mjw@redhat.com>
663
664         * dwarf_cu_die.c: New file.
665         * Makefile.am (libdw_a_SOURCES): Add dwarf_cu_die.c.
666         * libdw.h (dwarf_cu_die): New function declaration.
667         * libdw.map (ELFUTILS_0.160): Add dwarf_cu_die.
668
669 2014-08-15  Mark Wielaard  <mjw@redhat.com>
670
671         * dwarf_cu_getdwarf.c: New file.
672         * Makefile.am (libdw_a_SOURCES): Add dwarf_cu_getdwarf.c.
673         * libdw.h (Dwarf_CU): New typedef.
674         (dwarf_cu_getdwarf): New function declaration.
675         * libdw.map (ELFUTILS_0.160): New. Add dwarf_cu_getdwarf.
676
677 2014-06-18  Mark Wielaard  <mjw@redhat.com>
678
679         * dwarf.h: Remove DW_TAG_mutable_type.
680
681 2014-05-02  Mark Wielaard  <mjw@redhat.com>
682
683         * libdwP.h (__check_build_id): Removed now unused.
684
685 2014-05-01  Mark Wielaard  <mjw@redhat.com>
686
687         * libdwP.h (struct Dwarf): Remove free_alt.
688         * dwarf_end.c (dwarf_end): Don't check free_alt, don't end alt_dwarf.
689         * dwarf_setalt.c (dwarf_setalt): Don't check or set free_alt.
690
691 2014-04-30  Mark Wielaard  <mjw@redhat.com>
692
693         * libdw.map (ELFUTILS_0.159): Add dwelf_elf_gnu_build_id.
694
695 2014-04-15  Florian Weimer  <fweimer@redhat.com>
696
697         * dwarf_begin_elf.c (__check_build_id, try_debugaltlink)
698         (open_debugaltlink): Move to libdwfl.
699         (check_section): Do not locate alternate debuginfo.
700
701 2014-04-24  Florian Weimer  <fweimer@redhat.com>
702
703         * libdw.map (ELFUTILS_0.159): Export dwelf_dwarf_gnu_debugaltlink.
704
705 2014-04-22  Florian Weimer  <fweimer@redhat.com>
706
707         * dwarf_getalt.c, dwarf_setalt.c: New files.
708         * Makefile.am (libdw_a_SOURCES): Add them.
709         * libdw.h (dwarf_getalt, dwarf_setalt): Add function declarations.
710         * libdwP.h (dwarf_getalt, dwarf_setalt): Add internal function
711         declarations.
712         * libdw.map (ELFUTILS_0.159): Export the two new functions.
713
714 2014-04-15  Florian Weimer  <fweimer@redhat.com>
715
716         * libdwP.h (enum IDX_gnu_debugaltlink): New.
717         * dwarf_begin_elf.c (dwarf_scnnames): Increase string size and add
718         .gnu_debugaltlink.
719         (check_section): Obtain .gnu_debugaltlink section from the
720         setiondata array.
721
722 2014-04-11  Mark Wielaard  <mjw@redhat.com>
723
724         * libdw.map (ELFUTILS_0.159): New. Add dwelf_elf_gnu_debuglink.
725         * Makefile.am (libdw.so): Depend on libdwelf_pic.a.
726         (libdwelf_objects): New variable.
727         (libdw_a_LIBADD): Add libdwelf objects.
728
729 2014-04-22  Mark Wielaard  <mjw@redhat.com>
730
731         * memory-access.h (get_sleb128_step): Remove undefined behavior
732         of left shifting a signed value. Replace it with a multiplication.
733
734 2014-04-13  Mark Wielaard  <mjw@redhat.com>
735
736         * Makefile.am: Remove !MUDFLAP conditions.
737
738 2014-04-09  Mark Wielaard  <mjw@redhat.com>
739
740         * dwarf_begin_elf.c (check_section): Check for unsigned overflow
741         before calling malloc to uncompress data.
742
743 2014-03-03  Jan Kratochvil  <jan.kratochvil@redhat.com>
744
745         Fix abort() on missing section headers.
746         * dwarf_begin_elf.c (check_section): Replace abort call by goto err.
747         New label err to return NULL.
748
749 2014-02-05  Josh Stone  <jistone@redhat.com>
750
751         * dwarf_decl_file.c (dwarf_decl_file): Read the idx as unsigned.
752         * dwarf_decl_line.c (__libdw_attr_intval): Read the line/column as
753         unsigned.  Change the range assert to DWARF_E_INVALID_DWARF.
754
755 2013-12-30  Mark Wielaard  <mjw@redhat.com>
756
757         * libdw.map (ELFUTILS_0.158): Add dwfl_core_file_attach and
758         dwfl_linux_proc_attach.
759
760 2013-12-20  Mark Wielaard  <mjw@redhat.com>
761
762         * libdw.map (ELFUTILS_0.158): Add dwfl_getthread_frames.
763
764 2013-12-18  Mark Wielaard  <mjw@redhat.com>
765
766         * libdw.map (ELFUTILS_0.158): Remove dwfl_module_addrsym_elf and
767         dwfl_module_getsym_elf. Add dwfl_module_addrinfo and
768         dwfl_module_getsym_info.
769
770 2013-12-16  Mark Wielaard  <mjw@redhat.com>
771
772         * libdw.map (ELFUTILS_0.158): Add dwfl_module_getsymtab_first_global.
773
774 2013-12-10  Josh Stone  <jistone@redhat.com>
775
776         * memory-access.h (get_uleb128_rest_return): Removed.
777         (get_sleb128_rest_return): Removed.
778         (get_uleb128_step): Make this a self-contained block.
779         (get_sleb128_step): Ditto, and use a bitfield to extend signs.
780         (get_uleb128): Make this wholly implemented by __libdw_get_uleb128.
781         (get_sleb128): Make this wholly implemented by __libdw_get_sleb128.
782         (__libdw_get_uleb128): Simplify and inline for all callers.
783         (__libdw_get_sleb128): Ditto.
784         * dwarf_getlocation.c (store_implicit_value): Void the unused uleb128.
785         * memory-access.c: Delete file.
786         * Makefile.am (libdw_a_SOURCES): Remove it.
787         (DEFS): Remove the now unused -DIS_LIBDW.
788
789 2013-12-09  Josh Stone  <jistone@redhat.com>
790
791         * libdw_form.c (__libdw_form_val_compute_len): Renamed function from
792         __libdw_form_val_len, now handling only non-constant form lengths.
793         * libdwP.h (__libdw_form_val_len): New inlined function.
794
795 2013-12-09  Mark Wielaard  <mjw@redhat.com>
796
797         * dwarf_getlocation.c (__libdw_intern_expression): Handle empty
798         location expressions.
799         * dwarf_getlocation_attr.c (dwarf_getlocation_attr): When no
800         location found, return empty location expression.
801         * dwarf_getlocation_implicit_pointer.c
802         (dwarf_getlocation_implicit_pointer): Likewise.
803         (__libdw_empty_loc_attr): New internal function.
804         * libdwP.h (__libdw_empty_loc_attr): Define.
805
806 2013-11-27  Mark Wielaard  <mjw@redhat.com>
807
808         * libdw.map (ELFUTILS_0.158): Add dwfl_module_addrsym_elf and
809         dwfl_module_getsym_elf.
810
811 2013-11-26  Mark Wielaard  <mjw@redhat.com>
812
813         * libdw.map (ELFUTILS_0.156): Move dwfl_attach_state, dwfl_pid,
814         dwfl_thread_dwfl, dwfl_thread_tid, dwfl_frame_thread,
815         dwfl_thread_state_registers, dwfl_thread_state_register_pc,
816         dwfl_getthreads, dwfl_thread_getframes and dwfl_frame_pc to ...
817         (ELFUTILS_0.158): ... here.
818
819 2013-11-09  Mark Wielaard  <mjw@redhat.com>
820
821         * dwarf_getaranges.c (dwarf_getaranges): Read segment_size and
822         check that it is zero.
823
824 2013-11-07  Jan Kratochvil  <jan.kratochvil@redhat.com>
825
826         * cfi.h (struct Dwarf_Frame_s): Make the comment more specific.
827         * libdw.map (ELFUTILS_0.156): Add dwfl_attach_state, dwfl_pid,
828         dwfl_thread_dwfl, dwfl_thread_tid, dwfl_frame_thread,
829         dwfl_thread_state_registers, dwfl_thread_state_register_pc,
830         dwfl_getthreads, dwfl_thread_getframes and dwfl_frame_pc.
831
832 2013-11-01  Michael Forney  <mforney@mforney.org>
833
834         * Makefile.am (libdwfl_objects): New definition.
835         (libdw_a_LIBADD): Use libdwfl_objects.
836
837 2013-11-01  Michael Forney  <mforney@mforney.org>
838
839         * Makefile.am: Use READELF.
840
841 2013-10-30  Jan Kratochvil  <jan.kratochvil@redhat.com>
842
843         * libdw.map (ELFUTILS_0.158): New.
844
845 2013-10-10  Mark Wielaard  <mjw@redhat.com>
846
847         * dwarf_getfuncs.c (struct visitor_info): Rename start_offset to
848         start_addr and rename last_offset to last_addr. Now both void *.
849         (tree_visitor): Use start_add and die_addr instead of start_offset
850         and die_offset.
851         (dwarf_getfuncs): Use last_addr instead of last_offset.
852
853 2013-10-06  Mark Wielaard  <mjw@redhat.com>
854
855         * cfi.c (execute_cfi): Make sure DW_CFA_expression and
856         DW_CFA_val_expression are not used with abi_cfi.
857
858 2013-10-03  Josh Stone  <jistone@redhat.com>
859
860         * dwarf_formref_die.c (dwarf_formref_die): Don't hash the sig8 here.
861         * libdw_findcu.c (__libdw_intern_next_unit): Since this never revisits
862         a unit, make sure to always hash the sig8 here, so none are missed.
863
864 2013-09-29  Mark Wielaard  <mjw@redhat.com>
865
866         * dwarf_getlocation.c (store_implicit_value): Cast op->number2 to
867         uintptr_t before casting to char *.
868         (__libdw_intern_expression): Cast data to uintptr_t before casting
869         to Dwarf_Word.
870         * dwarf_getlocation_attr.c (dwarf_getlocation_attr): Cast
871         op->number2 to uintptr_t before casting to char *.
872
873 2013-09-24  Josh Stone  <jistone@redhat.com>
874
875         * libdw_visit_scopes.c (classify_die): Removed.
876         (may_have_scopes): New function to replace classify_die.  There's no
877         need for full classification; just find tags that may contain scopes.
878         (__libdw_visit_scopes): Use a direct tag comparison for imported
879         units, and use may_have_scopes to test if recursion is needed.
880
881 2013-09-20  Mark Wielaard  <mjw@redhat.com>
882
883         * dwarf_getfuncs.c (visitor_info): New struct.
884         (tree_visitor): New function.
885         (dwarf_getfuncs): Use __libdw_visit_scopes with tree_visitor.
886         * libdw.h (dwarf_getfuncs): Expand function documentation.
887
888 2013-09-12  Mark Wielaard  <mjw@redhat.com>
889
890         * fde.c (intern_fde): Free fde and set libdw errno when start
891         or end could not be read.
892
893 2013-08-24  Mark Wielaard  <mjw@redhat.com>
894
895         * dwarf_getlocation.c (store_implicit_value): Don't take data
896         as argument, get block data from op number2. Return false when
897         block data length and op number don't match up.
898         (__libdw_intern_expression): Store start of block for
899         DW_OP_implicit_value and DW_OP_GNU_entry_value instead of
900         relative data offset. Also store block start (including length)
901         for DW_OP_GNU_const_type. Don't pass data to store_implicit_value.
902         * dwarf_getlocation_attr.c: New file.
903         * dwarf_getlocation_die.c: Likewise.
904         * libdw.h (dwarf_getlocation_die): New function definition.
905         (dwarf_getlocation_attr): Likewise.
906         * libdwP.h: Declare internal dwarf_getlocation_die.
907         * libdw.map (ELFUTILS_0.157): Add dwarf_getlocation_die and
908         dwarf_getlocation_attr.
909         * Makefile.am (libdw_a_SOURCES): Add dwarf_getlocation_die.c and
910         dwarf_getlocation_attr.c.
911
912 2013-08-23  Mark Wielaard  <mjw@redhat.com>
913
914         * dwarf_getlocation.c (attr_ok): Also accept DW_AT_segment.
915         (attr_base_address): New function.
916         (initial_offset_base): New function.
917         (getlocations_addr): New function. Taken from...
918         (dwarf_getlocation_addr): here. Use new initial_offset_base and
919         getlocations_addr.
920         (dwarf_getlocations): New function.
921         * libdw.h (dwarf_getlocations): New function definition.
922         * libdw.map (ELFUTILS_0.157): New.
923
924 2013-07-02  Mark Wielaard  <mjw@redhat.com>
925
926         * dwarf_getsrclines.c (dwarf_getsrclines): Add new stack allocation
927         limit MAX_STACK_ALLOC.  After MAX_STACK_ALLOC lines use malloc in
928         NEW_LINE macro.  Free malloced line records if any at the end.
929
930 2013-07-02  Mark Wielaard  <mjw@redhat.com>
931
932         * dwarf_getcfi_elf.c (getcfi_shdr): Check sh_type == SHT_PROGBITS.
933
934 2013-06-26  Mark Wielaard  <mjw@redhat.com>
935
936         * libdw_visit_scopes.c (__libdw_visit_scopes): Don't reject root
937         DIEs without children. Return an error whenever dwarf_child or
938         dwarf_siblingof return an error. Don't call recurse and increase
939         the depth for an imported unit. Walk the children of an imported
940         unit as if they are logical children of the parent root DIE.
941
942 2013-05-03  Mark Wielaard  <mjw@redhat.com>
943
944         * dwarf_getsrclines.c (dwarf_getsrclines): Only set end_sequence
945         when nlinelist > 0.
946
947 2013-04-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
948
949         * libdw.map (ELFUTILS_0.156): New.
950
951 2013-04-24  Mark Wielaard  <mjw@redhat.com>
952
953         * Makefile.am: Use AM_CPPFLAGS instead of INCLUDES.
954
955 2013-04-10  Mark Wielaard  <mjw@redhat.com>
956
957         * dwarf_formref_die.c (dwarf_formref_die): Reference size is only
958         equal to address size when we have a DW_FORM_ref_addr for DWARF
959         version 2.
960
961 2013-03-25  Mark Wielaard  <mjw@redhat.com>
962
963         * dwarf_getsrclines.c (dwarf_getsrclines): Mark highest address as
964         end_sequence.
965
966 2013-03-12  Mark Wielaard  <mjw@redhat.com>
967
968         * dwarf_getsrcfiles.c (dwarf_getsrcfiles): Allow DW_TAG_partial_unit.
969         * dwarf_getsrclines.c (dwarf_getsrclines): Likewise.
970
971 2013-02-15  Mark Wielaard  <mjw@redhat.com>
972
973         * dwarf_formstring.c (dwarf_formstring): Check dbg_ret->sectiondata,
974         not dbg->sectiondata.
975
976 2013-01-07  Roland McGrath  <roland@hack.frob.com>
977
978         * memory-access.h
979         [ALLOW_UNALIGNED] (read_8ubyte_unaligned_noncvt): New macro.
980         [!ALLOW_UNALIGNED] (read_8ubyte_unaligned_noncvt): New inline function.
981
982 2012-12-18  Mark Wielaard  <mjw@redhat.com>
983
984         * dwarf_begin_elf.c (valid_p): Call Dwarf_Sig8_Hash_free if invalid.
985         (check_section): Likewise on error.
986         (scngrp_read): Likewise.
987         (dwarf_begin_elf): Likewise.
988
989 2012-10-09  Petr Machata  <pmachata@redhat.com>
990
991         * dwarf_getlocation.c (__libdw_intern_expression): Handle
992         DW_OP_GNU_parameter_ref, DW_OP_GNU_convert, DW_OP_GNU_reinterpret,
993         DW_OP_GNU_regval_type, DW_OP_GNU_entry_value,
994         DW_OP_GNU_deref_type, DW_OP_GNU_const_type.
995
996 2012-10-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
997
998         * cfi.c: New include system.h.
999         (execute_cfi) (enough_registers): Clear new memory after realloc.
1000
1001 2012-10-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
1002
1003         * fde.c (__libdw_find_fde): Change <fde != NULL> to likely.  Return
1004         DWARF_E_NO_MATCH if .eh_frame_hdr points to FDE which is too short for
1005         searched PC.
1006
1007 2012-10-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
1008
1009         * dwarf_getlocation.c (__libdw_intern_expression) <cfap>: Make new
1010         loclist element DW_OP_call_frame_cfa before decoding the opcodes.
1011         Remove the later DW_OP_call_frame_cfa push to RESULT.
1012
1013 2012-10-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
1014
1015         Code cleanup.
1016         * fde.c (binary_search_fde): Remove always true <address >= start>
1017         conditional.  Move L initialization upwards.
1018
1019 2012-08-24  Mark Wielaard  <mjw@redhat.com>
1020
1021         * dwarf_begin_elf.c (check_section): Only probe for dwz multi files
1022         when ENABLE_DWZ is defined.
1023         * libdwP.h (__check_build_id): Only declare when ENABLE_DWZ is
1024         defined.
1025
1026 2012-08-16  Mark Wielaard  <mjw@redhat.com>
1027
1028         * Makefile.am (EXTRA_DIST): Add known-dwarf.h.
1029         * dwarf.h (DW_LANG_Go): Update comment.
1030         (DW_LANG_Mips_Assembler): Likewise.
1031
1032 2012-06-27  Mark Wielaard  <mjw@redhat.com>
1033
1034         * dwarf.h: Add DW_FORM_GNU_ref_alt and DW_FORM_GNU_strp_alt.
1035         * dwarf_begin.c (dwarf_begin): Add INTDEF.
1036         * dwarf_begin_elf.c (__check_build_id): New internal_function.
1037         (try_debugaltlink): New function.
1038         (open_debugaltlink): Likewise.
1039         (check_section): Try open_debugaltlink for .gnu_debugaltlink.
1040         * dwarf_end.c (dwarf_end): Free the alternative Dwarf descriptor if
1041         necessary.
1042         * dwarf_error.c (errmsgs): Add DWARF_E_NO_ALT_DEBUGLINK.
1043         * dwarf_formref.c (__libdw_formref): Using DW_FORM_GNU_ref_alt
1044         is an error here.
1045         * dwarf_formref_die.c (dwarf_formref_die): Handle DW_FORM_GNU_ref_alt.
1046         * dwarf_formstring.c (dwarf_formstring): Handle DW_FORM_GNU_strp_alt.
1047         * dwarf_formudata.c (__libdw_formptr): Adjust __libdw_read_offset
1048         calls.
1049         * dwarf_getpubnames.c (get_offsets): Adjust __libdw_read_offset call.
1050         * libdwP.h: Add DWARF_E_NO_ALT_DEBUGLINK.
1051         (struct Dwarf): Add alt_dwarf and free_alt fields.
1052         (__libdw_read_offset): Add dbg_ret argument, use to check with
1053         __libdw_offset_in_section.
1054         (__check_build_id): New function declaration.
1055         (dwarf_begin): Define as INTDECL.
1056         * libdw_form.c (__libdw_form_val_len): Handle DW_FORM_GNU_ref_alt
1057         and DW_FORM_GNU_strp_alt.
1058
1059 2012-07-19  Mark Wielaard  <mjw@redhat.com>
1060
1061         * dwarf.h: Add DW_OP_GNU_parameter_ref.
1062
1063 2012-07-24  Mark Wielaard  <mjw@redhat.com>
1064
1065         * dwarf.h: Correct spelling of DW_LANG_ObjC.
1066         * dwarf_aggregate_size.c (array_size): Use correct spelling of
1067         DW_LANG_ObjC.
1068
1069 2012-07-24  Mark Wielaard  <mjw@redhat.com>
1070
1071         * dwarf.h: Add DW_ATE_UTF.
1072
1073 2012-06-27  Mark Wielaard  <mjw@redhat.com>
1074
1075         * dwarf.h: Add DW_MACRO_GNU .debug_macro type encodings.
1076
1077 2012-06-26  Mark Wielaard  <mjw@redhat.com>
1078
1079         * libdwP.h: Add IDX_debug_macro.
1080         * dwarf.h: Add DW_AT_GNU_macros.
1081         * dwarf_begin_elf.c (dwarf_scnnames): Add .debug_macro.
1082         * dwarf_formudata.c (dwarf_formudata): Recognize DW_AT_GNU_macros.
1083
1084 2012-04-27  Mark Wielaard  <mjw@redhat.com>
1085
1086         * libdw/dwarf_highpc.c (dwarf_highpc): Handle DW_AT_high_pc being
1087         a constant offset from DW_AT_low_pc.
1088
1089 2012-03-19  Tom Tromey  <tromey@redhat.com>
1090
1091         * libdw_findcu.c (findcu_cb): Move earlier.
1092         (__libdw_intern_next_unit): Add new CU to search tree here...
1093         (__libdw_findcu): ... not here.
1094
1095 2012-01-31  Mark Wielaard  <mjw@redhat.com>
1096
1097         * dwarf_formudata.c (dwarf_formudata): Handle DW_FORM_sec_offset.
1098
1099 2011-11-31  Mark Wielaard  <mjw@redhat.com>
1100
1101         * Makefile.am (known-dwarf.h): Run gawk on config/known-dwarf.awk.
1102
1103 2011-07-14  Mark Wielaard  <mjw@redhat.com>
1104
1105         * libdw.h (dwarf_offdie): Fix documentation to mention .debug_info.
1106
1107 2011-05-16  Jakub Jelinek  <jakub@redhat.com>
1108
1109         * dwarf.h (DW_OP_GNU_const_type, DW_OP_GNU_regval_type,
1110         DW_OP_GNU_deref_type, DW_OP_GNU_convert, DW_OP_GNU_reinterpret):
1111         New.
1112
1113 2011-04-26  Mark Wielaard  <mjw@redhat.com>
1114
1115         * dwarf_child (dwarf_child): Sanity check end of section against
1116         cu_data () of die->cu.
1117
1118 2011-03-22  Mark Wielaard  <mjw@redhat.com>
1119
1120         * dwarf.h: Add DW_TAG_GNU_call_site,
1121         DW_TAG_GNU_call_site_parameter,
1122         DW_AT_GNU_call_site_value,
1123         DW_AT_GNU_call_site_data_value,
1124         DW_AT_GNU_call_site_target,
1125         DW_AT_GNU_call_site_target_clobbered,
1126         DW_AT_GNU_tail_call,
1127         DW_AT_GNU_all_tail_call_sites,
1128         DW_AT_GNU_all_call_sites,
1129         DW_AT_GNU_all_source_call_sites,
1130         and DW_OP_GNU_entry_value.
1131
1132 2011-03-10  Petr Machata  <pmachata@redhat.com>
1133
1134         * libdw/dwarf_tag.c (__libdw_findabbrev): Reject requests for
1135         abbreviation with code 0.
1136
1137 2011-03-09  Petr Machata  <pmachata@redhat.com>
1138
1139         * libdw/dwarf_child.c (dwarf_child): Check for section overrun.
1140
1141 2011-02-23  Roland McGrath  <roland@redhat.com>
1142
1143         * libdwP.h (struct Dwarf) [USE_ZLIB]: New member sectiondata_gzip_mask.
1144         Declare __libdw_free_zdata.
1145         * dwarf_end.c [USE_ZLIB] (__libdw_free_zdata): New function.
1146         (dwarf_end): Call it.
1147
1148         * dwarf_begin_elf.c (valid_p): Likewise.
1149         (check_section, scngrp_read): Likewise.
1150         (check_section) [USE_ZLIB]: Grok .z* flavors of sections.
1151
1152 2010-10-13  Roland McGrath  <roland@redhat.com>
1153
1154         * dwarf.h: Add DW_LANG_Go.
1155
1156 2010-10-05  Roland McGrath  <roland@redhat.com>
1157
1158         * dwarf_getaranges.c: Use malloc rather than alloca,
1159         since the total number of elements can be quite huge.
1160
1161 2010-07-26  Roland McGrath  <roland@redhat.com>
1162
1163         * dwarf_getlocation_implicit_pointer.c: New file.
1164         * Makefile.am (libdw_a_SOURCES): Add it.
1165         * libdw.map (ELFUTILS_0.149): New set.
1166         Add dwarf_getlocation_implicit_pointer.
1167         * libdw.h: Declare it.
1168
1169         * dwarf_offdie.c (do_offdie): Renamed to __libdw_offdie, made global.
1170         (dwarf_offdie, dwarf_offdie_types): Update callers.
1171         * libdwP.h: Declare it.
1172
1173         * dwarf.h: Add DW_OP_GNU_implicit_pointer.
1174         * dwarf_getlocation.c (__libdw_intern_expression): Handle it.
1175
1176 2010-08-24  Roland McGrath  <roland@redhat.com>
1177
1178         * libdw.map (ELFUTILS_0.149): New set.  Add dwfl_dwarf_line.
1179
1180 2010-07-27  Roland McGrath  <roland@redhat.com>
1181
1182         * dwarf_formref_die.c: Fix sig8 hash insertion.
1183
1184 2010-06-23  Roland McGrath  <roland@redhat.com>
1185
1186         * cfi.c (dwarf_cfi_validate_fde): Function removed.
1187         * libdw.h: Remove it.
1188         * libdw.map: Likewise.
1189
1190 2010-06-22  Roland McGrath  <roland@redhat.com>
1191
1192         * dwarf_getlocation.c (check_constant_offset): data[48] are constant.
1193
1194         * dwarf_getsrclines.c: Fix signed comparison warning in extended
1195         opcode parsing.
1196
1197 2010-06-21  Roland McGrath  <roland@redhat.com>
1198
1199         * dwarf.h: Add DW_TAG_GNU_* constants.
1200
1201         * memory-access.h (get_sleb128_rest_return): Fix sign extension for
1202         10-byte case.
1203
1204 2010-06-20  Roland McGrath  <roland@redhat.com>
1205
1206         * libdw_findcu.c (__libdw_findcu): Take new flag argument,
1207         to search TUs instead of CUs.
1208         * libdwP.h: Update decl.
1209         (struct Dwarf): New member tu_tree.
1210         * dwarf_end.c (dwarf_end): Clean up tu_tree.
1211         * dwarf_offdie.c (do_offdie): New function, broken out of ...
1212         (dwarf_offdie): ... here.
1213         (dwarf_offdie_types): New function.
1214         * libdw.h: Declare it.
1215         * libdw.map (ELFUTILS_0.148): Add it.
1216
1217         * libdwP.h (CUDIE): Use cu_data.
1218         * dwarf_formblock.c: Likewise.
1219         * dwarf_formref_die.c: Likewise.
1220         * dwarf_diecu.c: Use CUDIE macro.
1221         * dwarf_formaddr.c: Use cu_sec_idx.
1222
1223 2010-06-16  Roland McGrath  <roland@redhat.com>
1224
1225         * dwarf_formref_die.c: Use dwarf_offdie only for DW_FORM_ref_addr, so
1226         we don't repeat a CU lookup we've already done.  Handle
1227         DW_FORM_ref_sig8 using sig8_hash table and __libdw_intern_next_unit.
1228
1229         * libdw_findcu.c (__libdw_intern_next_unit): New function,
1230         broken out of ...
1231         (__libdw_findcu): ... here.  Call it.
1232         * libdwP.h: Declare it.
1233         (struct Dwarf): New member next_tu_offset.
1234
1235         * dwarf_sig8_hash.c: New file.
1236         * dwarf_sig8_hash.h: New file.
1237         * Makefile.am (libdw_a_SOURCES, noinst_HEADERS): Add them.
1238         * dwarf_abbrev_hash.c: Include dwarf_sig8_hash.h before
1239         defining NO_UNDEF.
1240         * libdwP.h (struct Dwarf): New member sig8_hash.
1241         * dwarf_begin_elf.c: Call Dwarf_Sig8_Hash_init on it.
1242         * dwarf_end.c: Call Dwarf_Sig8_Hash_free on it.
1243
1244         * dwarf_nextcu.c (dwarf_next_unit): New function, broken out of ...
1245         (dwarf_nextcu): ... here.  Call it.
1246         * libdw.h: Declare it.
1247         * libdwP.h: Add INTDECL.
1248         * libdw_findcu.c (__libdw_findcu): Use it instead of dwarf_nextcu.
1249         * libdw.map (ELFUTILS_0.148): New set, add dwarf_next_unit.
1250
1251         * libdwP.h (cu_sec_idx, cu_data): New functions.
1252         Use .debug_types when CU is a TU.
1253         * dwarf_cuoffset.c: Use that instead of assuming IDX_debug_info.
1254         * dwarf_siblingof.c: Likewise.
1255         * dwarf_formstring.c: Likewise.
1256         * dwarf_formudata.c (__libdw_formptr, dwarf_formudata): Likewise.
1257         * dwarf_getlocation.c (dwarf_getlocation): Likewise.
1258         (dwarf_getlocation_addr): Likewise.
1259
1260         * libdwP.h (struct Dwarf_CU): Add new members type_offset, type_sig8.
1261         (DIE_OFFSET_FROM_CU_OFFSET): Take flag argument; if true, compute
1262         .debug_types header size instead of .debug_info header size.
1263         (CUDIE): Use it.
1264         * dwarf_diecu.c: Update caller.
1265         * dwarf_getaranges.c: Likewise.
1266         * dwarf_nextcu.c: Likewise.
1267         * libdw_findcu.c (__libdw_findcu): Initialize new members.
1268
1269         * fde.c (fde_by_offset): Renamed to ...
1270         (__libdw_fde_by_offset): ... this, made global and internal_function.
1271         Don't take ADDRESS argument.
1272         (__libdw_find_fde): Update caller.  Do address sanity check here.
1273         * cfi.h: Declare __libdw_fde_by_offset.
1274         * cfi.c (dwarf_cfi_validate_fde): New function.
1275         * libdw.h: Declare it.
1276         * libdw.map (ELFUTILS_0.148): Add it.
1277
1278         * cie.c (intern_new_cie): Canonicalize DW_EH_PE_absptr FDE encoding to
1279         either DW_EH_PE_udata8 or DW_EH_PE_udata4.
1280
1281         * encoded-value.h (read_encoded_value): Handle DW_EH_PE_indirect.
1282         Don't assume DW_EH_PE_aligned refers to native address size.
1283
1284         * cfi.c (execute_cfi): Barf on CIE initial instructions changing the
1285         address.
1286
1287 2010-06-17  Roland McGrath  <roland@redhat.com>
1288
1289         * libdwP.h (struct Dwarf_Line_s): Add members isa, discriminator, and
1290         op_index.
1291         * dwarf_getsrclines.c (dwarf_getsrclines): Move NEW_FILE macro guts
1292         into an inner inline function.  Set new fields.  Check all fields for
1293         overflow when setting.
1294         * dwarf_lineisa.c: New file.
1295         * dwarf_linediscriminator.c: New file.
1296         * dwarf_lineop_index.c: New file.
1297         * Makefile.am (libdw_a_SOURCES): Add them.
1298         * libdw.map (ELFUTILS_0.148): Add them.
1299         * libdw.h: Declare them.
1300
1301 2010-06-16  Roland McGrath  <roland@redhat.com>
1302
1303         * dwarf_next_cfi.c: Fix version 4 return_address_register decoding.
1304
1305         * fde.c (fde_by_offset): Renamed to ...
1306         (__libdw_fde_by_offset): ... this, made global and internal_function.
1307         Don't take ADDRESS argument.
1308         (__libdw_find_fde): Update caller.  Do address sanity check here.
1309         * cfi.h: Declare __libdw_fde_by_offset.
1310         * cfi.c (dwarf_cfi_validate_fde): New function.
1311         * libdw.h: Declare it.
1312         * libdw.map (ELFUTILS_0.148): Add it.
1313
1314         * cie.c (intern_new_cie): Canonicalize DW_EH_PE_absptr FDE encoding to
1315         either DW_EH_PE_udata8 or DW_EH_PE_udata4.
1316
1317         * encoded-value.h (read_encoded_value): Handle DW_EH_PE_indirect.
1318         Don't assume DW_EH_PE_aligned refers to native address size.
1319
1320         * cfi.c (execute_cfi): Barf on CIE initial instructions changing the
1321         address.
1322
1323 2010-06-15  Roland McGrath  <roland@redhat.com>
1324
1325         * dwarf_formref.c (__libdw_formref): Diagnose DW_FORM_ref_sig8 like
1326         DW_FORM_ref_addr.
1327         * dwarf_formref_die.c (dwarf_formref_die): Diagnose it the same way
1328         here, since we don't support it yet.
1329
1330         * dwarf_next_cfi.c: Handle version 4 format.
1331
1332         * dwarf_getsrclines.c: Handle version 4 format.
1333
1334 2010-06-01  Roland McGrath  <roland@redhat.com>
1335
1336         * libdwP.h: Remove unused IDX_debug_*names, add IDX_debug_types.
1337         * dwarf_begin_elf.c (dwarf_scnnames): Likewise.
1338
1339         * libdwP.h (CIE_VERSION): Remove unused macro.
1340
1341         * dwarf_getsrclines.c: Fix version field test.
1342         * libdwP.h (DWARF_VERSION): Remove useless macro.
1343
1344         * dwarf_formudata.c (__libdw_formptr): Fix DW_FORM_sec_offset handling.
1345
1346         * dwarf_formblock.c (dwarf_formblock): Handle DW_FORM_exprloc.
1347
1348         * libdw_findcu.c (__libdw_findcu): Accept version 4.
1349
1350 2010-05-31  Mark Wielaard  <mjw@redhat.com>
1351
1352         * cfi.h (dwarf_cfi_cie_p): Move definition from here, to ..
1353         * libdw.h (dwarf_cfi_cie_p): ... here.
1354
1355 2010-05-31  Mark Wielaard  <mjw@redhat.com>
1356
1357         * dwarf.h: Fix DW_LANG_Python constant.
1358
1359 2010-05-28  Eduardo Santiago  <santiago@redhat.com>
1360
1361         * dwarf_getlocation.c (dwarf_getlocation): Do attr_ok check first
1362         thing.
1363
1364 2010-05-27  Roland McGrath  <roland@redhat.com>
1365
1366         * dwarf.h: Add DW_AT_enum_class, DW_AT_linkage_name,
1367         DW_TAG_template_alias, DW_LANG_Python, DW_LNE_set_discriminator.
1368
1369 2010-05-08  Roland McGrath  <roland@redhat.com>
1370
1371         * dwarf_getlocation.c (__libdw_intern_expression): Take new argument
1372         REF_SIZE.  Use that to handle DW_OP_call_ref correctly.
1373         (getlocation): Update caller.
1374         * dwarf_frame_cfa.c (dwarf_frame_cfa): Likewise.
1375         * dwarf_frame_register.c (dwarf_frame_register): Likewise.
1376         * libdwP.h: Update decl.
1377
1378 2010-04-26  Roland McGrath  <roland@redhat.com>
1379
1380         * cfi.h (struct Dwarf_Frame_s): Add cfa_invalid alternative in cfa_rule.
1381         * cfi.c (execute_cfi): Set that instead of doing cfi_assert for
1382         DW_CFA_def_cfa_{offset*,register} when a non-offset rule is in force.
1383         * dwarf_frame_cfa.c (dwarf_frame_cfa): Handle cfa_invalid.
1384
1385         * dwarf_getlocation.c (__libdw_intern_expression): Take new arg CFAP.
1386         Prepend DW_OP_call_frame_cfa if true.
1387         (getlocation): Update caller.
1388         * dwarf_frame_cfa.c (dwarf_frame_cfa): Likewise.
1389         * dwarf_frame_register.c (dwarf_frame_register): Likewise.
1390         * libdwP.h: Update decl.
1391
1392 2010-04-22  Roland McGrath  <roland@redhat.com>
1393
1394         * cfi.c (execute_cfi): Never return without cleanup.
1395         Free FS on failure.
1396         (cie_cache_initial_state): Adjust caller to expect that free.
1397         (__libdw_frame_at_address): Likewise.
1398
1399 2010-03-10  Roland McGrath  <roland@redhat.com>
1400
1401         * libdw.map (ELFUTILS_0.146): New set.  Add dwfl_core_file_report.
1402
1403 2010-02-15  Roland McGrath  <roland@redhat.com>
1404
1405         * Makefile.am: Use config/eu.am for common stuff.
1406
1407 2010-02-02  Mark Wielaard  <mjw@redhat.com>
1408
1409         * fde.c (intern_fde): Fix length check for sized_augmentation_data.
1410
1411 2010-01-07  Roland McGrath  <roland@redhat.com>
1412
1413         * dwarf_getcfi_elf.c (getcfi_phdr): Use elf_getphdrnum.
1414
1415 2010-01-05  Roland McGrath  <roland@redhat.com>
1416
1417         * dwarf_aggregate_size.c: New file.
1418         * Makefile.am (libdw_a_SOURCES): Add it.
1419         * libdw.h: Declare it.
1420         * libdwP.h: Add INTDECL.
1421         * libdw.map (ELFUTILS_0.144): New set.  Add dwarf_aggregate_size.
1422
1423         * dwarf_srclang.c: Add INTDEF.
1424         * libdwP.h: Add INTDECL.
1425
1426         * dwarf.h: Add some more DW_AT_GNU_* types from gcc.
1427
1428         * dwarf.h: Add DW_AT_GNU_vector, DW_AT_GNU_template_name.
1429
1430 2009-11-21  Roland McGrath  <roland@redhat.com>
1431
1432         * dwarf_getlocation.c (check_constant_offset): Return 1 for all
1433         non-constant forms.
1434
1435 2009-10-15  Roland McGrath  <roland@redhat.com>
1436
1437         * libdw_form.c (__libdw_form_val_len): Grok DW_FORM_sec_offset,
1438         DW_FORM_exprloc, DW_FORM_flag_present, and DW_FORM_ref_sig8.
1439
1440 2009-09-17  Roland McGrath  <roland@redhat.com>
1441
1442         * dwarf_getlocation.c (dwarf_getlocation_implicit_value): Make OP
1443         argument a pointer to const.
1444         * libdw.h: Update decl.
1445
1446 2009-09-10  Roland McGrath  <roland@redhat.com>
1447
1448         * dwarf_getlocation.c (store_implicit_value): New function.
1449         (__libdw_intern_expression): Use it, handle DW_OP_implicit_value.
1450         (dwarf_getlocation_implicit_value): New function.
1451         * libdw.h: Declare it.
1452         * libdw.map (ELFUTILS_0.143): Add it.
1453
1454 2009-09-09  Mark Wielaard  <mjw@redhat.com>
1455
1456         * dwarf_getcfi.c (dwarf_getcfi): Clear cfi->ebl.
1457
1458 2009-08-21  Josh Stone  <jistone@redhat.com>
1459
1460         * dwarf_hasattr_integrate.c: Integrate DW_AT_specification too.
1461
1462 2009-08-10  Roland McGrath  <roland@redhat.com>
1463
1464         * dwarf_getscopevar.c: Use dwarf_diename.
1465
1466 2009-08-09  Roland McGrath  <roland@redhat.com>
1467
1468         * libdw.map (ELFUTILS_0.143): New version set,
1469         inherits from ELFUTILS_0.142.
1470         * dwarf_arrayorder.c: Use OLD_VERSION and NEW_VERSION to define an
1471         alias in the ELFUTILS_0.122 version set and the default in the new set.
1472         * dwarf_srclang.c: Likewise.
1473         * dwarf_decl_file.c: Likewise.
1474         * dwarf_decl_line.c: Likewise.
1475         * dwarf_decl_column.c: Likewise.
1476         * dwarf_bytesize.c: Likewise.
1477         * dwarf_bitsize.c: Likewise.
1478         * dwarf_bitoffset.c: Likewise.
1479
1480 2009-08-07  Roland McGrath  <roland@redhat.com>
1481
1482         * dwarf_arrayorder.c: Use dwarf_attr_integrate.
1483         * dwarf_srclang.c: Likewise.
1484         * dwarf_decl_file.c: Likewise.
1485         * dwarf_decl_line.c (__libdw_attr_intval): Likewise.
1486         * dwarf_bytesize.c: Likewise.
1487         * dwarf_bitsize.c: Likewise.
1488         * dwarf_bitoffset.c: Likewise.
1489
1490 2009-07-22  Roland McGrath  <roland@redhat.com>
1491
1492         * dwarf_frame_cfa.c: Change calling convention.
1493         * libdw.h: Update decl.
1494
1495         * dwarf_frame_register.c: Change calling/return-value convention for
1496         value-only results and undefined/same_value.
1497         * libdw.h: Update decl.
1498
1499         * dwarf_getlocation.c (__libdw_intern_expression): Take new bool
1500         argument, append DW_OP_stack_value if set.  Don't take NOPS argument,
1501         return that value instead.
1502         (getlocation): Update caller.
1503         * dwarf_frame_cfa.c: Likewise.
1504         * libdwP.h: Update decl.
1505
1506 2009-07-21  Roland McGrath  <roland@redhat.com>
1507
1508         * dwarf_getsrc_file.c: Ignore a CU that just has no DW_AT_stmt_list.
1509         Fix loop iteration after skipping a bogus or useless CU.
1510
1511         * dwarf_entry_breakpoints.c: Handle 0 dwarf_errno () as harmless
1512         absence, not DWARF_E_NO_DEBUG_LINE.
1513
1514 2009-07-20  Roland McGrath  <roland@redhat.com>
1515
1516         * dwarf_getlocation.c (__libdw_intern_expression):
1517         Handle DW_OP_stack_value.
1518
1519 2009-07-16  Roland McGrath  <roland@redhat.com>
1520
1521         * dwarf_formudata.c (__libdw_formptr): Handle DW_FORM_sec_offset,
1522         reject others when CU's version > 3.
1523
1524         * dwarf_formflag.c: Handle DW_FORM_flag_present.
1525
1526         * dwarf.h: Add DW_OP_{implicit,stack}_value from DWARF 4 draft.
1527         Also DW_TAG_type_unit and DW_TAG_rvalue_reference_type.
1528         Also DW_AT_signature, DW_AT_main_subprogram, DW_AT_data_bit_offset,
1529         and DW_AT_const_expr.
1530         Also DW_FORM_sec_offset, DW_FORM_exprloc, DW_FORM_flag_present,
1531         and DW_FORM_ref_sig8.
1532
1533 2009-07-15  Roland McGrath  <roland@redhat.com>
1534
1535         * dwarf_getlocation.c: Grok DW_OP_form_tls_address,
1536         DW_OP_GNU_push_tls_address, and DW_OP_bit_piece.
1537
1538 2009-07-13  Roland McGrath  <roland@redhat.com>
1539
1540         * dwarf_getlocation.c: Grok DW_OP_call_frame_cfa.
1541
1542 2009-07-08  Roland McGrath  <roland@redhat.com>
1543
1544         * libdw.map (ELFUTILS_0.142): Add dwfl_module_dwarf_cfi,
1545         dwfl_module_eh_cfi.
1546
1547         * libdwP.h (struct Dwarf): Add member `cfi'.
1548         * dwarf_end.c (dwarf_end): Call __libdw_destroy_frame_cache on it.
1549         * dwarf_getcfi.c: New file.
1550         * dwarf_getcfi_elf.c: New file.
1551         * dwarf_cfi_end.c: New file.
1552         * dwarf_cfi_addrframe.c: New file.
1553         * dwarf_frame_cfa.c: New file.
1554         * dwarf_frame_register.c: New file.
1555         * dwarf_frame_return_address_register.c: New file.
1556         * Makefile.am (libdw_a_SOURCES): Add them.
1557         * unwind.h: Declare those functions.
1558         * libdw.map (ELFUTILS_0.142): Export them.
1559
1560         * dwarf_getlocation.c (__libdw_intern_expression): New function,
1561         broken out of ...
1562         (getlocation): ... here, call it.
1563         * libdwP.h: Declare it.
1564
1565         * cie.c: New file.
1566         * fde.c: New file.
1567         * frame-cache.c: New file.
1568         * cfi.c: New file.
1569         * cfi.h: New file.
1570         * encoded-value.h: New file.
1571         * Makefile.am (libdw_a_SOURCES, noinst_HEADERS): Add them.
1572         * libdwP.h: Add DWARF_E_INVALID_CFI to errors enum.
1573         * dwarf_error.c (errmsgs): Add element for it.
1574
1575         * dwarf_next_cfi.c: New file.
1576         * Makefile.am (libdw_a_SOURCES): Add it.
1577         * libdw.h (Dwarf_CIE, Dwarf_FDE, Dwarf_CIE_Entry): New types.
1578         Declare dwarf_next_cfi.
1579         * libdw.map (ELFUTILS_0.142): New set, inherits from ELFUTILS_0.136.
1580         Add dwarf_next_cfi.
1581
1582         * memory-access.h [! ALLOW_UNALIGNED]
1583         (read_2ubyte_unaligned): Renamed to ...
1584         (read_2ubyte_unaligned_1): ... this.  Take bool rather than Dwarf *.
1585         (read_2ubyte_unaligned): Define as macro passing dbg->other_byte_order.
1586         (read_2sbyte_unaligned): Likewise.
1587         (read_4ubyte_unaligned): Likewise.
1588         (read_4sbyte_unaligned): Likewise.
1589         (read_8ubyte_unaligned): Likewise.
1590         (read_8sbyte_unaligned): Likewise.
1591
1592         * libdwP.h (IDX_eh_frame): Remove it.
1593         * dwarf_begin_elf.c (dwarf_scnnames): Remove its element.
1594
1595 2009-07-08  Roland McGrath  <roland@redhat.com>
1596
1597         * libdwP.h (struct Dwarf_Line_s): Reorder members to pack better.
1598
1599         * dwarf_getlocation.c (check_constant_offset): New function.
1600         (dwarf_getlocation, dwarf_getlocation_addr): Call it to
1601         handle DW_AT_data_member_location of data[48] as constant offset.
1602
1603 2009-06-18  Roland McGrath  <roland@redhat.com>
1604
1605         * libdwP.h (__libdw_read_address_inc): Constify.
1606         (__libdw_read_offset_inc): Likewise.
1607         * dwarf_getaranges.c: Likewise.
1608         * dwarf_getlocation.c: Likewise.
1609         * dwarf_getsrclines.c: Likewise.
1610         * dwarf_nextcu.c: Likewise.
1611
1612 2009-05-05  Petr Machata  <pmachata@redhat.com>
1613
1614         * libdwP.h (__libdw_formptr): Declare new function.
1615         * dwarf_formudata.c: Implement it here.
1616         * dwarf_getlocation.c (dwarf_getlocation_addr):
1617         Call it instead of hand-rolled offset handling code.
1618         * dwarf_getsrclines.c (dwarf_getsrclines): Likewise.
1619         * dwarf_ranges.c (dwarf_ranges): Likewise.
1620
1621 2009-05-04  Petr Machata  <pmachata@redhat.com>
1622
1623         * libdwP.h (__libdw_read_begin_end_pair_inc): Declare new function.
1624         * dwarf_ranges.c: Implement it here.
1625         (dwarf_ranges): Call it.
1626         * dwarf_getlocation.c (dwarf_getlocation_addr): Call it also here.
1627
1628 2009-04-23  Petr Machata  <pmachata@redhat.com>
1629
1630         * dwarf_formaddr.c (dwarf_formaddr): Call __libdw_read_* instead
1631         of read_*ubyte_unaligned.
1632         * dwarf_formref_die.c (dwarf_formref_die): Likewise.
1633         * dwarf_formstring.c (dwarf_formstring): Likewise.
1634         * dwarf_formudate.c (dwarf_formudata): Likewise.
1635         * dwarf_getaranges.c (dwarf_getaranges): Likewise.
1636         * dwarf_getlocation.c (dwarf_getlocation_addr): Likewise.
1637         * dwarf_getpubnames.c (get_offsets): Likewise.
1638         * dwarf_nextcu.c (dwarf_nextcu): Likewise.
1639
1640 2009-04-23  Petr Machata  <pmachata@redhat.com>
1641
1642         * libdwP.h (__libdw_read_addr_inc, __libdw_read_off_inc,
1643         __libdw_read_addr, __libdw_read_off): Add four new internal
1644         functions.
1645
1646 2009-05-07  Roland McGrath  <roland@redhat.com>
1647
1648         * dwarf_getmacros.c (dwarf_getmacros): Use absolute section offset in
1649         return value and OFFSET argument, not CU-relative.  Only fetch the
1650         attribute data when called with OFFSET of 0.
1651
1652 2009-05-07  Petr Machata  <pmachata@redhat.com>
1653
1654         * dwarf_getmacros.c (dwarf_getmacros): Take into account offset in
1655         DW_AT_macro_info attribute of CU DIE.
1656
1657 2009-04-15  Roland McGrath  <roland@redhat.com>
1658
1659         * dwarf.h (DW_CIE_ID): Removed.
1660         (DW_CIE_ID_32, DW_CIE_ID_64): New constants replace it.
1661
1662 2009-04-01  Roland McGrath  <roland@redhat.com>
1663
1664         * dwarf.h: Add DW_CFA_GNU_negative_offset_extended.
1665
1666 2009-01-28  Roland McGrath  <roland@redhat.com>
1667
1668         * libdwP.h (struct Dwarf_Line_s): Move out of struct Dwarf_Lines_s
1669         defn so C++ doesn't scope the name to not match the Dwarf_Line typedef.
1670
1671         * libdwP.h (struct Dwarf_Files_s): Replace dbg field with cu field.
1672
1673 2009-01-26  Roland McGrath  <roland@redhat.com>
1674
1675         * dwarf_ranges.c: Return 0 when no ranges or *_pc attrs at all.
1676
1677 2009-01-25  Roland McGrath  <roland@redhat.com>
1678
1679         * dwarf_getattrs.c: Correctly skip attribute values when restarting.
1680
1681 2009-01-23  Roland McGrath  <roland@redhat.com>
1682
1683         * Makefile.am ($(srcdir)/known-dwarf.h): Target renamed back.
1684         Put these rules under if MAINTAINER_MODE.
1685
1686 2009-01-22  Roland McGrath  <roland@redhat.com>
1687
1688         * dwarf.h: Add DW_OP_GNU_encoded_addr.
1689
1690 2009-01-21  Roland McGrath  <roland@redhat.com>
1691
1692         * Makefile.am (CLEANFILES): Renamed to ...
1693         (MOSTLYCLEANFILES): ... here.
1694         (CLEANFILES): New variable, add known-dwarf.h.
1695
1696 2009-01-17  Roland McGrath  <roland@redhat.com>
1697
1698         * Makefile.am (known-dwarf.h): Target renamed, not in $(srcdir).
1699         Make it unconditional.
1700         (BUILT_SOURCES): Updated.
1701
1702         * dwarf.h: Add description comments for DW_LANG_* values.
1703
1704         * Makefile.am [MAINTAINER_MODE]
1705         ($(srcdir)/known-dwarf.h): New target.
1706         (BUILT_SOURCES): Add it.
1707
1708         * dwarf.h: Add DW_OP_GNU_push_tls_address, DW_OP_GNU_uninit.
1709
1710 2009-01-10  Ulrich Drepper  <drepper@redhat.com>
1711
1712         * dwarf_error.c: Always use __thread.  Remove all !USE_TLS code.
1713
1714 2009-01-08  Roland McGrath  <roland@redhat.com>
1715
1716         * Makefile.am (libdw.so): Don't depend on $(zip_LIBS), just link it in.
1717
1718 2008-01-06  Roland McGrath  <roland@redhat.com>
1719
1720         * libdwP.h (struct Dwarf_Abbrev): Change type of 'has_children' to bool.
1721         Reorder members.
1722         * dwarf_haschildren.c: Return -1 for error case, not 0.
1723
1724         * Makefile.am (libdw.so): Link in $(zip_LIBS).
1725
1726 2009-01-06  Ulrich Drepper  <drepper@redhat.com>
1727
1728         * dwarf.h: Add definition for unwind and call frame information.
1729
1730         * memory-access.h: Define read_ubyte_unaligned, read_sbyte_unaligned,
1731         read_ubyte_unaligned_inc, and read_sbyte_unaligned_inc.
1732
1733 2008-08-15  Roland McGrath  <roland@redhat.com>
1734
1735         * libdw.map (ELFUTILS_0.136): New version set, inherits from
1736         ELFUTILS_0.130.  Add dwfl_addrsegment, dwfl_report_segment.
1737
1738 2008-01-21  Ulrich Drepper  <drepper@redhat.com>
1739
1740         * dwarf_child.c: Minor optimizations.
1741         * dwarf_getattrs.c: Likewise.
1742         * dwarf_getpubnames.c: Likewise.
1743         * dwarf_siblingof.c: Likewise.
1744         * dwarf_tag.c: Likewise.
1745
1746 2008-01-18  Ulrich Drepper  <drepper@redhat.com>
1747
1748         * dwarf_getsrclines.c (dwarf_getsrclines): Don't require exact match
1749         of DWARF_VERSION comparison, just fail if the file's version is newer.
1750
1751 2008-01-17  Nick Clifton  <nickc@redhat.com>
1752
1753         * dwarf.h (DWARF3_LENGTH_MIN_ESCAPE_CODE): New define.
1754         (DWARF3_LENGTH_MAX_ESCAPE_CODE): New define.
1755         (DWARF3_LENGTH_64_BIT): New define.
1756         * dwarf_getaranges (dwarf_getaranges): Use the new definitions.
1757         * dwarf_getpubnames: Include dwarf.h.
1758         (get_offsets): Use the new definitions.
1759         * dwarf_getsrclines.c (dwarf_getsrclines): Use the new defintions.
1760         * dwarf_nextcu.c: Include dwarf.h.  Correct comment.
1761         (dwarf_nextcu): Use the new definitions.
1762
1763         * libdwP.h (DIE_OFFSET_FROM_CU_OFFSET): New macro.
1764         * dwarf_diecu.c (dwarf_diecu): Use the new macro.
1765         * dwarf_getaranges (dwarf_getaranges): Use the new macro.
1766         * dwarf_nextcu.c (dwarf_nextcu): Use the new macro.
1767
1768         * dwarf_getpubnames (get_offsets): Replace assertion with test and
1769         error return.
1770
1771         * dwarf_entry_breakpoints.c (dwarf_entry_breakpoints): Use CUDIE.
1772
1773         * dwarf_siblingof (dwarf_siblingof): Detect a NULL return pointer.
1774         Set the address in the return structure to the address of the next
1775         non-sibling die, if there is no sibling and the return pointer is
1776         not the same as the die pointer.
1777         * libdw.h: Expand the description of the dwarf_siblingof prototype.
1778
1779         * dwarf_child.c: Fix typo in comment.
1780
1781         * libdwP.h (DWARF_VERSION): Change to 3.
1782
1783         * dwarf_formref.c (__libdw_formref.c): Handle attributes which do
1784         not have a initialised valp pointer.
1785
1786         * dwarf_getattrs.c (dwarf_getattrs): Return 1 rather than 0 when
1787         the end of the attributes is reached.  When the callback fails,
1788         return the address of the failing attribute, not the address of
1789         its successor.
1790         * libdw.h: Expand the description of the dwarf_getattrs prototype.
1791
1792         * dwarf_child.c (__libdw_find_attr): Use the new definition.
1793         (dwarf_child): Likewise.
1794         * dwarf_tag.c (__libdw_findabbrev): Likewise.
1795         (dwarf_tag): Likewise.
1796
1797 2008-01-08  Roland McGrath  <roland@redhat.com>
1798
1799         * Makefile.am (euinclude): Variable removed.
1800         (pkginclude_HEADERS): Set this instead of euinclude_HEADERS.
1801         (libdw.so): Pass -Wl,--enable-new-dtags,-rpath,$(pkglibdir).
1802
1803 2007-10-17  Roland McGrath  <roland@redhat.com>
1804
1805         * libdw.h (__deprecated_attribute__): New macro.
1806         (dwarf_formref): Mark it deprecated.
1807         * dwarf_formref.c (__libdw_formref): New function, broken out of ...
1808         (dwarf_formref): ... here.  Call it.  Remove INTDEF.
1809         * libdwP.h: Remove INTDECL.
1810         Declare __libdw_formref.
1811         * dwarf_siblingof.c (dwarf_siblingof): Call __libdw_formref instead.
1812         * dwarf_formref_die.c: Likewise.  Handle DW_FORM_ref_addr here.
1813
1814         * libdw_form.c (__libdw_form_val_len): Fix DW_FORM_ref_addr result,
1815         needs to check CU->version.
1816
1817         * libdwP.h (struct Dwarf_CU): New member `version'.
1818         * libdw_findcu.c (__libdw_findcu): Initialize it.
1819
1820         * dwarf_child.c: Return 1 for null entry as first child.
1821
1822 2007-10-05  Roland McGrath  <roland@redhat.com>
1823
1824         * dwarf_begin_elf.c (check_section): Punt on SHT_NOBITS sections.
1825
1826         * libdw.h (__extern_inline): Rename to __libdw_extern_inline.
1827         [__OPTIMIZE__] (dwarf_whatattr, dwarf_whatform): Update uses.
1828
1829 2007-10-03  Roland McGrath  <roland@redhat.com>
1830
1831         * libdw.map (ELFUTILS_0.130: Add dwfl_build_id_find_elf
1832         and dwfl_build_id_find_debuginfo.
1833
1834         * libdw.map (ELFUTILS_0.130): New version set, inherits from
1835         ELFUTILS_0.127.  Add dwfl_module_build_id, dwfl_module_report_build_id.
1836
1837 2007-10-02  Roland McGrath  <roland@redhat.com>
1838
1839         * libdw_visit_scopes.c (classify_die): Return walk for class_type and
1840         structure_type.
1841
1842 2007-08-07  Roland McGrath  <roland@redhat.com>
1843
1844         * dwarf_getscopes.c (pc_match): Swallow dwarf_haspc error return when
1845         error code is DWARF_E_NOERROR (0).
1846
1847         * dwarf_getscopes.c (pc_record): Always bail early if DIE->prune.
1848         Fix typo in __libdw_visit_scopes argument.
1849
1850         * dwarf_getscopes.c (pc_match): Check dwarf_haspc error return,
1851         swallow DWARF_E_NO_DEBUG_RANGES but not other errors.
1852
1853 2007-07-03  Roland McGrath  <roland@redhat.com>
1854
1855         * libdw.h (__extern_inline): New macro.
1856         [__OPTIMIZE__] (dwarf_whatattr, dwarf_whatform): Use it.
1857
1858 2007-04-16  Roland McGrath  <roland@redhat.com>
1859
1860         * libdw.map (ELFUTILS_0.127): Add dwfl_module_address_section.
1861
1862 2007-04-05  Roland McGrath  <roland@redhat.com>
1863
1864         * dwarf_getsrcdirs.c: New file.
1865         * Makefile.am (libdw_a_SOURCES): Add it.
1866         * libdw.h: Declare dwarf_getsrcdirs.
1867         * libdw.map (ELFUTILS_0.127): Add it.
1868
1869         * libdwP.h (struct Dwarf_Files_s): New member ndirs.
1870         * dwarf_getsrclines.c (dwarf_getsrclines): Don't clobber NDIRLIST to
1871         zero before we use it to check for DWARF_E_INVALID_DIR_IDX.
1872         Save DIRARRAY in the Dwarf_Files.
1873
1874         * dwarf_ranges.c (dwarf_ranges): Don't sign-extend 32-bit BEGIN
1875         address to check for all-ones base address entry.  Check directly.
1876         Reported by Sébastien Dugué <sebastien.dugue@bull.net>.
1877
1878 2007-03-25  Roland McGrath  <roland@redhat.com>
1879
1880         * dwarf_begin_elf.c (check_section): Return Dwarf * instead of void.
1881         Return NULL when freeing RESULT on error.
1882         (global_read, scngrp_read): Check return value from check_section,
1883         break out of loop after it has freed RESULT.
1884         (valid_p): Handle null argument.
1885
1886 2007-03-12  Roland McGrath  <roland@redhat.com>
1887
1888         * libdw.map (ELFUTILS_0.127): Add dwfl_report_begin_add.
1889
1890 2007-03-04  Roland McGrath  <roland@redhat.com>
1891
1892         * libdw.map (ELFUTILS_0.127): New version set, inherits from
1893         ELFUTILS_0.126.  Add dwfl_module_addrsym.
1894
1895 2007-02-10  Roland McGrath  <roland@redhat.com>
1896
1897         * dwarf.h (DW_OP_fbreg): Comment fix.
1898
1899 2007-02-03  Roland McGrath  <roland@redhat.com>
1900
1901         * dwarf_getelf.c (dwarf_getelf): Renamed from dwarf_get_elf.
1902         * libdw.map (ELFUTILS_0.126): New version set, inherits from
1903         ELFUTILS_0.122.  Move dwarf_getelf there; it was never truly
1904         exported in the past.
1905
1906 2006-12-17  Roland McGrath  <roland@redhat.com>
1907
1908         * dwarf_getlocation.c (dwarf_getlocation_addr): Use zero as base
1909         address when the CU is missing attributes due to buggy GCC.
1910
1911 2006-08-29  Roland McGrath  <roland@redhat.com>
1912
1913         * Makefile.am (CLEANFILES): Add libdw.so.$(VERSION).
1914
1915         * libdw.h (dwarf_diecu): Add __nonnull_attribute__.
1916         (dwarf_child): Don't list arg 1 in __nonnull_attribute__.
1917
1918         * libdw_alloc.c (__libdw_allocate): Take new ALIGN argument, make sure
1919         result is aligned.  Adjust NEWP->remaining here for this allocation.
1920         * libdwP.h: Update decl.
1921         (libdw_alloc): Update caller.
1922
1923 2006-07-12  Ulrich Drepper  <drepper@redhat.com>
1924
1925         * dwarf_child.c: Adjust for internal_function_def removal.
1926         * dwarf_getabbrev.c: Likewise.
1927         * dwarf_tag.c: Likewise.
1928         * libdw_form.c: Likewise.
1929         * memory-access.c: Likewise.
1930
1931 2006-06-28  Roland McGrath  <roland@redhat.com>
1932
1933         * libdw.map: Export dwfl_linecu, dwfl_line_comp_dir.
1934
1935         * libdw.map: Bump to 0.122; export dwfl_module_getsymtab and
1936         dwfl_module_getsym.
1937
1938 2006-05-27  Ulrich Drepper  <drepper@redhat.com>
1939
1940         * libdw.h: Add extern "C".
1941
1942 2006-05-22  Ulrich Drepper  <drepper@redhat.com>
1943
1944         * dwarf_getaranges.c (dwarf_getaranges): Handle files without
1945         aranges information.
1946
1947 2006-05-21  Ulrich Drepper  <drepper@redhat.com>
1948
1949         * libdw.h: Add nonnull attributes to dwarf_tag, dwarf_getattrs,
1950         dwarf_haschildren.
1951
1952 2006-02-28  Roland McGrath  <roland@redhat.com>
1953
1954         * dwarf.h: Add missing DW_ATE_*, DW_TAG_*, DW_LANG_*, DW_CFA_*,
1955         DW_OP_* values, to match DWARF 3.0.  Add new DW_DS_*, DW_END_*
1956         values from DWARF 3.0.
1957
1958 2006-02-22  Roland McGrath  <roland@redhat.com>
1959
1960         * libdw.map: Bump to 0.120; export dwfl_version.
1961
1962 2005-12-22  Roland McGrath  <roland@redhat.com>
1963
1964         * libdw.map: Bump to 0.119; export dwfl_linux_proc_maps_report.
1965
1966 2005-12-12  Roland McGrath  <roland@redhat.com>
1967
1968         * dwarf_ranges.c: Copy CU base address-finding code from
1969         dwarf_getlocation.
1970
1971 2005-12-09  Roland McGrath  <roland@redhat.com>
1972
1973         * dwarf_getlocation.c (dwarf_getlocation_addr): Add some unlikelys.
1974         Delay CU base lookup until it's needed.
1975         If CU base lookup fails with no error, flag invalid DWARF.
1976
1977 2005-11-25  Roland McGrath  <roland@redhat.com>
1978
1979         * libdw.map: Bump to 0.118; export dwfl_module_register_names.
1980
1981 2005-11-15  Roland McGrath  <roland@redhat.com>
1982
1983         * Makefile.am [BUILD_STATIC] (AM_CFLAGS): Add -fpic.
1984
1985 2005-11-13  Roland McGrath  <roland@redhat.com>
1986
1987         * libdw.map: Bump to 0.117; export dwfl_module_return_value_location.
1988
1989 2005-10-27  Roland McGrath  <roland@redhat.com>
1990
1991         * dwarf_entry_breakpoints.c (search_range): Fix binary search code;
1992         don't match end_sequence markers.
1993
1994         * dwarf_getsrclines.c (compare_lines): Sort end_sequence markers
1995         before normal records at the same address.
1996         * dwarf_getsrc_die.c (dwarf_getsrc_die): Don't match an end_sequence
1997         marker.
1998
1999 2005-10-26  Roland McGrath  <roland@redhat.com>
2000
2001         * dwarf_getfuncs.c (dwarf_getfuncs): Use Dwarf_Die, not Dwarf_Func.
2002         * dwarf_func_file.c: Renamed to ...
2003         * dwarf_decl_file.c: ... here.
2004         * dwarf_func_col.c: Renamed to ...
2005         * dwarf_decl_column.c: ... here.
2006         * dwarf_func_line.c: Renamed to ...
2007         * dwarf_decl_line.c: ... here.
2008         (dwarf_func_line): Renamed to ...
2009         (dwarf_decl_line): ... this.  Take a Dwarf_Die * argument.
2010         (__libdw_func_intval): Renamed __libdw_attr_intval.
2011         * dwarf_func_name.c: File removed.
2012         * dwarf_func_lowpc.c: File removed.
2013         * dwarf_func_highpc.c: File removed.
2014         * dwarf_func_entrypc.c: File removed.
2015         * dwarf_func_die.c: File removed.
2016         * Makefile.am (libdw_a_SOURCES): Updated.
2017         * libdw.h: Update decls.
2018         (Dwarf_Func): Type removed.
2019         * libdwP.h: Update decls.
2020         (struct Dwarf_Func_s): Type removed.
2021         * libdw.map: Updated.
2022
2023         * libdwP.h (CUDIE): New macro.
2024         * dwarf_getlocation.c (dwarf_getlocation_addr): Use it.
2025         * dwarf_getscopes_die.c (dwarf_getscopes_die): Likewise.
2026         * dwarf_ranges.c (dwarf_ranges): Likewise.
2027
2028         * dwarf_getloclist.c: Renamed to ...
2029         * dwarf_getlocation.c: ... here.
2030         (getloclist): Renamed to getlocation.
2031         (dwarf_getloclist): Renamed to dwarf_getlocation.
2032         (dwarf_addrloclists): Renamed to dwarf_getlocation_addr.
2033         * Makefile.am (libdw_a_SOURCES): Updated.
2034         * libdw.h (dwarf_getloclist): Renamed to dwarf_getlocation.
2035         (dwarf_addrloclists): Renamed dwarf_getlocation_addr.
2036         (Dwarf_Loc): Renamed Dwarf_Op.
2037         * libdwP.h (struct loc_s): Update use.
2038         * libdw.map: Update map.
2039
2040         * dwarf_entry_breakpoints.c: Use the second line record within the
2041         function, regardless of its source location data.
2042
2043 2005-10-25  Roland McGrath  <roland@redhat.com>
2044
2045         * dwarf_entry_breakpoints.c: Fall back to entrypc for contiguous too.
2046
2047         * libdw.map: Add dwarf_entrypc, dwarf_entry_breakpoints.
2048
2049 2005-10-14  Roland McGrath  <roland@redhat.com>
2050
2051         * dwarf_diecu.c (dwarf_diecu): New file.
2052         * Makefile.am (libdw_a_SOURCES): Add it.
2053         * libdw.h: Declare dwarf_diecu.
2054         * libdw.map: Export it.
2055
2056         * libdw.map: Bump to 0.116; export dwarf_ranges.
2057
2058 2005-09-20  Roland McGrath  <roland@redhat.com>
2059
2060         * dwarf_haspc.c: Use dwarf_ranges.
2061         * dwarf_entry_breakpoints.c: Likewise.
2062
2063         * dwarf_ranges.c: New file.
2064         * Makefile.am (libdw_a_SOURCES): Add it.
2065         * libdw.h: Declare dwarf_ranges.
2066         * libdwP.h: Add INTDECL.
2067
2068 2005-09-14  Roland McGrath  <roland@redhat.com>
2069
2070         * dwarf_entry_breakpoints.c (dwarf_entry_breakpoints): Fix braino in
2071         prologue_end marker scanning loop.
2072
2073 2005-09-11  Roland McGrath  <roland@redhat.com>
2074
2075         * dwarf.h: Comment typo fix.
2076
2077 2005-09-07  Roland McGrath  <roland@redhat.com>
2078
2079         * dwarf_entry_breakpoints.c: New file.
2080         * Makefile.am (libdw_a_SOURCES): Add it.
2081         * libdw.h: Declare dwarf_entry_breakpoints.
2082
2083         * dwarf_entrypc.c: New file.
2084         * Makefile.am (libdw_a_SOURCES): Add it.
2085         * libdw.h: Declare dwarf_entrypc.
2086         * libdwP.h: Add INTDECL.
2087
2088 2005-08-28  Ulrich Drepper  <drepper@redhat.com>
2089
2090         * Makefile.am: Use $(LINK) not $(CC) when creating DSO.
2091         (%.os): Use COMPILE.os.
2092         (COMPILE.os): Filter out gconv options.
2093
2094 2005-08-27  Roland McGrath  <roland@redhat.com>
2095
2096         * dwarf_getscopes.c (dwarf_getscopes): Rewritten using
2097         __libdw_visit_scopes.
2098
2099         * dwarf_getscopes_die.c: New file.
2100         * Makefile.am (libdw_a_SOURCES): Add it.
2101         * libdw.h: Declare dwarf_getscopes_die.
2102         * libdw.map: Bump to 0.115 and add it.
2103
2104         * libdw_visit_scopes.c (__libdw_visit_scopes): Pass a struct
2105         containing a DIE and its parent pointer, instead of just Dwarf_Die.
2106         Take two functions for both preorder and postorder visitors.
2107         * libdwP.h: Update decl.
2108         (struct Dwarf_Die_Chain): New type.
2109         * dwarf_func_inline.c: Update uses.
2110
2111         * dwarf_diename.c (dwarf_diename): Use dwarf_attr_integrate.
2112         Add INTDEF.
2113         * libdwP.h: Add INTDECL.
2114         * dwarf_func_name.c (dwarf_func_name): Use dwarf_diename.
2115
2116 2005-08-23  Roland McGrath  <roland@redhat.com>
2117
2118         * dwarf_attr_integrate.c (dwarf_attr_integrate): Treat
2119         DW_AT_specification the same as DW_AT_abstract_origin.
2120
2121 2005-08-20  Roland McGrath  <roland@redhat.com>
2122
2123         * libdw.map: Add dwfl_cumodule, remove dwfl_linecu.
2124         Add dwfl_linux_kernel_report_offline, dwfl_offline_section_address,
2125         and dwfl_report_offline.
2126
2127 2005-08-19  Roland McGrath  <roland@redhat.com>
2128
2129         * libdw.map: Bump version to ELFUTILS_0.114 for libdwfl changes.
2130         Add dwfl_module_relocate_address, dwfl_module_relocations,
2131         dwfl_module_relocation_info.
2132
2133 2005-08-18  Roland McGrath  <roland@redhat.com>
2134
2135         * dwarf_getscopes.c (dwarf_getscopes): Include the CU itself as
2136         outermost scope in the results.
2137
2138 2005-08-15  Roland McGrath  <roland@redhat.com>
2139
2140         * dwarf_func_inline.c: New file.
2141         * Makefile.am (libdw_a_SOURCES): Add it.
2142         * libdw.h: Declare dwarf_func_inline, dwarf_func_inline_instances.
2143         * libdw.map: Add them.
2144
2145         * dwarf_func_die.c: New file.
2146         * Makefile.am (libdw_a_SOURCES): Add it.
2147         * libdw.h: Declare dwarf_func_die.
2148         * libdw.map: Add it.  Bump version to ELFUTILS_0.114.
2149
2150 2005-08-10  Ulrich Drepper  <drepper@redhat.com>
2151
2152         * dwarf_getsrclines.c (dwarf_getsrclines): Correct fallout of renaming
2153         of DW_LNS_set_epilog_begin.
2154
2155 2005-08-09  Roland McGrath  <roland@redhat.com>
2156
2157         * dwarf.h (DW_LNS_set_epilog_begin): Renamed DW_LNS_set_epilogue_begin.
2158
2159         * dwarf_end.c: Add INTDEF.
2160         * dwarf_error.c (dwarf_errmsg): Likewise.
2161         * libdwP.h (dwarf_end, dwarf_errmsg): Add INTDECLs.
2162
2163 2005-08-01  Roland McGrath  <roland@redhat.com>
2164
2165         * dwarf_getaranges.c (dwarf_getaranges): Check for bogus offset.
2166         * dwarf_getabbrev.c (__libdw_getabbrev): Likewise.
2167
2168 2005-07-28  Ulrich Drepper  <drepper@redhat.com>
2169
2170         * Makefile.am (libdw.so): No need to link with libeu.a anymore.
2171         (libdw_a_LIBADD): Add all files from libdwfl.a.
2172
2173 2005-07-27  Roland McGrath  <roland@redhat.com>
2174
2175         * Makefile.am (libdw.so): Link ../libdwfl/libdwfl_pic.a in,
2176         along with ../libebl/libebl.a and ../lib/libeu.a;
2177         depend on ../libelf/libelf.so.
2178         (libdw_so_LDADD): New variable.
2179         * libdw.map: Add dwfl_* symbols formerly in ../libdwfl/libdwfl.map.
2180
2181         * libdw.map: Define an empty base version and move all symbols to
2182         version ELFUTILS_0.111; don't define ELFUTILS_1.0 at all yet.
2183
2184 2005-07-23  Ulrich Drepper  <drepper@redhat.com>
2185
2186         * dwarf_error.c: Add internal alias for dwarf_errno.
2187         * libdwP.h: Declare __dwarf_errno_internal.
2188         * dwarf_getloclist.c: Use INTDEF for dwarf_errno.
2189
2190         * dwarf_error.c [USE_TLS]: Actually use __thread in definition of
2191         global_error.
2192
2193 2005-06-01  Roland McGrath  <roland@redhat.com>
2194
2195         * dwarf_getaranges.c (dwarf_getaranges): Sort result array.
2196         * dwarf_getarange_addr.c (dwarf_getarange_addr): Use binary search.
2197
2198 2005-06-08  Roland McGrath  <roland@redhat.com>
2199
2200         * memory-access.h (get_uleb128_step, get_uleb128): Remove casts.
2201         (get_sleb128_step, get_sleb128): Likewise.
2202         * dwarf_getattrs.c (dwarf_getattrs): Add consts.
2203         * dwarf_getloclist.c (getloclist): Likewise.
2204         * dwarf_formblock.c (dwarf_formblock): Likewise.
2205         * dwarf_getsrclines.c (dwarf_getsrclines): Likewise.
2206         * dwarf_getabbrevattr.c (dwarf_getabbrevattr): Likewise.
2207         * dwarf_formref.c (dwarf_formref): Likewise.
2208         * dwarf_formsdata.c (dwarf_formsdata): Likewise.
2209         * dwarf_formudata.c (dwarf_formudata): Likewise.
2210         * dwarf_haschildren.c (dwarf_haschildren): Likewise.
2211         * dwarf_child.c (__libdw_find_attr, __libdw_find_attr): Likewise.
2212         * dwarf_tag.c (dwarf_tag): Likewise.
2213         * dwarf_getabbrev.c (__libdw_getabbrev): Likewise.
2214         * memory-access.c (__libdw_get_uleb128, __libdw_get_sleb128): Likewise.
2215         * libdw_form.c (__libdw_form_val_len): Likewise.
2216         * libdwP.h: Update decl.
2217
2218 2005-06-04  Roland McGrath  <roland@redhat.com>
2219
2220         * memory-access.h (get_uleb128_rest_return): New macro.
2221         [! IS_LIBDW] (__libdw_get_uleb128): New static, defined using it.
2222         (get_sleb128_rest_return): New macro.
2223         [! IS_LIBDW] (__libdw_get_sleb128): New static, defined using it.
2224         * memory-access.c: New file.
2225         * Makefile.am (libdw_a_SOURCES): Add it.
2226         (DEFS): Add -DIS_LIBDW.
2227
2228 2005-05-31  Roland McGrath  <roland@redhat.com>
2229
2230         * dwarf_formref_die.c (dwarf_formref_die): Add CU header offset to
2231         formref offset.
2232
2233 2005-05-30  Roland McGrath  <roland@redhat.com>
2234
2235         * dwarf_getloclist.c (dwarf_addrloclists): Use DW_AT_entry_pc for base
2236         address if DW_AT_low_pc is missing.  Not to spec, but GCC generates it.
2237
2238         * dwarf_getloclist.c (dwarf_addrloclists): Don't sign-extend 4-byte
2239         BEGIN value.  Instead, match base address entries separately for
2240         32/64 size cases.
2241
2242 2005-05-28  Roland McGrath  <roland@redhat.com>
2243
2244         * dwarf_getloclist.c (dwarf_addrloclists): Fix decoding to advance
2245         past location expression contents.
2246
2247 2005-05-23  Roland McGrath  <roland@redhat.com>
2248
2249         * dwarf_getsrclines.c: Comment typo fix.
2250
2251         * dwarf_haspc.c (dwarf_haspc): Fix CU DIE address calculation.
2252         * dwarf_getloclist.c (dwarf_addrloclists): Likewise.
2253
2254 2005-05-22  Ulrich Drepper  <drepper@redhat.com>
2255
2256         * libdwP.h: Only use INTDECL for alias prototypes.
2257
2258 2005-05-19  Roland McGrath  <roland@redhat.com>
2259
2260         * dwarf_getloclist.c (attr_ok): Permit DW_AT_static_link too.
2261
2262         * dwarf_getscopevar.c: New file.
2263         * Makefile.am (libdw_a_SOURCES): Add it.
2264         * libdw.h: Declare dwarf_getscopevar.
2265
2266         * dwarf_getsrcfiles.c: Add INTDEF.
2267         * dwarf_haschildren.c: Likewise.
2268         * libdwP.h (dwarf_getsrcfiles, dwarf_haschildren): Add INTDECL.
2269
2270         * dwarf_getscopes.c: New file.
2271         * Makefile.am (libdw_a_SOURCES): Add it.
2272         * libdw.h: Declare dwarf_getscopes.
2273         * libdw.map: Add it.
2274
2275 2005-05-18  Roland McGrath  <roland@redhat.com>
2276
2277         * libdwP.h (IDX_debug_ranges): New enum constant.
2278         * dwarf_begin_elf.c (dwarf_scnnames): Add it for ".debug_ranges".
2279         * libdwP.h (DWARF_E_NO_DEBUG_RANGES): New enum constant.
2280         * dwarf_error.c (errmsgs): Add it.
2281         * dwarf_haspc.c: New file.
2282         * libdw.h: Declare dwarf_haspc.
2283         * libdw.map: Add it.
2284         * libdwP.h: Add INTDECL.
2285
2286         * dwarf_attr_integrate.c: New file.
2287         * dwarf_hasattr_integrate.c: New file.
2288         * Makefile.am (libdw_a_SOURCES): Add them.
2289         * libdw.h: Declare dwarf_attr_integrate, dwarf_hasattr_integrate.
2290         * libdw.map: Add them.
2291
2292         * dwarf_hasattr.c: Add INTDEF.
2293         * libdwP.h: Add INTDECL for it.
2294
2295         * dwarf_formref_die.c: New file.
2296         * Makefile.am (libdw_a_SOURCES): Add it.
2297         * libdw.h (dwarf_formref_die): Declare it.
2298         * libdwP.h (dwarf_formref_die): Add INTDECL.
2299         * libdw.map: Add it.
2300
2301         * dwarf_getloclist.c (attr_ok, getloclist): New functions, broken out
2302         of ...
2303         (dwarf_getloclist): ... here.  Call them.
2304         (dwarf_addrloclists): New function.
2305         * libdw.h: Declare it.
2306         * libdw.map: Add it.
2307
2308         * dwarf_getmacros.c (dwarf_getmacros): Don't bail at
2309         DW_MACINFO_end_file.  Recognize type 0 as terminator.
2310
2311 2005-05-05  Roland McGrath  <roland@redhat.com>
2312
2313         * dwarf_getsrc_die.c (dwarf_getsrc_die): Use binary search.
2314
2315         * dwarf_getsrclines.c (dwarf_getsrclines): Sort result array, since
2316         the line program does not produce all entries in ascending order.
2317
2318 2005-04-25  Ulrich Drepper  <drepper@redhat.com>
2319
2320         * dwarf_getsrc_file.c (dwarf_getsrc_file): Handle multiple
2321         occurences (e.g., inlines) better.
2322
2323 2005-04-24  Ulrich Drepper  <drepper@redhat.com>
2324
2325         * libdw.h (DWARF_END_ABBREV): Define.
2326         * dwarf_getabbrev.c (__libdw_getabbrev): Return DWARF_END_ABBREV if
2327         end is reached.
2328         * dwarf_offabbrev.c (dwarf_offabbrev): Return -1 on error, 1 if end
2329         of records reached.
2330         * dwarf_tag.c (__libdw_findabbrev): Also recognize DWARF_END_ABBREV
2331         as error of __libdw_getabbrev.
2332
2333 2005-04-04  Ulrich Drepper  <drepper@redhat.com>
2334
2335         * dwarf_getsrc_file.c (dwarf_getsrc_file): Minor optimization.
2336
2337         * dwarf_getsrc_file.c (dwarf_getsrc_file): Always pass number of
2338         results back to caller.
2339
2340 2005-04-04  Roland McGrath  <roland@redhat.com>
2341
2342         * dwarf_getsrc_file.c (dwarf_getsrc_file): Use size_t for CUHL.
2343
2344         * dwarf_func_line.c (__libdw_func_intval): Use internal_function in
2345         defn.
2346
2347 2005-04-04  Ulrich Drepper  <drepper@redhat.com>
2348
2349         * dwarf_getsrc_file.c (dwarf_getsrc_file): Use INTUSE.
2350
2351         * dwarf_getsrc_file.c: New file.
2352         * Makefile.am (libdw_a_SOURCES): Add dwarf_getsrc_file.c.
2353         * libdw.h: Declare dwarf_getsrc_file.
2354         * libdw.map: Add dwarf_getsrc_file.
2355
2356 2005-04-02  Ulrich Drepper  <drepper@redhat.com>
2357
2358         * dwarf_func_entrypc.c: New file.
2359         * dwarf_func_col.c: New file.
2360         * dwarf_func_line.c: New file.
2361         * dwarf_func_file.c: New file.
2362         * libdw.h: Add prototypes for new functions.
2363         * libdw.map: Add dwarf_func_entrypc, dwarf_func_col, dwarf_func_line,
2364         dwarf_func_file.
2365         * Makefile.am (libdw_a_SOURCES): Add dwarf_func_entrypc.c,
2366         dwarf_func_col.c, dwarf_func_line.c, dwarf_func_file.c.
2367         * libdwP.h (struct Dwarf_Func_s): Add cudie element.
2368         Declare __libdw_func_intval and __dwarf_formsdata_internal.
2369         * dwarf_getfuncs.c: Also fill in cudie in Dwarf_Func object.
2370         * dwarf_formsdata.c: Use INTUSE and INTDEF to avoid PLTs.
2371
2372         * dwarf.h: Add some DWARF3 definitions.
2373
2374 2005-04-01  Ulrich Drepper  <drepper@redhat.com>
2375
2376         * dwarf_getfuncs.c: New file.
2377         * dwarf_func_highpc.c: New file.
2378         * dwarf_func_lowpc.c: New file.
2379         * dwarf_func_name.c: New file.
2380         * Makefile.am (libdw_a_SOURCES): Add dwarf_getfuncs.c,
2381         dwarf_func_highpc.c, dwarf_func_lowpc.c, and dwarf_func_name.c.
2382         * libdw.map: Add dwarf_getfuncs, dwarf_func_highpc, dwarf_func_lowpc,
2383         and dwarf_func_name.
2384         * libdw.h: Add prototypes for new functions.
2385         * dwarf_child.c: Use INTUSE and INTDEF to avoid PLTs.
2386         * dwarf_siblingof.c: Likewise.
2387         * dwarf_dieoffset.c: Likewise.
2388         * dwarf_highpc.c: Likewise.
2389         * dwarf_lowpc.c: Likewise.
2390         * libdwP.h: Add prototypes for internal functions.
2391         Define Dwarf_Func_s structure.
2392
2393 2005-03-29  Ulrich Drepper  <drepper@redhat.com>
2394
2395         * libdw.h: Add padding in Dwarf_die.
2396
2397         * dwarf_arrayorder.c: Use INTUSE and INTDEF to avoid PLTs.
2398         * dwarf_attr.c: Likewise.
2399         * dwarf_begin.c: Likewise.
2400         * dwarf_begin_elf.c: Likewise.
2401         * dwarf_bitoffset.c: Likewise.
2402         * dwarf_bitsize.c: Likewise.
2403         * dwarf_bytesize.c: Likewise.
2404         * dwarf_diename.c: Likewise.
2405         * dwarf_formaddr.c: Likewise.
2406         * dwarf_formblock.c: Likewise.
2407         * dwarf_formref.c: Likewise.
2408         * dwarf_formstring.c: Likewise.
2409         * dwarf_formudata.c: Likewise.
2410         * dwarf_getarange_addr.c: Likewise.
2411         * dwarf_getarangeinfo.c: Likewise.
2412         * dwarf_getaranges.c: Likewise.
2413         * dwarf_getloclist.c: Likewise.
2414         * dwarf_getmacros.c: Likewise.
2415         * dwarf_getsrc_die.c: Likewise.
2416         * dwarf_getsrcfiles.c: Likewise.
2417         * dwarf_getsrclines.c: Likewise.
2418         * dwarf_highpc.c: Likewise.
2419         * dwarf_lowpc.c: Likewise.
2420         * dwarf_nextcu.c: Likewise.
2421         * dwarf_offdie.c: Likewise.
2422         * dwarf_siblingof.c: Likewise.
2423         * dwarf_srclang.c: Likewise.
2424         * dwarf_tag.c: Likewise.
2425         * libdw_findcu.c: Likewise.
2426         * libdwP.h: Add prototypes for internal functions.
2427
2428         * dwarf_addrdie.c: New file.
2429         * dwarf_macro_opcode.c: New file.
2430         * dwarf_macro_param1.c: New file.
2431         * dwarf_macro_param2.c: New file.
2432         * libdw.h: Add declarations.  Move Dwarf_Macro definition to libdwP.h.
2433         * libdwP.h: Remove Dwarf_Macro definition.
2434         * Makefile.am (libdw_a_SOURCES): Add dwarf_addrdie.c,
2435         dwarf_macro_opcode.c, dwarf_macro_param1.c, and dwarf_macro_param2.c.
2436         * libdw.map: Add entries for new functions.
2437
2438 2005-03-21  Ulrich Drepper  <drepper@redhat.com>
2439
2440         * libdw.h: Handle broken gcc < 4.
2441
2442 2005-02-15  Ulrich Drepper  <drepper@redhat.com>
2443
2444         * Makefile (AM_CFLAGS): Add -Wunused -Wextra -Wformat=2.
2445
2446         * dwarf_begin_elf.c: Fix warnings.
2447         * dwarf_dieoffset.c: Likewise.
2448         * dwarf_end.c: Likewise.
2449         * dwarf_error.c: Likewise.
2450         * dwarf_getpubnames.c: Likewise.
2451
2452         * libdwP.h: Add new error values.
2453         * dwarf_error.c: Support new error values.
2454         * dwarf_getpubnames.c: Check parameter value.
2455
2456 2005-02-05  Ulrich Drepper  <drepper@redhat.com>
2457
2458         * Makefile.am: Check for text relocations in constructed DSO.
2459
2460         * Makefile.am [MUDFLAP] (AM_CFLAGS): Add -fmudflap.
2461
2462 2005-02-04  Ulrich Drepper  <drepper@redhat.com>
2463
2464         * dwarf_siblingof.c (dwarf_siblingof): Add some buffer boundary
2465         checks to not read over buffer boundaries for ill-formed DWARF data.
2466
2467 2004-09-25  Ulrich Drepper  <drepper@redhat.com>
2468
2469         * dwarf_child.c: Make compile with gcc 4.0.
2470         * dwarf_error.c: Likewise.
2471         * dwarf_formblock.c: Likewise.
2472         * dwarf_getabbrev.c: Likewise.
2473         * dwarf_getattrs.c: Likewise.
2474         * dwarf_getsrclines.c: Likewise.
2475         * dwarf_tag.c: Likewise.
2476         * libdw_form.c: Likewise.
2477
2478 2004-01-20  Ulrich Drepper  <drepper@redhat.com>
2479
2480         * Makefile.am: Support building with mudflap.
2481
2482         * dwarf_getloclist.c: Fix warnings gcc 3.4 spits out.
2483         * dwarf_getsrclines.c: Likewise.
2484         * dwarf_memory-access.h: Likewise.
2485
2486 2004-01-19  Ulrich Drepper  <drepper@redhat.com>
2487
2488         * dwarf_getsrcfiles.c: Third parameter can be NULL.
2489
2490         * libdw.h: Define Dwarf_macro.  Declare dwarf_getmacros.
2491         Third parameter of dwarf_getsrcfiles can be NULL.
2492
2493         * libdw.map: Add dwarf_getmacros.
2494         * Makefile.am (libdw_a_SOURCES): Add dwarf_getmacros.
2495         * dwarf_getmacros.c: New file.
2496
2497 2004-01-18  Ulrich Drepper  <drepper@redhat.com>
2498
2499         * libdw.h: Second parameter of dwarf_getaranges can be NULL.
2500
2501         * dwarf_nextcu.c: Return -1 if dwarf parameter is NULL.
2502
2503         * dwarf_getsrclines.c:
2504         Use read_2ubyte_unaligned_inc instead of _inc-less variant.
2505
2506         * dwarf_getaranges.c: Allow naranges parameter to be NULL.
2507
2508         * libdwP.h (_): Use elfutils domain.
2509
2510         * dwarf_getsrclines.c (dwarf_getsrclines): Add more branch prediction.
2511
2512         * dwarf_getsrclines.c: Fix typo in comment.
2513
2514 2004-01-17  Ulrich Drepper  <drepper@redhat.com>
2515
2516         * Makefile.am: Support building with mudflap.
2517
2518 2004-01-16  Ulrich Drepper  <drepper@redhat.com>
2519
2520         * memory-access.h: Add lots of const in case a pointer passed is const.
2521
2522         * dwarf_formflag.c: New file.
2523         * dwarf_getattrs.c: New file.
2524         * dwarf_error.c: Add new error value.
2525         * libdw.h: Add prototypes for new functions.  Adjust prototype for
2526         dwarf_getpubnames.
2527         * libdw.map: Add new functions.
2528         * dwarf_getpubnames.c: Change type of return value and fourth parameter
2529         to ptrdiff_t.
2530         * libdwP.h: Add new error value.
2531         * Makefile.am (libdw_a_SOURCES): Add dwarf_getattrs.c and
2532         dwarf_formflag.c.
2533
2534         * dwarf_getpubnames.c (dwarf_getpubnames): Just fail if dbg is NULL.
2535
2536 2004-01-12  Ulrich Drepper  <drepper@redhat.com>
2537
2538         * dwarf_getarange_addr.c: New file
2539         * dwarf_getarangeinfo.c: New file.
2540         * dwarf_getaranges.c: New file.
2541         * dwarf_onerange.c: New file.
2542         * libdw.h: Declare new functions.  Define Dwarf_Arange and
2543         Dwarf_Aranges.
2544         * libdw.map: Add new functions.
2545         * libdwP.h: Add new errors.  Add aranges member to struct Dwarf.
2546         Define Dwarf_Aranges_s and Dwarf_Arange_s.
2547         * Makefile.am (libdw_a_SOURCES): Add dwarf_getaranges.c,
2548         dwarf_onearange.c, dwarf_getarangeinfo.c, dwarf_getarange_addr.c.
2549         * dwarf_error.c: Add new message.
2550
2551 2004-01-11  Ulrich Drepper  <drepper@redhat.com>
2552
2553         * Makefile.am (libdw_a_SOURCES): Add dwarf_lineaddr.c, dwarf_linecol.c,
2554         dwarf_linebeginstatement.c, dwarf_lineendsequence.c, dwarf_lineblock.c,
2555         dwarf_lineprologueend.c, dwarf_lineepiloguebegin.c, dwarf_onesrcline.c.
2556         * dwarf_error.c: Add another message.
2557         * dwarf_getsrc_die.c: Adjust for Dwarf_Files and Dwarf_Lines
2558         introduction.
2559         * dwarf_filesrc.c: Likewise.
2560         * dwarf_getsrcfiles.c: Likewise.
2561         * dwarf_getsrclines.c: Likewise.
2562         * dwarf_lineaddr.c: New file.
2563         * dwarf_linebeginstatement.c: New file.
2564         * dwarf_lineblock.c: New file.
2565         * dwarf_linecol.c: New file.
2566         * dwarf_lineendsequence.c: New file.
2567         * dwarf_lineepiloguebegin.c: New file.
2568         * dwarf_lineno.c: New file.
2569         * dwarf_lineprologueend.c: New file.
2570         * dwarf_onesrcline.c: New file.
2571         * dwarf_lineno.c: Change interface to store result in object pointed
2572         to by second parameter.
2573         * libdw.h: Add prototypes for new functions.  Change dwarf_lineno
2574         prototype.  Define Dwarf_Files and Dwarf_Lines.
2575         * libdw.map: Add new functions.
2576         * libdwP.h: Define Dwarf_Files_s and Dwarf_Lines_s.
2577         * libdw_findcu.c: Don't initialize nlines field.
2578
2579         * dwarf_siblingof: Little optimization.
2580
2581         * dwarf_begin.c: Remember that the ELF descriptor must be closed.
2582         * dwarf_end.c: Close ELF descriptor if free_elf is set.
2583         * libdwP.h (struct Dwarf): Add free_elf field.
2584
2585         * Makefile.am (libdw_a_SOURCES): Add dwarf_getstring.c and
2586         dwarf_offabbrev.c.
2587         * dwarf_getstring.c: New file.
2588         * dwarf_offabbrev.c: New file.
2589         * libdw.map: Add dwarf_getstring and dwarf_offabbrev.
2590         * dwarf_getabbrev.c (__libdw_getabbrev): Add new dbg and result
2591         parameters.  Don't allocate memory if not necessary and don't lookup
2592         previous results if no CU given.
2593         (dwarf_getabbrev): Adjust call to __libdw_getabbrev.
2594         * dwarf_tag.c: Adjust call to __libdw_getabbrev.
2595         * libdw.h: Declare dwarf_offabbrev and dwarf_getstring.
2596         * libdwP.h: Change prototype for __libdw_getabbrev.
2597
2598         * dwarf_getabbrevattr.c: Add offsetp parameter.  Fill in before
2599         returning if this is wanted.
2600
2601 2004-01-09  Ulrich Drepper  <drepper@redhat.com>
2602
2603         * dwarf_nextcu.c: Add new parameter offset_sizep.  Initialize it
2604         with offset_size value.
2605         * libdw.h: Adjust dwarf_nextcu prototype.
2606         * libdwP.h (struct Dwarf_CU): Add offset_size member.
2607         * libdw_findcu.c: Adjust dwarf_nextcu call.  Initialize offset_size
2608         member of new CU struct.
2609         * dwarf_formstring.c: Depend on offset_size not address_size for
2610         DW_FORM_strp handling.
2611         * dwarf_form.c: Likewise for DW_FORM_strp and DW_FORM_ref_addr.
2612
2613         * dwarf_tag.c (__libdw_findabbrev): Return correct value for
2614         failing lookup.
2615         (dwarf_tag): Correctly recognize failed lookup.
2616
2617         * dwarf_end.c (cu_free):  Call tdestroy for locs member.  Use new
2618         function noop_free.
2619         * dwarf_error.c: Add message for DWARF_E_NO_BLOCK.
2620         * dwarf_formblock.c: New file.
2621         * dwarf_getloclist.c: Rewrite to handle a single block.
2622         * libdw.h: Define Dwarf_Block.  Rename Dwarf_Loc members.  Remove
2623         Dwarf_Locdesc definition.  Declare dwarf_formblock.  Remove
2624         dwarf_getloclistent declaration.
2625         * libdw.map: Add dwarf_formblock, remove dwarf_getloclistent.
2626         * libdwP.h: Define struct loc_s and DWARF_E_NO_BLOCK.
2627         Add locs member to struct Dwarf_CU.
2628         * libdw_fundcu.c: Initialize locs member of new CU.
2629         * Makefile.am (libdw_a_SOURCES): Add dwarf_formblock.c.
2630         Remove dwarf_getloclistent.c.
2631
2632 2004-01-07  Ulrich Drepper  <drepper@redhat.com>
2633
2634         * libdw.h: Use __nonnull__ attribute only for gcc >= 3.3.
2635         * libdwP.h: Likewise.
2636
2637         * dwarf_getloclist.c: New file.
2638         * dwarf_getloclistent.c: New file.
2639         * libdw.h: Define Dwarf_Loc and Dwarf_Locdesc.
2640         Declare dwarf_getloclistent and dwarf_getloclist.
2641         * libdw.map: Add dwarf_getloclistent and dwarf_getloclist.
2642         * libdwP.h: Define DWARF_E_NO_LOCLIST.
2643         * Makefile.am (libdw_a_SOURCES): Add dwarf_getloclistent.c and
2644         dwarf_getloclist.c.
2645
2646         * dwarf_error.c: More error messages.
2647
2648 2004-01-06  Ulrich Drepper  <drepper@redhat.com>
2649
2650         * dwarf_getsrclines.c: Remove debugging support.
2651
2652         * dwarf_getsrcfiles.c: New file.
2653         * dwarf_filesrc.c: New file.
2654         * libdw.h: Declare these functions.  Define Dwarf_File.
2655         * libdwP.c: Adjust Dwarf_File_s definition.
2656         * libdw.map: Add these functions.
2657         * Makefile.am (libdw_a_SOURCES): Add dwarf_getsrcfiles.c and
2658         dwarf_filesrc.c.
2659         * dwarf_getsrclines.c: Initialize cu->files.
2660
2661 2004-01-05  Ulrich Drepper  <drepper@redhat.com>
2662
2663         * libdw.h: Add more nonnull function attributes.
2664
2665         * dwarf_begin_elf.c (dwarf_begin_elf): Don't initialize mem_tail->next.
2666         * dwarf_end.c (cu_free): New function.
2667         (dwarf_end): Also free CU tree.  Correct freeing of memory blocks.
2668         * dwarf_error.c (errmsgs): Add new messages.
2669         * dwarf_getsrc_die.c: New file.
2670         * dwarf_getsrclines.c: New file.
2671         * dwarf_lineno.c: New file.
2672         * dwarf_linesrc.c: New file.
2673         * dwarf_nextcu.c (dwarf_nextcu): Use read_*byte_unaligned_inc
2674         instead of the *_inc-less variants.
2675         * libdw.h: Define Dwarf_Line.  Add some function attributes.  Declare
2676         dwarf_getsrclines, dwarf_getsrc_die, dwarf_lineno, and dwarf_linesrc.
2677         * libdw.map: Add dwarf_getsrclines, dwarf_getsrc_die, dwarf_lineno,
2678         and dwarf_linesrc.
2679         * libdwP.h: Add more error codes.
2680         (struct Dwarf): Remove mem_tail.next member.
2681         (Dwarf_File): Define type.
2682         (struct Dwarf_Line_s): Define type.
2683         (struct Dwarf_CU): Add lines and nlines members.
2684         (libdw_alloc): Define local variable _tail and use it.
2685         Add some function attributes.
2686         * libdw_alloc.c (__libdw_allocate): Don't initialize next member.
2687         * libdw_findcu.c (__libdw_findcu): Initialize lines and nlines members.
2688         * memory-access.h: Add unlikely for the endian conversion paths.
2689         * Makefile.am (AM_CFLAGS): Add -std parameter.
2690         (libdw_a_SOURCES): Add dwarf_getsrclines, dwarf_getsrc_die,
2691         dwarf_lineno, and dwarf_linesrc.
2692
2693 2003-08-11  Ulrich Drepper  <drepper@redhat.com>
2694
2695         * Moved to CVS archive.