12020-12-20  Dmitry V. Levin  <ldv@altlinux.org>
2
3	* .gitignore: New file.
4
52020-12-16  Dmitry V. Levin  <ldv@altlinux.org>
6
7	* libdwP.h (_): Remove.
8
92020-12-12  Dmitry V. Levin  <ldv@altlinux.org>
10
11	* dwarf.h: Fix spelling typo in comment.
12	* dwarf_begin_elf.c (dwarf_begin_elf): Likewise.
13	* dwarf_getlocation.c (attr_ok, __libdw_intern_expression): Likewise.
14	* dwarf_getsrclines.c (read_srclines): Likewise.
15	* libdw.h: Fix spelling typos in comments.
16	* libdwP.h: Likewise.
17
182020-12-09  Dmitry V. Levin  <ldv@altlinux.org>
19
20	* Makefile.am (noinst_PROGRAMS): Rename to noinst_DATA.
21	(libdw_so_SOURCES): Remove.
22	(MOSTLYCLEANFILES): Add libdw.so.
23
242020-11-30  Dmitry V. Levin  <ldv@altlinux.org>
25
26	* Makefile.am (libdw.so$(EXEEXT)): Drop $(EXEEXT) suffix.
27
282020-11-01  Érico N. Rolim  <erico.erc@gmail.com>
29
30	* Makefile.am (libdw_so_LDLIBS): Add fts_LIBS.
31
322020-10-28  Tom Tromey  <tom@tromey.com>
33
34	PR26773
35	* dwarf_getlocation.c (store_implicit_value): Use
36	__libdw_get_uleb128_unchecked.
37	* memory-access.h (get_sleb128_step): Assume unsigned type for
38	'var'.
39	(__libdw_get_sleb128, __libdw_get_sleb128_unchecked): Work in
40	unsigned type.  Handle final byte.
41
422020-10-19  Mark Wielaard  <mark@klomp.org>
43
44	* dwarf_frame_register.c (dwarf_frame_register): Declare ops_mem
45	as array of (at least) 3 elements.
46	* libdw.h (dwarf_frame_register): Add extra explanation of ops_mem
47	argument.
48
492020-10-23  Tom Tromey  <tom@tromey.com>
50
51	* memory-access.h (read_3ubyte_unaligned_inc): Call
52	read_3ubyte_unaligned.
53
542020-09-03  Mark Wielaard  <mark@klomp.org>
55
56	* dwarf.h: Add DW_CFA_AARCH64_negate_ra_state.
57	* cfi.h (struct Dwarf_CFI_s): Add e_machine field.
58	* cfi.c (execute_cfi): Recognize, but ignore
59	DW_CFA_AARCH64_negate_ra_state on aarch64.
60	* dwarf_getcfi.c (dwarf_getcfi): Set cfi e_machine.
61	* dwarf_getcfi_elf.c (allocate_cfi): Take ehdr as argument and set
62	cfi e_machine.
63	(getcfi_gnu_eh_frame): Pass ehdr to allocate_cfi.
64	(getcfi_scn_eh_frame): Likewise.
65
662020-09-03  Mark Wielaard  <mark@klomp.org>
67
68	* libdw.map (ELFUTILS_0.126): Remove local wildcard.
69	(ELFUTILS_0.127): Likewise.
70	(ELFUTILS_0.130): Likewise.
71	(ELFUTILS_0.136): Likewise.
72	(ELFUTILS_0.138): Likewise.
73
742020-08-25  Mark Wielaard  <mark@klomp.org>
75
76	* dwarf_getlocation.c (check_constant_offset): Rename to...
77	(is_constant_offset): .. this.
78
792020-06-28  Mark Wielaard  <mark@klomp.org>
80
81	* linux-kernel-modules.c (intuit_kernel_bounds): Check read_address
82	returns an increasing address when searching for end.
83
842020-06-16  Mark Wielaard  <mark@klomp.org>
85
86	* cfi.c (execute_cfi): Add missing FALLTHROUGH.
87
882020-05-08  Mark Wielaard  <mark@klomp.org>
89
90	* libdw_visit_scopes.c (walk_children): Don't recurse into imported
91	DW_TAG_compile_units.
92
932020-05-08  Mark Wielaard  <mark@klomp.org>
94
95	* dwarf_decl_file.c (dwarf_decl_file): Use attr CU instead of DIE
96	CU to resolve file name.
97	* dwarf_ranges.c(dwarf_ranges): Document which CU we use when.
98	* libdw.h (dwarf_attr_integrate): Extend documentation.
99
1002020-04-25  Mark Wielaard  <mark@klomp.org>
101
102	* libdw_alloc.c (__libdw_alloc_tail): Call Dwarf oom_handler()
103	when malloc fails.
104
1052020-04-17  Mark Wielaard  <mark@klomp.org>
106
107	* dwarf_begin_elf.c (check_section): Handle .gnu.debuglto_ prefix.
108
1092019-10-28  Aaron Merey  <amerey@redhat.com>
110
111	* Makefile.am (libdw_so_LDLIBS): Add -ldl for libdebuginfod.so dlopen.
112
1132019-11-10  Mark Wielaard  <mark@klomp.org>
114
115	* libdwP.h (libdw_unalloc): New define.
116	(libdw_typed_unalloc): Likewise.
117	(__libdw_thread_tail): New function declaration.
118	* libdw_alloc.c (__libdw_thread_tail): New function.
119	* dwarf_getabbrev.c (__libdw_getabbrev): Call libdw_typed_unalloc
120	when reading invalid data or when hash collission detected.
121
1222019-10-28  Jonathon Anderson  <jma14@rice.edu>
123
124	* libdw_alloc.c: Added __libdw_alloc_tail.
125	(__libdw_allocate): Switch to use the mem_tails array.
126	* libdwP.h (Dwarf): Likewise.
127	* dwarf_begin_elf.c (dwarf_begin_elf): Support for above.
128	* dwarf_end.c (dwarf_end): Likewise.
129	* atomics.h: Add support for thread_local.
130
1312019-10-28  Mark Wielaard  <mark@klomp.org>
132
133	* dwarf_sig8_hash.h: Include libdw.h. Remove COMPARE. Include
134	dynamicsizehash_concurrent.h.
135	* dwarf_sig8_hash.c: Include dynamicsizehash_concurrent.c.
136	* dwarf_formref_die.c (dwarf_formref_die): Drop NULL argument to
137	Dwarf_Sig8_Hash_find.
138
1392019-08-26  Srđan Milaković  <sm108@rice.edu@rice.edu>
140
141	* dwarf_abbrev_hash.{c,h}: Use the *_concurrent hash table.
142
1432019-11-01  Jonathon Anderson  <jma14@rice.edu>
144
145	* dwarf_begin_elf.c (valid_p): Switch calloc for malloc for fake CUs.
146	Add explicit initialization of some fields.
147	* dwarf_end.c (cu_free): Add clause to limit freeing of CU internals.
148
1492019-08-26  Jonathon Anderson  <jma14@rice.edu>
150
151	* libdw_alloc.c (__libdw_allocate): Added thread-safe stack allocator.
152	* libdwP.h (Dwarf): Likewise.
153	* dwarf_begin_elf.c (dwarf_begin_elf): Support for above.
154	* dwarf_end.c (dwarf_end): Likewise.
155	* Makefile.am: Use -pthread to provide rwlocks.
156
1572019-07-05  Omar Sandoval  <osandov@fb.com>
158
159	* Makefile.am (libdw_so_LIBS): Replace libebl.a with libebl_pic.a.
160	Move libebl_pic.a to the beginning so that libdw symbols are resolved.
161	(libdw_so_LDLIBS): Remove -ldl.
162	(libdw.so): Remove -rpath.
163	(libdw_a_LIBADD): Add libebl, libebl_backends, and libcpu objects.
164
1652019-08-25  Jonathon Anderson  <jma14@rice.edu>
166
167	* dwarf_getcfi.c (dwarf_getcfi): Set default_same_value to false.
168
1692019-08-12  Mark Wielaard  <mark@klomp.org>
170
171	* libdw.map (ELFUTILS_0.177): Add new version of dwelf_elf_begin.
172
1732019-06-28  Mark Wielaard  <mark@klomp.org>
174
175	* libdw.map (ELFUTILS_0.177): New section. Add
176	dwelf_elf_e_machine_string.
177
1782019-05-16  Mark Wielaard  <mark@klomp.org>
179
180	* dwarf.h: Add DW_AT_GNU_numerator, DW_AT_GNU_denominator and
181	DW_AT_GNU_bias.
182
1832019-04-28  Mark Wielaard  <mark@klomp.org>
184
185	* dwarf_siblingof.c (dwarf_siblingof): Don't initialize addr.
186
1872019-04-28  Mark Wielaard  <mark@klomp.org>
188
189	* dwarf_getlocation.c (dwarf_getlocation_addr): Call
190	check_constant_offset with llbufs and listlens directly.
191
1922019-04-27  Mark Wielaard  <mark@klomp.org>
193
194	* dwarf_getlocation.c (store_implicit_value): Check dbg isn't
195	NULL.
196
1972019-02-02  Mark Wielaard  <mark@klomp.org>
198
199	* dwarf_nextcu.c (__libdw_next_unit): Define bytes_end.
200	Check there are enough bytes to read extended length, version
201	and unit.
202
2032019-01-20  Mark Wielaard  <mark@klomp.org>
204
205	* dwarf_getsrclines.c (read_srclines): Check terminating NUL byte
206	for dir and file lists.
207
2082018-10-23  Mark Wielaard  <mark@klomp.org>
209
210	* dwarf_child.c (__libdw_find_attr): Initialize readp to NULL.
211	* dwarf_getattrs.c (dwarf_getattrs): Initialize die_addr to NULL.
212
2132018-10-20  Mark Wielaard  <mark@klomp.org>
214
215	* libdw.map (ELFUTILS_0.175): New section. Add dwelf_elf_begin.
216
2172018-10-29  Milian Wolff  <milian.wolff@kdab.com>
218
219	* dwarf_getcfi_elf.c (getcfi_shdr): Check sh_type != SHT_NOBITS.
220
2212018-09-13  Mark Wielaard  <mark@klomp.org>
222
223	* dwarf_begin_elf.c (check_section): Drop ehdr argument, add and
224	use shstrndx argument.
225	(global_read): Likewise.
226	(scngrp_read): Likewise.
227	(dwarf_begin_elf): Call elf_getshdrstrndx. Pass shstrndx to
228	global_read or scngrp_read.
229
2302018-08-18  Mark Wielaard  <mark@klomp.org>
231
232	* dwarf_getabbrev.c (__libdw_getabbrev): Continue until both name
233	and form are zero.
234	* dwarf_hasattr.c (dwarf_hasattr): Stop when both name and form
235	are zero.
236
2372018-08-18  Mark Wielaard  <mark@klomp.org>
238
239	* dwarf_getaranges.c (dwarf_getaranges.c): Make sure there is enough
240	data to read the address and segment size.
241
2422018-07-04  Ross Burton <ross.burton@intel.com>
243
244	* libdw_alloc.c: Remove error.h include.
245
2462018-06-28  Mark Wielaard  <mark@klomp.org>
247
248	* dwarf_next_cfi.c (dwarf_next_cfi): Check whether length is zero.
249
2502018-06-27  Mark Wielaard  <mark@klomp.org>
251
252	* dwarf_begin_elf.c (check_section): Allow a single .debug_frame
253	section.
254
2552018-06-26  Mark Wielaard  <mark@klomp.org>
256
257	* libdw.h (dwarf_getscn_info): Remove.
258	* libdw.map (ELFUTILS_0.122): Remove dwarf_getscn_info.
259
2602018-06-25  Mark Wielaard  <mark@klomp.org>
261
262	* Makefile.am (libdw_a_SOURCES): Add dwarf_next_lines.c.
263	* libdw.h (dwarf_next_lines): New function declaration.
264	* libdw.map (ELFUTILS_0.173): New section.
265	* dwarf_next_lines.c: New files.
266	* dwarf_begin_elf.c (check_section): Don't error out when elf
267	decompression fails.
268	(valid_p): Allow just a single .debug_line section.
269	* dwarf_getsrclines.c (read_srclines): Keep files relative if comp_dir
270	is missing.
271
2722018-06-22  Mark Wielaard  <mark@klomp.org>
273
274	* dwarf_nextcu.c (__libdw_next_unit): Set next_off to -1 when it would
275	wrap around.
276
2772018-06-18  Mark Wielaard  <mark@klomp.org>
278
279	* dwarf_aggregate_size.c (array_size): New depth argument. Use
280	aggregate_size instead of dwarf_aggregate_size and pass depth.
281	(aggregate_size): New depth argument. Check depth isn't bigger
282	than MAX_DEPTH (256). Pass depth to recursive calls.
283	(dwarf_aggregate_size): ass zero as depth to aggregate_size.
284
2852018-06-18  Mark Wielaard  <mark@klomp.org>
286
287	* dwarf_peel_type.c (dwarf_peel_type): Limit modifier chain to 64.
288
2892018-06-18  Mark Wielaard  <mark@klomp.org>
290
291	* dwarf_aggregate_size.c (aggregate_size): Check die is not NULL.
292
2932018-06-17  Luiz Angelo Daros de Luca  <luizluca@gmail.com>
294
295	* dwarf_getsrclines.c (read_srclines): Intialize filelist early.
296
2972018-06-15  Mark Wielaard  <mark@klomp.org>
298
299	* dwarf_getlocation.c (check_constant_offset): Clarify DW_FORM_data16
300	isn't really a constant.
301	(dwarf_getlocation): Don't handle DW_FORM_data16 as block.
302	(dwarf_getlocation_addr): Likewise.
303	(dwarf_getlocations): Likewise.
304
3052018-06-12  Mark Wielaard  <mark@klomp.org>
306
307	* memory-access.h (read_3ubyte_unaligned_inc): New define.
308
3092018-06-12  Mark Wielaard  <mark@klomp.org>
310
311	* libdw.h (__libdw_dieabbrev): Set die->abbrev to DWARF_END_ABBREV
312	on failure.
313
3142018-06-10  Mark Wielaard  <mark@klomp.org>
315
316	* dwarf_attr_integrate.c (dwarf_attr_integrate): Stop after 16 DIE
317	ref chains.
318	* dwarf_hasattr_integrate.c (dwarf_hasattr_integrate): Likewise.
319
3202018-06-08  Mark Wielaard  <mark@klomp.org>
321
322	* dwarf_getabbrev.c (dwarf_getabbrev): Check die and offset.
323
3242018-06-08  Mark Wielaard  <mark@klomp.org>
325
326	* dwarf_get_units.c (dwarf_get_units): Handle existing error, no
327	dwarf.
328
3292018-06-08  Mark Wielaard  <mark@klomp.org>
330
331	* dwarf_getlocation.c (store_implicit_value): Return error when
332	seeing bad DWARF or when tsearch runs out of memory.
333	(__libdw_intern_expression): Report error when store_implicit_value
334	reported an error.
335
3362018-06-08  Mark Wielaard  <mark@klomp.org>
337
338	* dwarf_getsrclines.c (read_srclines): Sanity check ndirs and nfiles.
339
3402018-06-08  Mark Wielaard  <mark@klomp.org>
341
342	* dwarf_getlocation_attr.c (addr_valp): Set error and return NULL
343	when there is no .debug_addr section.
344	(dwarf_getlocation_attr): If addr_valp returns NULL, then return -1.
345
3462018-06-07  Mark Wielaard  <mark@klomp.org>
347
348	* libdw_findcu.c (__libdw_intern_next_unit): Report DWARF_E_VERSION,
349	not DWARF_E_INVALID_DWARF on unknown version. Set address_size and
350	offset_size to 8 when unknown.
351
3522018-06-06  Mark Wielaard  <mark@klomp.org>
353
354	* libdwP.h (__libdw_dieabbrev): Check DIE addr falls in cu.
355
3562018-06-06  Mark Wielaard  <mark@klomp.org>
357
358	* dwarf_getlocation_die.c (dwarf_getlocation_die): Check offset
359	falls inside cu data.
360
3612018-06-05  Mark Wielaard  <mark@klomp.org>
362
363	* dwarf_getsrclines.c (read_srclines): Explicitly set diridx to -1
364	in case dwarf_formudata fails.
365
3662018-06-05  Mark Wielaard  <mark@klomp.org>
367
368	* dwarf_getaranges (dwarf_getaranges): Free new_arange if
369	__libdw_findcu fails.
370
3712018-06-05  Mark Wielaard  <mark@klomp.org>
372
373	* dwarf_getsrclines.c (read_srclines): Define dirarray early and
374	check whether or not it is equal to dirstack on exit/out before
375	cleanup.
376
3772018-06-05  Mark Wielaard  <mark@klomp.org>
378
379	* dwarf_getalt.c (find_debug_altlink): id_path array should be 2
380	larger to contain MAX_BUILD_ID_BYTES.
381
3822018-05-31  Mark Wielaard  <mark@klomp.org>
383
384	* libdw_find_split_unit.c (try_split_file): New function extracted
385	from...
386	(__libdw_find_split_unit): ... here. Try both the relative and
387	absolute paths to find a .dwo file.
388
3892018-05-30  Mark Wielaard  <mark@klomp.org>
390
391	* libdw/dwarf_getsrclines.c (read_srclines): Change ndir and
392	ndirlist to size_t. Add check to see ndirlist doesn't overflow.
393
3942018-05-31  Mark Wielaard  <mark@klomp.org>
395
396	* dwarf_dieoffset.c: Check die->cu != NULL. Return -1, not ~0ul
397	on failure.
398
3992018-05-29  Mark Wielaard  <mark@klomp.org>
400
401	* dwarf_cuoffset.c (dwarf_cuoffset): Check die->cu is not NULL.
402	* dwarf_die_addr_die.c (dwarf_die_addr_die): Also search split
403	Dwarfs.
404	* libdwP.h (struct Dwarf): Add split_tree field.
405	(__libdw_find_split_dbg_addr): New internal function definition.
406	(__libdw_finddbg_cb): Likewise.
407	* libdw_find_split_unit.c (__libdw_find_split_unit): Insert split
408	Dwarf into skeleton dbg split_tree.
409	* libdw_findcu.c (__libdw_finddbg_cb): New function.
410	(__libdw_find_split_dbg_addr): Likewise.
411	* dwarf_end (dwarf_end): Destroy split_tree.
412
4132018-05-29  Mark Wielaard  <mark@klomp.org>
414
415	* dwarf.h: Add GNU DebugFission list entry encodings
416	DW_LLE_GNU_end_of_list_entry,
417	DW_LLE_GNU_base_address_selection_entry,
418	DW_LLE_GNU_start_end_entry and DW_LLE_GNU_start_length_entry.
419	* dwarf_ranges.c (__libdw_read_begin_end_pair_inc): Handle
420	GNU DebugFission list entries.
421
4222018-05-28  Mark Wielaard  <mark@klomp.org>
423
424	* libdw_find_split_unit.c (__libdw_find_split_unit): End split_dwarf
425	only after we tried every unit id in it.
426
4272018-04-07  Mark Wielaard  <mark@klomp.org>
428
429	* libdwP.h (struct Dwarf_CU): Add locs_base.
430	(__libdw_cu_locs_base): New static inline function.
431	* libdw_findcu.c (__libdw_intern_next_unit): Initialize locs_base.
432	* dwarf_begin_elf.c (valid_p): Create fake_loclists_cu if necessary.
433	* dwarf_end.c (dwarf_end): Clean up fake_loclists_cu.
434	* dwarf_getlocation.c (initial_offset): Handle .debug_loclists.
435	(getlocations_addr): Likewise.
436	(dwarf_getlocation_addr): Likewise.
437	* dwarf_getlocation_attr.c (attr_form_cu): Use fake_loclists_cu for
438	DWARF5.
439	(initial_offset): Handle DW_FORM_loclistx.
440	* dwarf_ranges.c (__libdw_read_begin_end_pair_inc): Handle
441	.debug_loclists.
442	* libdwP.h (struct Dwarf): Add fake_loclists_cu.
443
4442018-04-12  Mark Wielaard  <mark@klomp.org>
445
446	* dwarf.h: Add DWARF5 location list entry DW_LLE encodings.
447	* begin_elf.c (dwarf_scnnames): Add IDX_debug_loclists.
448	* dwarf_error.c (errmsgs): Remove DWARF_E_NO_LOCLIST. And replace
449	with DWARF_E_NO_DEBUG_LOC, DWARF_E_NO_DEBUG_LOCLISTS and
450	DWARF_E_NO_LOC_VALUE.
451	* dwarf_formudata.c (dwarf_formudata): Handle DW_AT_loclists_base
452	and DW_FORM_loclistx.
453	* dwarf_getlocation.c (attr_ok): Use DWARF_E_NO_LOC_VALUE.
454	(initial_offset): Use DWARF_E_NO_DEBUG_LOC.
455	* libdwP.h: Add IDX_debug_rnglists. Remove DWARF_E_NO_LOCLIST.
456	Add DWARF_E_NO_DEBUG_LOC, DWARF_E_NO_DEBUG_LOCLISTS and
457	DWARF_E_NO_LOC_VALUE.
458
4592018-05-25  Mark Wielaard  <mark@klomp.org>
460
461	* libdw_find_split_unit.c (__libdw_find_split_unit): Extract linking
462	skeleton and split compile units code into...
463	* libdwP (__libdw_link_skel_split): ...this new function.
464
4652018-04-06  Mark Wielaard  <mark@klomp.org>
466
467	* dwarf_formaddr.c (__libdw_addrx): New function, extracted from...
468	(dwarf_formaddr): here. Use __libdw_addrx.
469	* dwarf_getlocation.c (getlocations_addr): Pass cu to
470	__libdw_read_begin_end_pair_inc.
471	* dwarf_ranges.c (__libdw_read_begin_end_pair_inc): Take cu as
472	argument. Handle .debug_rnglists.
473	(initial_offset): Handle .debug_rnglists and DW_FORM_rnglistx.
474	(dwarf_ranges): Likewise. Check cu isn't NULL before use. Pass cu to
475	__libdw_read_begin_end_pair_inc.
476	* libdwP.h (__libdw_read_begin_end_pair_inc): Take cu as argument.
477	(__libdw_cu_ranges_base): Handle DW_AT_rnglists_base.
478	(__libdw_addrx): New function definition.
479
4802018-04-11  Mark Wielaard  <mark@klomp.org>
481
482	* dwarf.h: Add DWARF5 range list entry DW_RLE encodings.
483	* begin_elf.c (dwarf_scnnames): Add IDX_debug_rnglists.
484	* dwarf_error.c (errmsgs): Add DWARF_E_NO_DEBUG_RNGLISTS.
485	* dwarf_formudata.c (dwarf_formudata): Handle DW_AT_rnglists_base
486	and DW_FORM_rnglistx.
487	* dwarf_getscopes.c (pc_match): Also check for
488	DWARF_E_NO_DEBUG_RNGLISTS.
489	* libdwP.h: Add IDX_debug_rnglists.
490
4912018-05-25  Mark Wielaard  <mark@klomp.org>
492
493	* dwarf_getlocation_attr.c (__libdw_cu_addr_base): Cast offset to
494	uintptr_t before returning as pointer.
495
4962018-05-22  Mark Wielaard  <mark@klomp.org>
497
498	* dwarf_getlocation.c (__libdw_cu_base_address): Treat errors of
499	getting lowpc or entrypc the same as missing base address (zero).
500	* dwarf_highpc (dwarf_highpc): Handle any address form. Always set
501	error when attribute could not be found.
502
5032018-05-21  Mark Wielaard  <mark@klomp.org>
504
505	* dwarf_begin_elf.c (valid_p): Add a fake_addr_cu to the result.
506	* dwarf_end.c (cu_free): Disconnect the fake_addr_cu from the split
507	dwarf if shared with skeleton.
508	(dwarf_end): release fake_addr_cu.
509	* dwarf_formaddr.c (__libdw_cu_addr_base): Move to...
510	* libdwP.h (__libdw_cu_addr_base): ... here.
511	(struct Dwarf): Add fake_addr_cu field.
512	* dwarf_formudata.c (dwarf_formudata): Handle
513	DW_FORM_GNU_addr_index and DW_FORM_addrx[1234].
514	* dwarf_getlocation_attr.c (addr_valp): New static function.
515	(dwarf_getlocation_attr): Create attribute for values of
516	DW_OP_GNU_const_index, DW_OP_constx and DW_OP_GNU_addr_index and
517	DW_OP_addrx.
518	* libdw_find_split_unit.c (__libdw_find_split_unit): Connect
519	IDX_debug_addr sectiondata and fake_addr_cu between split and
520	skeleton.
521
5222018-05-20  Mark Wielaard  <mark@klomp.org>
523
524	* dwarf_cu_info.c: New file.
525	* Makefile.am (libdw_a_SOURCES): Add dwarf_cu_info.c.
526	* libdw.h (dwarf_cu_info): New function declaration.
527	* libdw.map (ELFUTILS_0.171): Add dwarf_cu_info.
528
5292018-05-24  Mark Wielaard  <mark@klomp.org>
530
531	* dwarf_ranges.c (dwarf_ranges): Check for NULL cu.
532	* libdw_findcu.c (__libdw_intern_next_unit): Initialize ranges_base.
533
5342018-05-18  Mark Wielaard  <mark@klomp.org>
535
536	* dwarf_formudata.c (__libdw_formptr): Handle the special case
537	of IDX_debug_ranges for DW_UT_split_compile with version < 5.
538	* dwarf_highpc.c (dwarf_highpc): Use dwarf_lowpc, check for
539	split compile cudie.
540	* dwarf_lowpc.c (dwarf_lowpc): Check for split compile cudie.
541	* dwarf_ranges.c (dwarf_ranges): Switch cu and sectiondata for
542	split compile units.
543	* libdwP.h (struct Dwarf_CU): Add ranges_base field.
544	(__libdw_cu_ranges_base): New static inline function.
545
5462018-05-18  Mark Wielaard  <mark@klomp.org>
547
548	* libdw_findcu.c (__libdw_intern_next_unit): Init files to NULL.
549	* dwarf_getsrclines.c (dwarf_getsrclines): Handle split units by
550	taking the line table from the skeleton.
551	* dwarf_getsrcfiles.c (dwarf_getsrcfiles): Handle split units by
552	only taking the files from .debug_line offset zero (if it exists),
553	otherwise fall back to the skeleton.
554
5552018-05-17  Mark Wielaard  <mark@klomp.org>
556
557	* dwarf_begin_elf.c (__libdw_debugdir): New function.
558	(valid_p): Call __libdw_debugdir.
559	* dwarf_end.c (dwarf_end.c): Free debugdir.
560	* dwarf_getalt.c (__libdw_filepath): Extract __libdw_debugdir logic.
561	take debugdir as argument instead of fd.
562	(find_debug_altlink): Call __libdw_filepath with debugdir.
563	* libdwP.h (struct Dwarf): Add debugdir field.
564	(__libdw_debugdir): New function prototype.
565	(__libdw_filepath): Adjust prototype to take a const char * instead of
566	an int.
567	* libdw_find_split_unit.c (__libdw_find_split_unit): Call
568	__libdw_filepath with debugdir.
569
5702018-05-17  Mark Wielaard  <mark@klomp.org>
571
572	* dwarf_attr_integrate.c (dwarf_attr_integrate): Handle split_compile
573	unit DIE, search skeleton_compile unit DIE.
574	* dwarf_hasattr_integrate.c (dwarf_hasattr_integrate): Likewise.
575	* libdwP.h (is_cudie): Check cu is not NULL.
576
5772018-05-19  Mark Wielaard  <mark@klomp.org>
578
579	* libdwP.h (__libdw_find_split_unit): Mark as internal_function.
580
5812018-05-15  Mark Wielaard  <mark@klomp.org>
582
583	* Makefile.am (libdw_a_SOURCES): Add libdw_find_split_unit.c.
584	* dwarf_end.c (cu_free): Free split Dwarf.
585	* dwarf_get_units.c (dwarf_get_units): Handle DW_UT_skeleton by
586	calling __libdw_find_split_unit.
587	* libdwP.h (struct Dwarf_CU): Add split Dwarf_CU field.
588	(__libdw_find_split_unit): New function prototype.
589	(str_offsets_base_off): Use cu Dwarf if dbg is NULL.
590	(filepath): Rename to ...
591	(__libdw_filepath): This. Which is the actual function name in
592	dwarf_getalt.c.
593	(libdw_find_split_unit.c): New file.
594	* libdw_findcu.c (__libdw_intern_next_unit): Initialize split to -1.
595
5962018-05-15  Mark Wielaard  <mark@klomp.org>
597
598	* libdwP.h (__libdw_first_die_from_cu_start): Adjust commented out
599	asserts.
600	* libdw_findcu.c (__libdw_intern_next_unit): For version 4 DWARF if
601	the cudie has a DW_AT_GNU_dwi_id set the unit_id8 and unit_type to
602	DW_UT_skeleton or DW_UT_split_compile based on whether the cudie has
603	child DIEs and a DW_AT_GNU_dwo_name attribute.
604
6052018-05-14  Mark Wielaard  <mark@klomp.org>
606
607	* dwarf.h: Add GNU Debug Fission extensions. DW_AT_GNU_dwo_name,
608	DW_AT_GNU_dwo_id, DW_AT_GNU_ranges_base, DW_AT_GNU_addr_base,
609	DW_AT_GNU_pubnames, DW_AT_GNU_pubtypes. DW_FORM_GNU_addr_index,
610	DW_FORM_GNU_str_index. DW_OP_GNU_addr_index, DW_OP_GNU_const_index.
611	* dwarf_formaddr.c (dwarf_formaddr): Handle DW_FORM_GNU_addr_index
612	as DW_FORM_addrx.
613	(__libdw_cu_addr_base): Check for both DW_AT_GNU_addr_base and
614	DW_AT_addr_base.
615	* dwarf_formstring.c (dwarf_formstring): Handle DW_FORM_GNU_str_index
616	as DW_FORM_strx.
617	* dwarf_formudata.c (dwarf_formudata): Recognize DW_AT_GNU_addr_base
618	as addrptr. Recognize DW_AT_GNU_ranges_base as rangelistptr.
619	* dwarf_getlocation.c (__libdw_intern_expression): Handle
620	DW_OP_GNU_addr_index as DW_OP_addrx and DW_OP_GNU_const_index as
621	DW_OP_constx.
622	* libdw_form.c (__libdw_form_val_compute_len): Handle
623	DW_FORM_GNU_addr_index and DW_FORM_GNU_str_index taking an uleb128.
624
6252018-05-12  Mark Wielaard  <mark@klomp.org>
626
627	* dwarf_begin_elf.c (check_section): Also recognize .dwo section
628	name variants.
629
6302018-05-11  Mark Wielaard  <mark@klomp.org>
631
632	* dwarf_formudata.c (dwarf_formudata): Handle DW_AT_macros as macptr.
633	* dwarf_getmacros.c (get_table_for_offset): Add DW_MACRO_define_sup,
634	DW_MACRO_undef_sup, DW_MACRO_import_sup, DW_MACRO_define_strx and
635	DW_MACRO_undef_strx. Add str_offsets_base_off to fake CU. Deal with
636	DW_AT_macros. Use libdw_valid_user_form.
637
6382018-05-09  Mark Wielaard  <mark@klomp.org>
639
640	* dwarf_formstring.c (__libdw_cu_str_off_base): Moved to...
641	* libdwP.h (__libdw_cu_str_off_base): ...here. Make static inline.
642	(str_offsets_base_off): New internal function that also parses
643	.debug_str_offsets header if necessary.
644
6452018-05-11  Mark Wielaard  <mark@klomp.org>
646
647	* dwarf_siblingof.c (dwarf_siblingof): Don't reference cu till it is
648	known the Dwarf_Die is came from is valid.
649	* libdwP.h (__libdw_dieabbrev): Check cu is not NULL.
650
6512018-05-08  Mark Wielaard  <mark@klomp.org>
652
653	* dwarf_formref.c (__libdw_formref): Explicitly don't handle
654	DW_FORM_ref_sup4 and DW_FORM_ref_sup8.
655	* dwarf_formref_die.c (dwarf_formref_die): Handle DW_FORM_ref_sup4
656	and DW_FORM_ref_sup8.
657	* dwarf_formstring.c (dwarf_formstring): Handle DW_FORM_strp_sup
658	as DW_FORM_GNU_strp_alt.
659
6602018-05-05  Mark Wielaard  <mark@klomp.org>
661
662	* dwarf.h: Add DWARF line content descriptions.
663	* libdwP.h (libdw_valid_user_form): New static function.
664	* dwarf_getsrclines.c (read_srclines): Check and parse version 5
665	DWARF header, dir and file tables separately from older versions
666	where different.
667
6682018-04-24  Mark Wielaard  <mark@klomp.org>
669
670	* dwarf_begin_elf.c (dwarf_scnnames): Add ".debug_line_str".
671	* dwarf_error.c (errmsgs): Add DWARF_E_NO_DEBUG_STR and
672	DWARF_E_NO_DEBUG_LINE_STR.
673	* dwarf_formstring.c (dwarf_formstring): Handle DW_FORM_line_strp.
674	Get data from either .debug_str or .debug_line_str.
675	* libdwP.h: Add IDX_debug_line_str, DWARF_E_NO_DEBUG_STR and
676	DWARF_E_NO_DEBUG_LINE_STR.
677
6782018-04-03  Mark Wielaard  <mark@klomp.org>
679
680	* dwarf_formudata.c (__libdw_formptr): Take and return const
681	unsigned char pointers.
682	* dwarf_getlocation.c (attr_base_address): Rename to...
683	(__libdw_cu_base_address): this. Take Dwarf_CU, check and set
684	base_address.
685	(initial_offset_base): Renamed to...
686	(initial_offset): this. Only provide offset.
687	(getlocations_addr): Move data size check and
688	address base addition into __libdw_read_begin_end_pair_inc. Use
689	__libdw_cu_base_address and initial_offset. Drop Elf_Data NULL
690	check (already done by initial_offset, through __libdw_formptr).
691	(dwarf_getlocations): Use __libdw_cu_base_address and initial_offset.
692	Drop Elf_Data NULL check.
693	* dwarf_ranges.c (__libdw_read_begin_end_pair_inc): Change argument
694	type of readp to Add readend argument. Check data size. Include base
695	in begin and end result.
696	(initial_offset): New static function.
697	(dwarf_ranges): Don't check Elf_Data being NULL (already done by
698	initial_offset, through __libdw_formptr). Use __libdw_cu_base_address
699	and initial_offset. Remove base check and addition (already done by
700	__libdw_read_begin_end_pair_inc.
701	* libdwP.h (Dwarf_CU): Add base_address field.
702	(__libdw_read_begin_end_pair_inc): Change argument type of readp to
703	const. Add readend argument.
704	(__libdw_formptr): Take and return const unsigned char pointers.
705	* libdw_findcu.c (__libdw_intern_next_unit): Initialize Dwarf_CU
706	base_address.
707
7082018-04-04  Mark Wielaard  <mark@klomp.org>
709
710	* libdw_findcu.c (__libdw_intern_next_unit): Initialize Dwarf_CU
711	addr_base and str_off_base.
712
7132018-03-23  Mark Wielaard  <mark@klomp.org>
714
715	* dwarf_begin_elf.c (dwarf_scnnames): Add IDX_debug_str_offsets,
716	increase size.
717	* dwarf_error.c (errmsgs): Add DWARF_E_NO_STR_OFFSETS.
718	* dwarf_formstring.c (dwarf_formstring): Handle DW_FORM_strx[1234].
719	(__libdw_cu_str_off_base): New function.
720	* dwarf_formudata.c (dwarf_formudata): Handle IDX_debug_str_offsets
721	as stroffsetsptr.
722	* libdwP.h: Add IDX_debug_str_offsets and DWARF_E_NO_STR_OFFSETS.
723	(struct Dwarf_CU): Add str_off_base field.
724	(__libdw_cu_str_off_base): New function declaration.
725
7262018-03-22  Mark Wielaard  <mark@klomp.org>
727
728	* dwarf_begin_elf.c (dwarf_scnnames): Add IDX_debug_addr.
729	* dwarf_error.c (errmsgs): Add DWARF_E_NO_DEBUG_ADDR.
730	* dwarf_formaddr.c (dwarf_formaddr): Handle DW_FORM_addrx[1234].
731	(__libdw_cu_addr_base): New function.
732	* dwarf_formudata.c (dwarf_formudata): Handle DW_AT_addr_base as
733	addrptr.
734	* libdwP.h: Add IDX_debug_addr and DWARF_E_NO_DEBUG_ADDR.
735	(struct Dwarf_CU): Add addr_base field.
736	(__libdw_cu_addr_base): New function definition.
737	* memory-access.h (file_byte_order): New static function.
738	(read_3ubyte_unaligned): New inline function.
739
7402018-03-29  Mark Wielaard  <mark@klomp.org>
741
742	* libdw.h (dwarf_decl_file): Extend documentation.
743	(dwarf_linesrc): Likewise.
744	(dwarf_filesrc): Likewise.
745
7462018-03-06  Mark Wielaard  <mark@klomp.org>
747
748	* dwarf.h: Add DW_OP_implicit_pointer, DW_OP_addrx, DW_OP_constx,
749	DW_OP_entry_value, DW_OP_const_type, DW_OP_regval_type,
750	DW_OP_deref_type, DW_OP_xderef_type, DW_OP_convert and
751	DW_OP_reinterpret.
752	* dwarf_getlocation.c (__libdw_intern_expression): Handle
753	DW_OP_convert, DW_OP_reinterpret, DW_OP_addrx, DW_OP_constx,
754	DW_OP_regval_type, DW_OP_entry_value, DW_OP_implicit_pointer,
755	DW_OP_deref_type, DW_OP_xderef_type and DW_OP_const_type.
756	* dwarf_getlocation_attr.c (dwarf_getlocation_attr): Handle
757	DW_OP_entry_value, DW_OP_const_type and DW_OP_implicit_pointer.
758	* dwarf_getlocation_die.c (dwarf_getlocation_die): Handle
759	DW_OP_implicit_pointer, DW_OP_convert, DW_OP_reinterpret,
760	DW_OP_const_type, DW_OP_regval_type, DW_OP_deref_type and
761	DW_OP_xderef_type.
762	* dwarf_getlocation_implicit_pointer.c
763	(dwarf_getlocation_implicit_pointer): Handle DW_OP_implicit_pointer.
764
7652018-03-01  Mark Wielaard  <mark@klomp.org>
766
767	* dwarf.h: Add DW_AT_GNU_locviews and DW_AT_GNU_entry_view.
768	* dwarf_formudata.c (dwarf_formudata): Handle DW_AT_GNU_locviews
769	as a loclistptr.
770
7712018-02-09  Mark Wielaard  <mark@klomp.org>
772
773	* dwarf_formblock.c (dwarf_formblock): Handle DW_FORM_data16 as a
774	16 byte block.
775
7762018-02-09  Mark Wielaard  <mark@klomp.org>
777
778	* dwarf_child.c (__libdw_find_attr): Handle DW_FORM_implicit_const.
779	* dwarf_formsdata.c (dwarf_formsdata): Likewise.
780	* dwarf_formudata.c (dwarf_formudata): Likewise.
781	* dwarf_getabbrev.c (__libdw_getabbrev): Likewise.
782	* dwarf_getattrs.c (dwarf_getattrs): Likewise.
783	* dwarf_hasattr.c (dwarf_hasattr): Likewise.
784	* dwarf_getabbrevattr.c (dwarf_getabbrevattr_data): New function
785	that will also return any data associated with the abbrev. Which
786	currently is only for DW_FORM_implicit_const. Based on...
787	(dwarf_getabbrevattr): ... this function. Which now just calls
788	dwarf_getabbrevattr_data.
789	* libdw.h (dwarf_getabbrevattr_data): Declare new function.
790	* libdw.map (ELFUTILS_0.170): Add dwarf_getabbrevattr_data.
791	* libdwP.h (dwarf_getabbrevattr_data): INTDECL.
792	* memory-access.h (__libdw_get_sleb128_unchecked): New inlined
793	function based on __libdw_get_uleb128_unchecked.
794
7952018-02-08  Mark Wielaard  <mark@klomp.org>
796
797	* dwarf.h: Add DWARF5 DW_FORMs.
798	* libdwP.h (__libdw_form_val_compute_len): Handle fix length
799	DW_FORM_implicit_const, DW_FORM_addrx[1234], DW_FORM_strx[1234],
800	DW_FORM_ref_sup[48] and DW_FORM_data16.
801	* libdw_form.c (__libdw_form_val_compute_len): DW_FORM_strp_sup
802	and DW_FORM_line_strp are offset_size. DW_FORM_addrx, DW_FORM_strx,
803	DW_FORM_loclistx and DW_FORM_rnglistx are uleb128.
804
8052018-01-30  Mark Wielaard  <mark@klomp.org>
806
807	* Makefile.am (libdw_a_SOURCES): Add dwarf_get_units.c.
808	* dwarf_get_units.c: New file.
809	* libdw.h (dwarf_get_units): New function declaration.
810	* libdw.map (ELFUTILS_0.170): Add dwarf_get_units.
811
8122018-01-29  Mark Wielaard  <mark@klomp.org>
813
814	* dwarf.h (DW_UT_*): Add DWARF Unit Header Types.
815	* dwarf_cu_die.c (dwarf_cu_die): Rename arguments. type_signaturep
816	is now called unit_idp. type_offsetp is now called subdie_offsetp.
817	* dwarf_formref_die.c (dwarf_formref_die): Scan both .debug_info
818	and .debug_types sections for type units when type signature ref
819	not found.
820	* dwarf_getaranges.c (dwarf_getaranges): Use __libdw_findcu and
821	__libdw_first_die_off_from_cu instead of trying by hand.
822	* dwarf_getlocation_die.c (dwarf_getlocation_die): Use ISV4TU
823	instead of checking type_offset by hand.
824	* dwarf_getlocation_implicit_pointer.c
825	(dwarf_getlocation_implicit_pointer): Likewise.
826	* dwarf_nextcu.c (dwarf_next_unit): Call __libdw_next_unit.
827	(__libdw_next_unit): New function based on dwarf_next_unit with
828	DWARF5 header support.
829	* libdwP.h (struct Dwarf_CU): Renamed type_offset to subdie_offset
830	and type_sig8 to unit_id8.
831	(ISV4TU): New macro to determine whether a CU is a version 4 type
832	unit (which comes from the .debug_types section).
833	(DIE_OFFSET_FROM_CU_OFFSET): Replaced macro by real function...
834	(__libdw_first_die_from_cu_start): ... that also handles DWARF5
835	unit headers.
836	(__libdw_first_die_off_from_cu): New function that calls the above
837	using the CU fields.
838	(CUDIE): Use __libdw_first_die_off_from_cu.
839	(SUBDIE): New macro that provides the DIE for a CU using the
840	subdie_offset.
841	(__libdw_next_unit): New internal function declaration.
842	* libdw_findcu.c (__libdw_intern_next_unit): Use __libdw_next_unit.
843	Accept DWARF version 5 headers. Setup unit_type.
844	(__libdw_findcu): Rename debug_types argument to v4_debug_types
845	argument (to indicate that we are looking in the .debug_types
846	section). Support finding the exact offset (unit header start).
847
8482018-01-25  Mark Wielaard  <mark@klomp.org>
849
850	* Makefile.am (libdw_a_SOURCES): Add dwarf_die_addr_die.c.
851	* dwarf_die_addr_die.c: New file.
852	* libdw.h (dwarf_die_addr_die): New function declaration.
853	* libdw.map (ELFUTILS_0.171): New section with dwarf_die_addr_die.
854	* libdwP.h (__libdw_findcu_addr): New internal function declaration.
855	* libdw_findcu.c (__libdw_findcu_addr): New internal function.
856
8572018-02-09  Joshua Watt  <JPEWhacker@gmail.com>
858
859	* cfi.c (execute_cfi): Use FALLTHROUGH macro instead of comment.
860	* dwarf_frame_register.c (dwarf_frame_register): Likewise.
861
8622018-01-22  Mark Wielaard  <mark@klomp.org>
863
864	* Makefile.am (AM_CPPFLAGS): Add -I libdwelf.
865	* dwarf_begin_elf.c (dwarf_begin_elf): Initialize Dwarf alt_fd to -1.
866	* dwarf_end.c (dwarf_end): Call dwarf_end and close on the alt_dwarf
867	and alt_fd if we allocated them.
868	* dwarf_fromref_die.c (dwarf_formref_die): Call dwarf_getalt.
869	* dwarf_formstring.c (dwarf_formstring): Likewise.
870	* dwarf_getalt.c (__libdw_filepath): New internal function.
871	(find_debug_altlink): New static function.
872	(dwarf_getalt): Check Dwarf alt_dwarf and call find_debug_altlink.
873	Cache result.
874	* dwarf_setalt.c (dwarf_setalt): Clean up Dwarf alt_dwarf and alt_fd
875	if we allocated.
876	* libdw.h (dwarf_getalt): Extend documentation.
877	(dwarf_setalt): Likewise.
878	* libdwP.h (struct Dwarf): Add alt_fd field.
879	(filepath): Declare new internal function.
880
8812018-01-14  Petr Machata  <pmachata@gmail.com>
882
883	* dwarf_formsdata.c (dwarf_formsdata):
884	<DW_FORM_data1>: Cast to signed char.
885	<DW_FORM_data2,4,8>: Use read_*sbyte_unaligned instead of
886	read_*ubyte_unaligned.
887
8882017-12-26  Mark Wielaard  <mark@klomp.org>
889
890	* libdwP.h (struct Dwarf_Abbrev): Pack struct. Remove attrcnt,
891	use bitfields for has_children and code.
892	* dwarf_getabbrev.c (__libdw_getabbrev): Don't count attrs.
893	* dwarf_getattrcnt.c (dwarf_getattrcnt): Count attrs.
894
8952017-12-26  Mark Wielaard  <mark@klomp.org>
896
897	* memory-access.h (__libdw_get_uleb128_unchecked): New function.
898	(get_uleb128_unchecked): New define.
899	* dwarf_child.c (__libdw_find_attr): Use get_uleb128_unchecked to
900	read attr name and form.
901	* dwarf_getabbrevattr.c (dwarf_getabbrevattr): Likewise.
902	* dwarf_getattrs.c (dwarf_getattrs): Likewise.
903	* dwarf_hasattr.c (dwarf_hasattr): Likewise.
904
9052017-12-28  Mark Wielaard  <mark@klomp.org>
906
907	* dwarf_offdie.c (__libdw_offdie): Check sectiondata exists.
908
9092017-05-09  Ulf Hermann  <ulf.hermann@qt.io>
910	    Mark Wielaard  <mark@klomp.org>
911
912	* libdwP.h (__libdw_in_section): Fix check for the upper border of
913	the range.
914	(__libdw_offset_in_section): Likewise.
915
9162017-12-20  Mark Wielaard  <mark@klomp.org>
917
918	* libdwP.h (struct Dwarf_CU): Add sec_idx field.
919	(cu_sec_idx): Return cu->sec_idx.
920	* libdw_findcu.c (__libdw_intern_next_unit): Set cu sec_idx to
921	IDX_debug_info or IDX_debug_types.
922	* dwarf_begin_elf.c (valid_p): Set fake_loc_cu->sec_idx to
923	IDX_debug_loc.
924	* dwarf_getmacros.c (read_macros): Set fake_cu->sec_idx to
925	IDX_debug_macro or IDX_debug_macinfo.
926
9272017-12-12  Mark Wielaard  <mark@klomp.org>
928
929	* dwarf_aggregate_size.c (dwarf_aggregate_size): Don't peel the
930	given DIE. Reserve memory for a new DIE first.
931
9322017-12-11  Dima Kogan  <dima@secretsauce.net>
933
934	* dwarf_aggregate_size.c (array_size): Handle multi-dimensional
935	arrays properly.
936
9372017-11-03  Mark Wielaard  <mark@klomp.org>
938
939	* dwarf_getlocation.c (__libdw_intern_expression): Handle
940	DW_OP_GNU_variable_value.
941	* dwarf_getlocation_attr.c (dwarf_getlocation_attr): Likewise.
942	* dwarf_getlocation_die.c (dwarf_getlocation_die): Likewise.
943
9442017-11-03  Mark Wielaard  <mark@klomp.org>
945
946	* dwarf_getlocation.c (attr_ok): Always accept DW_FORM_exprloc.
947	Update list of acceptable attribute codes based on DWARF5.
948
9492017-11-03  Mark Wielaard  <mark@klomp.org>
950
951	* dwarf.h: Add DW_OP_GNU_variable_value.
952
9532017-10-03  Mark Wielaard  <mark@klomp.org>
954
955	* libdw.h: Define LIBDW_CIE_ID and use it in dwarf_cfi_cie_p.
956
9572017-08-18  Ulf Hermann  <ulf.hermann@qt.io>
958
959	* memory-access.h: Use attribute_packed.
960
9612017-02-27  Ulf Hermann  <ulf.hermann@qt.io>
962
963	* libdwP.h: Use attribute_hidden.
964	* libdw_alloc.c: Likewise.
965
9662017-02-27  Ulf Hermann  <ulf.hermann@qt.io>
967
968	* Makefile.am: Use fpic_CFLAGS and dso_LDFLAGS.
969
9702017-07-26  Mark Wielaard  <mark@klomp.org>
971
972	* dwarf.h: Add DW_MACRO_* and compat defines for DW_MACRO_GNU_*.
973	* dwarf_getmacros.c (get_table_for_offset): Accept either version
974	4 or 5. Use DW_MACRO names instead of DW_MACRO_GNU names.
975	(read_macros): Use table version for fake_cu.
976
9772017-07-26  Mark Wielaard  <mark@klomp.org>
978
979	* dwarf_peel_type.c (dwarf_peel_type): Handle DW_TAG_immutable_type,
980	DW_TAG_packed_type and DW_TAG_shared_type.
981	* libdw.h (dwarf_peel_type): Extend documentation.
982
9832017-07-26  Mark Wielaard  <mark@klomp.org>
984
985	* dwarf.h: Add DW_DEFAULTED_no, DW_DEFAULTED_in_class and
986	DW_DEFAULTED_out_of_class.
987
9882017-07-26  Mark Wielaard  <mark@klomp.org>
989
990	* dwarf.h: Add DW_CC_pass_by_reference and DW_CC_pass_by_reference.
991
9922017-07-26  Mark Wielaard  <mark@klomp.org>
993
994	* dwarf_default_lower_bound.c: New file.
995	* Makefile.am (libdw_a_SOURCES): Add dwarf_default_lower_bound.c.
996	* dwarf_aggregate_size.c (array_size): Use dwarf_default_lower_bound.
997	* dwarf_error.c (errmsgs): Add DWARF_E_UNKNOWN_LANGUAGE.
998	* libdw.h: Add dwarf_default_lower_bound.
999	* libdw.map (ELFUTILS_0.170): Add dwarf_default_lower_bound.
1000	* libdwP.h: Add DWARF_E_UNKNOWN_LANGUAGE and
1001	dwarf_default_lower_bound INTDECL.
1002
10032017-07-26  Mark Wielaard  <mark@klomp.org>
1004
1005	* dwarf.h: Add DW_LANG_OpenCL, DW_LANG_Modula3,
1006	DW_LANG_C_plus_plus_03, DW_LANG_OCaml, DW_LANG_Rust, DW_LANG_Swift,
1007	DW_LANG_Julia, DW_LANG_Dylan, DW_LANG_RenderScript, DW_LANG_BLISS.
1008	* dwarf_aggregate_size.c (array_size): Add lower bound for
1009	DW_LANG_C_plus_plus_03, DW_LANG_Python, DW_LANG_OpenCL,
1010	DW_LANG_Haskell, DW_LANG_OCaml, DW_LANG_Rust, DW_LANG_Swift,
1011	DW_LANG_Dylan, DW_LANG_RenderScript, DW_LANG_Modula3,
1012	DW_LANG_Julia and DW_LANG_BLISS.
1013
10142017-07-26  Mark Wielaard  <mark@klomp.org>
1015
1016	* dwarf.h: Add DW_ATE_UCS and DW_ATE_ASCII.
1017
10182017-07-25  Mark Wielaard  <mark@klomp.org>
1019
1020	* dwarf.h: Add DW_TAG_coarray_type, DW_TAG_generic_subrange,
1021	DW_TAG_dynamic_type, DW_TAG_call_site, DW_TAG_call_site_parameter,
1022	DW_TAG_skeleton_unit, DW_TAG_immutable_type. Add reserved comments
1023	for currently unused numbers.
1024
10252017-07-25  Mark Wielaard  <mark@klomp.org>
1026
1027	* dwarf.h (DWARF attributes enum): Remove DW_AT_subscr_data,
1028	DW_AT_element_list and DW_AT_member. Add DWARF5 attribute constants.
1029	(DW_AT_subscr_data, DW_AT_element_list, DW_AT_member): New defines.
1030
10312017-07-21  Mark Wielaard  <mark@klomp.org>
1032
1033	* dwarf_line_file.c: New file.
1034	* Makefile.am (libdw_a_SOURCES): Add dwarf_line_file.c.
1035	* libdw.h (dwarf_line_file): New function declaration.
1036	* libdw.map (ELFUTILS_0.170): New. Add dwarf_line_file.
1037
10382017-02-17  Ulf Hermann  <ulf.hermann@qt.io>
1039
1040	* Makefile.am: Add libdw_so_LIBS to specify the archives libdw is is
1041	made of, libdw_so_DEPS for libraries it depends on (including
1042	libeu.a), libdw_so_LDLIBS to specify libraries libdw links against.
1043	(libdw.so$(EXEEXT)): Add $(libdw_so_LDLIBS), remove enumeration of
1044	library dependencies, use libdw_so_LIBS rather than relying on the
1045	order of dependencies specified, add -z,relro.
1046
10472017-04-20  Ulf Hermann  <ulf.hermann@qt.io>
1048
1049	* libdw.h: Remove attribute macro declarations and use
1050	__noreturn_attribute__ as defined in libelf.h.
1051
10522017-04-20  Ulf Hermann  <ulf.hermann@qt.io>
1053
1054	* dwarf_begin_elf.c: Include endian.h.
1055
10562017-03-30  Mark Wielaard  <mjw@redhat.com>
1057
1058	* dwarf_peel_type.c (dwarf_peel_type): Call dwarf_attr_integrate on
1059	result.
1060
10612016-10-22  Mark Wielaard  <mjw@redhat.com>
1062
1063	* dwarf.h: Correct spelling of DW_LANG_PLI. Add compatibility define.
1064	* dwarf_aggregate_size.c (array_size): Use correct spelling of
1065	DW_LANG_PLI.
1066
10672016-11-02  Mark Wielaard  <mjw@redhat.com>
1068
1069	* cfi.c (execute_cfi): Add fallthrough comments.
1070	* encoded-value.h (encoded_value_size): Add explicit return instead
1071	of relying on fallthrough.
1072	* dwfl_report_elf.c (__libdwfl_elf_address_range): Add fallthrough
1073	comment.
1074
10752016-10-11  Akihiko Odaki  <akihiko.odaki.4i@stu.hosei.ac.jp>
1076
1077	* dwarf_getpubnames.c: Remove sys/param.h include, add system.h.
1078	* libdw_alloc.c: Likewise.
1079
10802016-07-08  Mark Wielaard  <mjw@redhat.com>
1081
1082	* libdw.map (ELFUTILS_0.167): New. Add dwelf_strtab_init,
1083	dwelf_strtab_add, dwelf_strtab_add_len, dwelf_strtab_finalize,
1084	dwelf_strent_off, dwelf_strent_str and dwelf_strtab_free.
1085
10862016-02-13  Mark Wielaard  <mjw@redhat.com>
1087
1088	* dwarf_getsrclines.c (read_srclines): Calculate ndirs first, then
1089	assign to ndirlist.
1090
10912015-12-18  Mark Wielaard  <mjw@redhat.com>
1092
1093	* libdwP.h (struct Dwarf): Remove sectiondata_gzip_mask.
1094	(__libdw_free_zdata): Remove.
1095	* dwarf_begin_elf.c (inflate_section): Remove.
1096	(check_section): Remove __libdw_free_zdata calls. Use elf_compress
1097	and elf_compress_gnu to decompress if necessary.
1098	(valid_p): Remove __libdw_free_zdata calls.
1099	(scngrp_read): Use elf_compress if section is compressed. Remove
1100	__libdw_free_zdata calls.
1101	* dwarf_end.c (__libdw_free_zdata): Remove.
1102	(dwarf_end): Don't call __libdw_free_zdata.
1103
11042015-10-28  Mark Wielaard  <mjw@redhat.com>
1105
1106	* libdw.map (ELFUTILS_0.165): New. Add dwelf_scn_gnu_compressed_size.
1107
11082015-12-02  Mark Wielaard  <mjw@redhat.com>
1109
1110	* fde.c (intern_fde): Don't leak duplicate FDEs.
1111
11122015-12-01  Mark Wielaard  <mjw@redhat.com>
1113
1114	* fde.c (intern_fde): Don't intern an fde that doesn't cover a
1115	valid code range.
1116
11172015-12-01  Mark Wielaard  <mjw@redhat.com>
1118
1119	* dwarf_end.c (dwarf_end): Call cu_free on fake_loc_cu if it exists.
1120
11212015-10-14  Chih-Hung Hsieh  <chh@google.com>
1122
1123	* dwarf_entry_breakpoints.c (dwarf_entry_breakpoints): Move recursive
1124	functions 'add_bkpt', 'entrypc_bkpt', and 'search_range' to file scope.
1125
11262015-10-14  Chih-Hung Hsieh  <chh@google.com>
1127
1128	* libdw_visit_scopes.c (__libdw_visit_scopes): Move recursive nested
1129	function 'walk_children' to file scope; inline 'recurse' at its call
1130	site.
1131
11322015-10-19  Mark Wielaard  <mjw@redhat.com>
1133
1134	* frame-cache.c (__libdw_destroy_frame_cache): Call ebl_closebackend
1135	if necessary.
1136
11372015-10-16  Dmitry V. Levin  <ldv@altlinux.org>
1138
1139	* dwarf_getsrclines.c (read_srclines): Initialize state early.
1140
11412015-10-13  Chih-Hung Hsieh  <chh@google.com>
1142
1143	* dwarf_getsrclines.c (read_srclines): Move nested functions
1144	'advance_pc' and 'add_new_line' to file scope and keep many
1145	local state variables within one structure.
1146
11472015-10-13  Chih-Hung Hsieh  <chh@google.com>
1148
1149	* dwarf_getscopevar.c (dwarf_getscopevar): Move nested
1150	function 'file_matches' to file scope.
1151
11522015-10-16  Mark Wielaard  <mjw@redhat.com>
1153
1154	* Makefile.am (libdw.so): Add -lz.
1155
11562015-10-14  Chih-Hung Hsieh  <chh@google.com>
1157
1158	* cfi.c (execute_cfi): Move nested functions 'enough_registers'
1159	and 'require_cfa_offset' to file scope.
1160
11612015-10-09  Josh Stone  <jistone@redhat.com>
1162
1163	* dwarf_begin.c (dwarf_begin): Replace stat64 and fstat64 with stat
1164	and fstat.
1165
11662015-10-05  Josh Stone  <jistone@redhat.com>
1167
1168	* Makefile.am (libdw.so): Add AM_V_CCLD and AM_V_at silencers.
1169
11702015-09-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
1171
1172	* Makefile.am (AM_CFLAGS): Use -fPIC instead of -fpic to avoid
1173	relocation overflows in some platforms.
1174
11752015-09-23  Mark Wielaard  <mjw@redhat.com>
1176
1177	* dwarf_error.c (__libdw_seterrno): Mark as internal_function.
1178	* dwarf_formref.c (__libdw_formref): Likewise.
1179	* libdw_findcu.c (__libdw_findcu): Likewise.
1180	* libdw_visit_scopes.c (__libdw_visit_scopes): Likewise.
1181
11822015-09-22  Mark Wielaard  <mjw@redhat.com>
1183
1184	* *.c: Remove old-style function definitions.
1185
11862015-09-15  Mark Wielaard  <mjw@redhat.com>
1187
1188	* dwarf_peel_type.c (dwarf_peel_type): Don't reassign result pointer.
1189
11902015-09-09  Chih-Hung Hsieh  <chh@google.com>
1191
1192	* dwarf_macro_getsrcfiles.c (dwarf_macro_getsrcfiles): Remove
1193	redundant NULL tests on parameters declared with __nonnull_attribute__.
1194	* dwarf_siblingof.c (dwarf_siblingof): Likewise.
1195	* libdw_visit_scopes.c (__libdw_visit_scopes): Likewise.
1196
11972015-09-04  Chih-Hung Hsieh  <chh@google.com>
1198	    Mark Wielaard  <mjw@redhat.com>
1199
1200	* dwarf_getlocation.c (getlocations_addr): Replace K&R function
1201	definition with ansi-C definition and add const qualifier to
1202	locs argument.
1203
12042015-09-04  Chih-Hung Hsieh  <chh@google.com>
1205
1206	* libdw_findcu.c (__libdw_intern_next_unit): Replace K&R function
1207	definition with ansi-C definitions.
1208	(__libdw_findcu): Likewise.
1209
12102015-08-25  Mark Wielaard  <mjw@redhat.com>
1211
1212	* dwarf.h: Add DW_LANG_Haskell.
1213
12142015-06-18  Mark Wielaard  <mjw@redhat.com>
1215
1216	* dwarf_begin_elf.c (dwarf_begin_elf): Assert page size is big enough
1217	to hold a Dwarf.
1218
12192015-06-18  Mark Wielaard  <mjw@redhat.com>
1220
1221	* dwarf_getpubnames.c (get_offsets): Always free mem on error.
1222
12232015-06-18  Mark Wielaard  <mjw@redhat.com>
1224
1225	* dwarf_getmacros.c (get_macinfo_table): Return NULL when
1226	dwarf_formudata reports an error.
1227	(get_table_for_offset): Likewise.
1228
12292015-06-08  Mark Wielaard  <mjw@redhat.com>
1230
1231	* dwarf_getsrclines.c (read_srclines): Initialize dirarray early.
1232
12332015-06-06  Mark Wielaard  <mjw@redhat.com>
1234
1235	* dwarf_getsrclines.c (read_srclines): Initialize filelist early.
1236
12372015-05-27  Mark Wielaard  <mjw@redhat.com>
1238
1239	* encoded-value.h (read_encoded_value): Check data d_size contains
1240	at least enough data to hold a pointer for DW_EH_PE_indirect.
1241
12422015-05-22  Mark Wielaard  <mjw@redhat.com>
1243
1244	* dwarf_getsrclines.c (read_srclines): Limit stack usage of lines
1245	with MAX_STACK_LINES, files with MAX_STACK_LINES and dirs with
1246	MAX_STACK_DIRS. Calculate number of dirs needed first, then
1247	create dirarray directly, without needing the next field. Free
1248	not stack allocated lines and files at the end.
1249
12502015-05-19  Mark Wielaard <mjw@redhat.com>
1251
1252	* dwarf_getlocation.c (__libdw_intern_expression): Create a stack
1253	allocated array to hold locs. Allocate locs bigger than the array
1254	with malloc and free them when done.
1255
12562015-05-11  Jonathan Lebon  <jlebon@redhat.com>
1257
1258	* libdwP.h (DWARF_E_COMPRESSED_ERROR): New enumerator.
1259	* dwarf_error.c (errmsgs): Add DWARF_E_COMPRESSED_ERROR message.
1260	* dwarf_begin_elf.c (inflate_section): New static function, lifted
1261	from...
1262	(check_section): ... here. Call inflate_section, set libdw errno to
1263	DWARF_E_COMPRESSED_ERROR if .debug_info section couldn't be inflated.
1264
12652015-05-11  Jonathan Lebon  <jlebon@redhat.com>
1266
1267	* dwarf_begin_elf.c (check_section): Add compressed flag. Always
1268	check for .zdebug sections. Only wrap decompression in #if USE_ZLIB.
1269
12702015-05-06  Mark Wielaard  <mjw@redhat.com>
1271
1272	* dwarf_getsrclines.c (read_srclines): Use an int64_t to store and
1273	check the line number.
1274
12752015-05-05  Mark Wielaard  <mjw@redhat.com>
1276
1277	* dwarf_getaranges.c (dwarf_getaranges): Check there is enough data
1278	left before reading values.
1279
12802015-05-04  Anthony G. Basile  <blueness@gentoo.org>
1281
1282	* Makefile.am (libdw_so_SOURCES): Append $(argp_LDADD) to link
1283	command.
1284
12852015-04-22  Mark Wielaard  <mjw@redhat.com>
1286
1287	* memory-access.h (__libdw_max_len_leb128): Take type_len as argument.
1288	(__libdw_max_len_uleb128): New function.
1289	(__libdw_max_len_sleb128): Likewise.
1290	(__libdw_get_uleb128): Use __libdw_max_len_uleb128.
1291	(__libdw_get_sleb128): Use __libdw_max_len_sleb128.
1292
12932015-04-21  Mark Wielaard  <mjw@redhat.com>
1294
1295	* dwarf_getmacros.c (read_macros): Allocate attributes dynamically
1296	when there are more than 8.
1297
12982015-04-01  Petr Machata  <pmachata@redhat.com>
1299
1300	* libdwP.h (DWARF_E_NOT_CUDIE): New enumerator.
1301	(is_cudie): New function.
1302	* dwarf_error.c (errmsgs): Add message for DWARF_E_NOT_CUDIE.
1303	* dwarf_getsrcfiles.c (dwarf_getsrcfiles): Call is_cudie instead
1304	of white-listing valid tags.
1305	* dwarf_getsrclines.c (dwarf_getsrclines): Likewise.
1306
13072015-03-18  Petr Machata  <pmachata@redhat.com>
1308
1309	* Makefile.am (pkginclude_HEADERS): Add known-dwarf.h.
1310	(EXTRA_DIST): Remove known-dwarf.h.
1311
13122015-02-09  Mark Wielaard  <mjw@redhat.com>
1313
1314	* dwarf.h: Add DW_LANG_Fortran03 and DW_LANG_Fortran08.
1315	* dwarf_aggregate_size.c (array_size): Recognize array lower bound
1316	for new Fortran language codes is 1.
1317
13182015-02-09  Mark Wielaard  <mjw@redhat.com>
1319
1320	* dwarf.h: Add DW_TAG_atomic_type.
1321	* libdw.h (dwarf_peel_type): Document DW_TAG_atomic_type.
1322	* dwarf_peel_type.c (dwarf_peel_type): Handle DW_TAG_atomic_type.
1323
13242015-02-11  Josh Stone  <jistone@redhat.com>
1325
1326	* encoded-value.h (read_encoded_value): Initialize value.
1327
13282015-02-11  Petr Machata  <pmachata@redhat.com>
1329
1330	* dwarf_ranges.c (dwarf_ranges): Do not bail out when neither
1331	DW_AT_entry_pc nor DW_AT_low_pc are available.  Instead remember
1332	the fact in *BASEP and bail out later if it hasn't been updated by
1333	__libdw_read_begin_end_pair_inc.
1334
13352014-12-24  Mark Wielaard  <mjw@redhat.com>
1336
1337	* dwarf_getsrc_die.c (dwarf_getsrc_die): Return the last line record
1338	smaller than or equal to addr, rather than returning immediately on
1339	a match.
1340
13412015-01-07  Mark Wielaard  <mjw@redhat.com>
1342
1343	* cfi.h (struct Dwarf_CFI_s): Add search_table_len.
1344	* dwarf_getcfi_elf.c (getcfi_gnu_eh_frame): Check there is enough
1345	room in the search table for all entries. Store search_table_len.
1346	(getcfi_scn_eh_frame): Likewise.
1347	* encoded-value.h (encoded_value_size): Don't abort, return zero.
1348	(__libdw_cfi_read_address_inc): Check there is enough room to read
1349	values. Pass other byte order to read functions.
1350	(read_encoded_value): Check encoded_value_size. Don't abort, but
1351	set libdw errno and report failure. Check there is enough room to
1352	read values.
1353	* fde.c (binary_search_fde): Check encoded value size. Add hdr
1354	data buf and size to dummy_cfi.
1355
13562015-01-04  Mark Wielaard  <mjw@redhat.com>
1357
1358	* dwarf_siblingof.c (dwarf_siblingof): Check sibling attribute
1359	is after current DIE.
1360
13612015-01-04  Mark Wielaard  <mjw@redhat.com>
1362
1363	* cfi.c (enough_registers): Check reg < INT32_MAX / sizeof
1364	(dwarf_frame_register).
1365
13662015-01-02  Mark Wielaard  <mjw@redhat.com>
1367
1368	* dwarf_getcfi_elf.c (parse_eh_frame_hdr): Add size check.
1369	(getcfi_gnu_eh_frame): Remove size check. Check d_buf is not NULL.
1370	(getcfi_scn_eh_frame): Check d_buf is not NULL.
1371
13722015-01-02  Mark Wielaard  <mjw@redhat.com>
1373
1374	* dwarf_getlocation.c (__libdw_intern_expression): Check dbg is not
1375	NULL for DW_OP_call_ref and DW_OP_GNU_implicit_pointer. For
1376	DW_OP_addr if dbg is NULL then read argument directly.
1377
13782015-01-14  Jason P. Leasure <jpleasu@super.org>
1379
1380	* dwarf_formref_die.c (dwarf_formref_die): Offset is cu->type_offset
1381	plus cu->start.
1382
13832014-12-27  Mark Wielaard  <mjw@redhat.com>
1384
1385	* dwarf_siblingof.c (dwarf_siblingof): Check sibling attribute offset
1386	still falls inside CU data.
1387
13882015-01-11  Mark Wielaard  <mjw@redhat.com>
1389
1390	* dwarf_func_inline.c (dwarf_func_inline_instances): Call
1391	__libdw_visit_scopes with NULL imports.
1392	* dwarf_getfuncs.c (dwarf_getfuncs): Likewise.
1393	* dwarf_getscopes.c (pc_record): Likewise.
1394	(dwarf_getscopes): Likewise.
1395	* dwarf_getscopes_die.c (dwarf_getscopes_die): Likewise.
1396	* libdwP.h (__libdw_visit_scopes): Add imports argument.
1397	* libdw_visit_scopes.c (__libdw_visit_scopes): Likewise. Add new
1398	function imports_contains. Push and pop imports around walk_children
1399	when processing DW_TAG_imported_unit.
1400
14012014-12-18  Ulrich Drepper  <drepper@gmail.com>
1402
1403	* Makefile.am: Suppress output of textrel_check command.
1404
14052014-12-16  Mark Wielaard  <mjw@redhat.com>
1406
1407	* dwarf_getsrclines.c (read_srclines): Check diridx is valid under
1408	DW_LNE_define_file.
1409
14102014-12-16  Mark Wielaard  <mjw@redhat.com>
1411
1412	* dwarf_getpubnames.c (dwarf_getpubnames): Make sure there is enough
1413	space to read die offset.
1414
14152014-12-16  Mark Wielaard  <mjw@redhat.com>
1416
1417	* dwarf_getsrclines.c (read_srclines): Correct overflow check for
1418	unit_length.
1419
14202014-12-15  Mark Wielaard  <mjw@redhat.com>
1421
1422	* dwarf_getpubnames.c (get_offsets): Make sure whole unit fall inside
1423	section data. Set error to DWARF_E_NO_ENTRY if cnt is zero.
1424	(dwarf_getpubnames): Make sure section data contains string zero
1425	terminator.
1426
14272014-12-16  Mark Wielaard  <mjw@redhat.com>
1428
1429	* memory-access.h (__libdw_get_sleb128): Unroll the first step to help
1430	the compiler optimize for the common single-byte case.
1431
14322014-12-15  Josh Stone  <jistone@redhat.com>
1433
1434	* memory-access.h (__libdw_max_len_leb128): New.
1435	(__libdw_get_uleb128): Use __libdw_max_len_leb128.
1436	(__libdw_get_sleb128): Likewise.
1437
14382014-12-14  Mark Wielaard  <mjw@redhat.com>
1439
1440	* cfi.c (execute_cfi): Add program bounds checks.
1441	* dwarf_child.c (__libdw_find_attr): Add attrp bounds checks.
1442	* dwarf_formblock.c (dwarf_formblock): Call get_uleb128 with endp.
1443	* dwarf_formref.c (__libdw_formref): Add datap bounds checks.
1444	* dwarf_formsdata.c (dwarf_formsdata): Likewise.
1445	* dwarf_formudata.c (dwarf_formudata): Likewise.
1446	* dwarf_frame_register.c (dwarf_frame_register): Call get_uleb128
1447	with end of data buf.
1448	* dwarf_getabbrev.c (__libdw_getabbrev): Add abbrevp bounds checks.
1449	* dwarf_getabbrevattr.c (dwarf_getabbrevattr): Assume get_uleb128
1450	call gets enough data.
1451	* dwarf_getattrs,c (dwarf_getattrs): Call get_uleb128 with endp.
1452	* dwarf_getlocation.c (store_implicit_value): Call get_uleb128
1453	with enough data.
1454	(__libdw_intern_expression): Call get_uleb128/get_sleb128 with
1455	end_data.
1456	* dwarf_getmacros.c (get_table_for_offset): Add nforms bounds check.
1457	* dwarf_getsrclines.c (read_srclines): Bounds check linep and call
1458	get_uleb128 with lineendp.
1459	* dwarf_hasattr.c (dwarf_hasattr): Bounds check attrp and call
1460	get_uleb128 with endp.
1461	* dwarf_next_cfi.c (dwarf_next_cfi): Bounds check bytes and call
1462	get_uleb128/get_sleb128 with limit.
1463	* encoded-value.h (read_encoded_value): Assume get_uleb128 and
1464	get_sleb128 get called with enough data.
1465	* fde.c (intern_fde): Call get_uleb128 with instructions_end.
1466	* libdwP.h (__libdw_dieabbrev): Call get_uleb128 with die->cu->endp.
1467	* libdw_form.c (__libdw_form_val_compute_len): Call get_uleb128 with
1468	endp.
1469	* memory-access.h (__libdw_get_uleb128): Take an extra endp.
1470	Don't call get_uleb128_step if out of data.
1471	(__libdw_get_sleb128): Likewise for get_sleb128_step.
1472
14732014-12-12  Mark Wielaard  <mjw@redhat.com>
1474
1475	* libdwP.h (struct Dwarf): Add fake_loc_cu.
1476	(cu_data): Removed.
1477	(DIE_OFFSET_FROM_CU_OFFSET): Don't use cu_data, use cu_sec_idx.
1478	(__libdw_form_val_compute_len): Drop dbg and endp arguments.
1479	(__libdw_form_val_len): Likewise.
1480	* libdw_form.c (__libdw_form_val_compute_len): Likewise.
1481	* libdw_findcu.c (__libdw_intern_next_unit): Don't use cu_data, use
1482	the already found data buffer directly.
1483	* dwarf_begin_elf.c (valid_p): Setup fake_loc_cu.
1484	* dwarf_end.c (dwarf_end): Free fake_loc_cu.
1485	* dwarf_child.c (__libdw_find_attr): Call __libdw_form_val_len with
1486	just cu.
1487	* dwarf_getattrs.c (dwarf_getattrs): Likewise.
1488	* dwarf_formblock.c (dwarf_formblock): Add bounds checking.
1489	* dwarf_getlocation_attr.c (attr_form_cu): New function.
1490	(dwarf_getlocation_attr): Use attr_form_cu to set result->cu.
1491	(getlocation): Handle empty blocks immediately.
1492	* dwarf_getlocation_implicit_pointer.c (empty_cu): New static var.
1493	(__libdw_empty_loc_attr): Drop cu argument, use empty_cu.
1494	(dwarf_getlocation_implicit_pointer): Call __libdw_empty_loc_attr with
1495	one argument.
1496	* dwarf_getmacros.c (read_macros): Also setup startp and endp for
1497	fake_cu. Call __libdw_form_val_len with just fake_cu.
1498	* dwarf_formref_die.c (dwarf_formref_die): Don't use cu_data, get
1499	datap and size directly from cu startp and endp.
1500
15012014-12-11  Mark Wielaard  <mjw@redhat.com>
1502
1503	* libdw_findcu.c (__libdw_intern_next_unit): Sanity check offset.
1504
15052014-12-13  Mark Wielaard  <mjw@redhat.com>
1506
1507	* dwarf_getaranges.c (compare_aranges): Make sure Dwarf_Addr
1508	difference doesn't wrap around before returning as int.
1509
15102014-12-11  Josh Stone  <jistone@redhat.com>
1511
1512	* dwarf_getsrclines.c (struct linelist): Add sequence.
1513	(compare_lines): Take linelists, and break ties by sequence.
1514	(read_srclines): Use linelists for sorting.
1515	(read_srclines::add_new_line): Set sequence.
1516
15172014-12-10  Josh Stone  <jistone@redhat.com>
1518
1519	* libdwP.h (Dwarf_CU): Add startp and endp boundaries.
1520	* libdw_findcu.c (__libdw_intern_next_unit): Set startp and endp.
1521	* dwarf_child.c (dwarf_child): Use cu->endp.
1522	* dwarf_cuoffset.c (dwarf_cuoffset): Use cu->startp.
1523	* dwarf_dieoffset.c (dwarf_dieoffset): Use cu->startp.
1524	* dwarf_siblingof.c (dwarf_siblingof): Use both.
1525
15262014-12-10  Josh Stone  <jistone@redhat.com>
1527
1528	* dwarf_hasattr.c (dwarf_hasattr): Just walk abbrev for presence.
1529
15302014-12-10  Josh Stone  <jistone@redhat.com>
1531
1532	* libdwP.h (__libdw_dieabbrev): New die->abbrev lookup function.
1533	* dwarf_child.c (__libdw_find_attr, dwarf_child): Use it.
1534	* dwarf_getattrs.c (dwarf_getattrs): Likewise.
1535	* dwarf_haschildren.c (dwarf_haschildren): Likewise.
1536	* dwarf_tag.c (dwarf_tag): Likewise.
1537
15382014-12-04  Mark Wielaard  <mjw@redhat.com>
1539
1540	* libdwP.h (__libdw_form_val_compute_len): Add endp argument.
1541	(__libdw_form_val_len): Likewise and check len doesn't overflow.
1542	* libdw_form.c (__libdw_form_val_compute_len): Likewise.
1543	* dwarf_child.c (__libdw_find_attr): Call __libdw_form_val_len
1544	with endp.
1545	* dwarf_getattrs.c (dwarf_getattrs): Likewise.
1546	* dwarf_getmacros.c (read_macros): Likewise and check for errors.
1547
15482014-12-02  Petr Machata  <pmachata@redhat.com>
1549
1550	* dwarf_getmacros.c (token_from_offset, offset_from_token): New
1551	helper functions.
1552	(do_dwarf_getmacros_die): Merge into dwarf_getmacros.
1553	* libdw.h (DWARF_GETMACROS_START): New macro.
1554
15552014-11-27  Mark Wielaard  <mjw@redhat.com>
1556
1557	* Makefile.am (libdw.so): Use textrel_check.
1558
15592014-11-27  Mark Wielaard  <mjw@redhat.com>
1560
1561	* dwarf_getcfi_elf.c (getcfi_gnu_eh_frame): Initialize
1562	search_table_entries and search_table_encoding.
1563
15642014-11-24  Mark Wielaard  <mjw@redhat.com>
1565
1566	* dwarf_getsrclines.c (read_srclines): Check line_range is not zero
1567	before usage.
1568
15692014-11-23  Mark Wielaard  <mjw@redhat.com>
1570
1571	* dwarf_attr.c (dwarf_attr): Check __libdw_find_attr return value.
1572	* dwarf_hasattr.c (dwarf_hasattr): Likewise.
1573	* dwarf_siblingof.c (dwarf_siblingof): Likewise.
1574
15752014-11-23  Mark Wielaard  <mjw@redhat.com>
1576
1577	* dwarf_getabbrev.c (__libdw_getabbrev): Don't assert on bad DWARF.
1578	Set libdw errno and return NULL.
1579
15802014-11-24  Mark Wielaard  <mjw@redhat.com>
1581
1582	* dwarf.h (DW_LANG_C_plus_plus_11): Added.
1583	(DW_LANG_C11): Likewise.
1584	(DW_LANG_C_plus_plus_14): Likewise.
1585	* dwarf_aggregate_size.c (array_size): Handle DW_LANG_C11,
1586	DW_LANG_C_plus_plus_11, DW_LANG_C_plus_plus_14 and DW_LANG_Go
1587	lower bound.
1588	* dwarf_getfuncs.c (dwarf_getfuncs): Set c_cu to true for
1589	DW_LANG_C11.
1590
15912014-11-26  Mark Wielaard  <mjw@redhat.com>
1592
1593	* dwarf.h (DW_AT_noreturn): Added.
1594
15952014-11-11  Mark Wielaard  <mjw@redhat.com>
1596
1597	* dwarf_getsrclines.c (read_srclines): Do address_size comparison
1598	explicitly as uint8_t.
1599	(__libdw_getsrclines): Add internal_function to declaration.
1600
16012014-09-10  Petr Machata  <pmachata@redhat.com>
1602
1603	* dwarf_macro_getparamcnt.c: New file.
1604	* dwarf_macro_param.c: New file.
1605	* dwarf_macro_getsrcfiles.c: New file.
1606	* Makefile.am (libdw_a_SOURCES): Add the new files.
1607	* libdwP.h (struct files_lines_s): New structure.
1608	(DWARF_E_INVALID_OPCODE): New enumerator.
1609	(struct Dwarf): New fields macro_ops, files_lines.
1610	(Dwarf_Macro_Op_Proto, Dwarf_Macro_Op_Table): New structures for
1611	keeping macro opcode prototypes in.
1612	(Dwarf_Macro_s): Redefine from scratch.
1613	(__libdw_getsrclines, __libdw_getcompdir, libdw_macro_nforms): New
1614	internal interfaces.
1615	* dwarf_error.c (errmsgs): Add a message for
1616	DWARF_E_INVALID_OPCODE.
1617	* dwarf_end.c (dwarf_end): Destroy struct Dwarf.macro_ops and
1618	files_lines.
1619	* libdw.h (dwarf_getmacros_off, dwarf_macro_getparamcnt)
1620	(dwarf_macro_getsrcfiles, dwarf_macro_param): New public
1621	interfaces.
1622	* dwarf_getmacros.c (dwarf_getmacros_off): New function,
1623	(get_offset_from, macro_op_compare, build_table)
1624	(init_macinfo_table, get_macinfo_table, get_table_for_offset)
1625	(cache_op_table, read_macros, gnu_macros_getmacros_off)
1626	(macro_info_getmacros_off, do_dwarf_getmacros_die): New helper
1627	functions.
1628	(dwarf_getmacros): Adjust to dispatch to the new interfaces.
1629	* dwarf_getsrclines.c (read_srclines): New function with guts
1630	taken from dwarf_getsrclines.
1631	(__libdw_getsrclines): Likewise.
1632	(__libdw_getcompdir, files_lines_compare): New functions.
1633	(dwarf_getsrclines): Make it dispatch to the new interfaces.
1634	* dwarf_macro_param1.c (dwarf_macro_param1): Adjust to dispatch to
1635	the new interfaces.
1636	* dwarf_macro_param2.c (dwarf_macro_param2): Likewise.
1637	* libdw.map (ELFUTILS_0.161): New. Add dwarf_getmacros_off,
1638	dwarf_macro_getsrcfiles, dwarf_macro_getparamcnt, dwarf_macro_param.
1639
16402014-10-06  Mark Wielaard  <mjw@redhat.com>
1641
1642	* Makefile.am (libdw_a_SOURCES): Add dwarf_peel_type.c.
1643	* dwarf_aggregate_size.c (get_type): Use dwarf_peel_type.
1644	(aggregate_size): Likewise. Add old and new version.
1645	* dwarf_peel_type.c: New file.
1646	* libdw.h (dwarf_peel_type): New function declaration.
1647	* libdwP.h (dwarf_peel_type): New internal declaration.
1648	* libdw.map (ELFUTILS_0.161): New section.
1649
16502014-10-15  Petr Machata  <pmachata@redhat.com>
1651
1652	* libdwP.h (struct Dwarf_Files_s.cu): Drop field.
1653	* dwarf_getsrclines.c (dwarf_getsrclines): Don't set it.
1654
16552014-10-05  Mark Wielaard  <mjw@redhat.com>
1656
1657	* dwarf.h: Add DW_AT_GNU_deleted.
1658
16592014-10-02  Mark Wielaard  <mjw@redhat.com>
1660
1661	* dwarf_aggregate_size.c (aggregate_size): Return CU address_size
1662	for sizeless DW_TAG_pointer_type, DW_TAG_reference_type or
1663	DW_TAG_rvalue_reference_type.
1664
16652014-09-12  Petr Machata  <pmachata@redhat.com>
1666
1667	* memory-access.h (read_ubyte_unaligned_inc): Allow only 4- and
1668	8-byte quantities.  Consequently, rename to...
1669	(read_addr_unaligned_inc): ... this.
1670	(read_sbyte_unaligned_inc, read_ubyte_unaligned): Drop.
1671	(read_sbyte_unaligned): Drop.
1672
16732014-09-10  Petr Machata  <pmachata@redhat.com>
1674
1675	* dwarf_getlocation.c (attr_ok): Also accept
1676	DW_AT_GNU_call_site_value, DW_AT_GNU_call_site_data_value,
1677	DW_AT_GNU_call_site_target, DW_AT_GNU_call_site_target_clobbered.
1678
16792014-08-15  Mark Wielaard  <mjw@redhat.com>
1680
1681	* dwarf_cu_die.c: New file.
1682	* Makefile.am (libdw_a_SOURCES): Add dwarf_cu_die.c.
1683	* libdw.h (dwarf_cu_die): New function declaration.
1684	* libdw.map (ELFUTILS_0.160): Add dwarf_cu_die.
1685
16862014-08-15  Mark Wielaard  <mjw@redhat.com>
1687
1688	* dwarf_cu_getdwarf.c: New file.
1689	* Makefile.am (libdw_a_SOURCES): Add dwarf_cu_getdwarf.c.
1690	* libdw.h (Dwarf_CU): New typedef.
1691	(dwarf_cu_getdwarf): New function declaration.
1692	* libdw.map (ELFUTILS_0.160): New. Add dwarf_cu_getdwarf.
1693
16942014-06-18  Mark Wielaard  <mjw@redhat.com>
1695
1696	* dwarf.h: Remove DW_TAG_mutable_type.
1697
16982014-05-02  Mark Wielaard  <mjw@redhat.com>
1699
1700	* libdwP.h (__check_build_id): Removed now unused.
1701
17022014-05-01  Mark Wielaard  <mjw@redhat.com>
1703
1704	* libdwP.h (struct Dwarf): Remove free_alt.
1705	* dwarf_end.c (dwarf_end): Don't check free_alt, don't end alt_dwarf.
1706	* dwarf_setalt.c (dwarf_setalt): Don't check or set free_alt.
1707
17082014-04-30  Mark Wielaard  <mjw@redhat.com>
1709
1710	* libdw.map (ELFUTILS_0.159): Add dwelf_elf_gnu_build_id.
1711
17122014-04-15  Florian Weimer  <fweimer@redhat.com>
1713
1714	* dwarf_begin_elf.c (__check_build_id, try_debugaltlink)
1715	(open_debugaltlink): Move to libdwfl.
1716	(check_section): Do not locate alternate debuginfo.
1717
17182014-04-24  Florian Weimer  <fweimer@redhat.com>
1719
1720	* libdw.map (ELFUTILS_0.159): Export dwelf_dwarf_gnu_debugaltlink.
1721
17222014-04-22  Florian Weimer  <fweimer@redhat.com>
1723
1724	* dwarf_getalt.c, dwarf_setalt.c: New files.
1725	* Makefile.am (libdw_a_SOURCES): Add them.
1726	* libdw.h (dwarf_getalt, dwarf_setalt): Add function declarations.
1727	* libdwP.h (dwarf_getalt, dwarf_setalt): Add internal function
1728	declarations.
1729	* libdw.map (ELFUTILS_0.159): Export the two new functions.
1730
17312014-04-15  Florian Weimer  <fweimer@redhat.com>
1732
1733	* libdwP.h (enum IDX_gnu_debugaltlink): New.
1734	* dwarf_begin_elf.c (dwarf_scnnames): Increase string size and add
1735	.gnu_debugaltlink.
1736	(check_section): Obtain .gnu_debugaltlink section from the
1737	setiondata array.
1738
17392014-04-11  Mark Wielaard  <mjw@redhat.com>
1740
1741	* libdw.map (ELFUTILS_0.159): New. Add dwelf_elf_gnu_debuglink.
1742	* Makefile.am (libdw.so): Depend on libdwelf_pic.a.
1743	(libdwelf_objects): New variable.
1744	(libdw_a_LIBADD): Add libdwelf objects.
1745
17462014-04-22  Mark Wielaard  <mjw@redhat.com>
1747
1748	* memory-access.h (get_sleb128_step): Remove undefined behavior
1749	of left shifting a signed value. Replace it with a multiplication.
1750
17512014-04-13  Mark Wielaard  <mjw@redhat.com>
1752
1753	* Makefile.am: Remove !MUDFLAP conditions.
1754
17552014-04-09  Mark Wielaard  <mjw@redhat.com>
1756
1757	* dwarf_begin_elf.c (check_section): Check for unsigned overflow
1758	before calling malloc to uncompress data.
1759
17602014-03-03  Jan Kratochvil  <jan.kratochvil@redhat.com>
1761
1762	Fix abort() on missing section headers.
1763	* dwarf_begin_elf.c (check_section): Replace abort call by goto err.
1764	New label err to return NULL.
1765
17662014-02-05  Josh Stone  <jistone@redhat.com>
1767
1768	* dwarf_decl_file.c (dwarf_decl_file): Read the idx as unsigned.
1769	* dwarf_decl_line.c (__libdw_attr_intval): Read the line/column as
1770	unsigned.  Change the range assert to DWARF_E_INVALID_DWARF.
1771
17722013-12-30  Mark Wielaard  <mjw@redhat.com>
1773
1774	* libdw.map (ELFUTILS_0.158): Add dwfl_core_file_attach and
1775	dwfl_linux_proc_attach.
1776
17772013-12-20  Mark Wielaard  <mjw@redhat.com>
1778
1779	* libdw.map (ELFUTILS_0.158): Add dwfl_getthread_frames.
1780
17812013-12-18  Mark Wielaard  <mjw@redhat.com>
1782
1783	* libdw.map (ELFUTILS_0.158): Remove dwfl_module_addrsym_elf and
1784	dwfl_module_getsym_elf. Add dwfl_module_addrinfo and
1785	dwfl_module_getsym_info.
1786
17872013-12-16  Mark Wielaard  <mjw@redhat.com>
1788
1789	* libdw.map (ELFUTILS_0.158): Add dwfl_module_getsymtab_first_global.
1790
17912013-12-10  Josh Stone  <jistone@redhat.com>
1792
1793	* memory-access.h (get_uleb128_rest_return): Removed.
1794	(get_sleb128_rest_return): Removed.
1795	(get_uleb128_step): Make this a self-contained block.
1796	(get_sleb128_step): Ditto, and use a bitfield to extend signs.
1797	(get_uleb128): Make this wholly implemented by __libdw_get_uleb128.
1798	(get_sleb128): Make this wholly implemented by __libdw_get_sleb128.
1799	(__libdw_get_uleb128): Simplify and inline for all callers.
1800	(__libdw_get_sleb128): Ditto.
1801	* dwarf_getlocation.c (store_implicit_value): Void the unused uleb128.
1802	* memory-access.c: Delete file.
1803	* Makefile.am (libdw_a_SOURCES): Remove it.
1804	(DEFS): Remove the now unused -DIS_LIBDW.
1805
18062013-12-09  Josh Stone  <jistone@redhat.com>
1807
1808	* libdw_form.c (__libdw_form_val_compute_len): Renamed function from
1809	__libdw_form_val_len, now handling only non-constant form lengths.
1810	* libdwP.h (__libdw_form_val_len): New inlined function.
1811
18122013-12-09  Mark Wielaard  <mjw@redhat.com>
1813
1814	* dwarf_getlocation.c (__libdw_intern_expression): Handle empty
1815	location expressions.
1816	* dwarf_getlocation_attr.c (dwarf_getlocation_attr): When no
1817	location found, return empty location expression.
1818	* dwarf_getlocation_implicit_pointer.c
1819	(dwarf_getlocation_implicit_pointer): Likewise.
1820	(__libdw_empty_loc_attr): New internal function.
1821	* libdwP.h (__libdw_empty_loc_attr): Define.
1822
18232013-11-27  Mark Wielaard  <mjw@redhat.com>
1824
1825	* libdw.map (ELFUTILS_0.158): Add dwfl_module_addrsym_elf and
1826	dwfl_module_getsym_elf.
1827
18282013-11-26  Mark Wielaard  <mjw@redhat.com>
1829
1830	* libdw.map (ELFUTILS_0.156): Move dwfl_attach_state, dwfl_pid,
1831	dwfl_thread_dwfl, dwfl_thread_tid, dwfl_frame_thread,
1832	dwfl_thread_state_registers, dwfl_thread_state_register_pc,
1833	dwfl_getthreads, dwfl_thread_getframes and dwfl_frame_pc to ...
1834	(ELFUTILS_0.158): ... here.
1835
18362013-11-09  Mark Wielaard  <mjw@redhat.com>
1837
1838	* dwarf_getaranges.c (dwarf_getaranges): Read segment_size and
1839	check that it is zero.
1840
18412013-11-07  Jan Kratochvil  <jan.kratochvil@redhat.com>
1842
1843	* cfi.h (struct Dwarf_Frame_s): Make the comment more specific.
1844	* libdw.map (ELFUTILS_0.156): Add dwfl_attach_state, dwfl_pid,
1845	dwfl_thread_dwfl, dwfl_thread_tid, dwfl_frame_thread,
1846	dwfl_thread_state_registers, dwfl_thread_state_register_pc,
1847	dwfl_getthreads, dwfl_thread_getframes and dwfl_frame_pc.
1848
18492013-11-01  Michael Forney  <mforney@mforney.org>
1850
1851	* Makefile.am (libdwfl_objects): New definition.
1852	(libdw_a_LIBADD): Use libdwfl_objects.
1853
18542013-11-01  Michael Forney  <mforney@mforney.org>
1855
1856	* Makefile.am: Use READELF.
1857
18582013-10-30  Jan Kratochvil  <jan.kratochvil@redhat.com>
1859
1860	* libdw.map (ELFUTILS_0.158): New.
1861
18622013-10-10  Mark Wielaard  <mjw@redhat.com>
1863
1864	* dwarf_getfuncs.c (struct visitor_info): Rename start_offset to
1865	start_addr and rename last_offset to last_addr. Now both void *.
1866	(tree_visitor): Use start_add and die_addr instead of start_offset
1867	and die_offset.
1868	(dwarf_getfuncs): Use last_addr instead of last_offset.
1869
18702013-10-06  Mark Wielaard  <mjw@redhat.com>
1871
1872	* cfi.c (execute_cfi): Make sure DW_CFA_expression and
1873	DW_CFA_val_expression are not used with abi_cfi.
1874
18752013-10-03  Josh Stone  <jistone@redhat.com>
1876
1877	* dwarf_formref_die.c (dwarf_formref_die): Don't hash the sig8 here.
1878	* libdw_findcu.c (__libdw_intern_next_unit): Since this never revisits
1879	a unit, make sure to always hash the sig8 here, so none are missed.
1880
18812013-09-29  Mark Wielaard  <mjw@redhat.com>
1882
1883	* dwarf_getlocation.c (store_implicit_value): Cast op->number2 to
1884	uintptr_t before casting to char *.
1885	(__libdw_intern_expression): Cast data to uintptr_t before casting
1886	to Dwarf_Word.
1887	* dwarf_getlocation_attr.c (dwarf_getlocation_attr): Cast
1888	op->number2 to uintptr_t before casting to char *.
1889
18902013-09-24  Josh Stone  <jistone@redhat.com>
1891
1892	* libdw_visit_scopes.c (classify_die): Removed.
1893	(may_have_scopes): New function to replace classify_die.  There's no
1894	need for full classification; just find tags that may contain scopes.
1895	(__libdw_visit_scopes): Use a direct tag comparison for imported
1896	units, and use may_have_scopes to test if recursion is needed.
1897
18982013-09-20  Mark Wielaard  <mjw@redhat.com>
1899
1900	* dwarf_getfuncs.c (visitor_info): New struct.
1901	(tree_visitor): New function.
1902	(dwarf_getfuncs): Use __libdw_visit_scopes with tree_visitor.
1903	* libdw.h (dwarf_getfuncs): Expand function documentation.
1904
19052013-09-12  Mark Wielaard  <mjw@redhat.com>
1906
1907	* fde.c (intern_fde): Free fde and set libdw errno when start
1908	or end could not be read.
1909
19102013-08-24  Mark Wielaard  <mjw@redhat.com>
1911
1912	* dwarf_getlocation.c (store_implicit_value): Don't take data
1913	as argument, get block data from op number2. Return false when
1914	block data length and op number don't match up.
1915	(__libdw_intern_expression): Store start of block for
1916	DW_OP_implicit_value and DW_OP_GNU_entry_value instead of
1917	relative data offset. Also store block start (including length)
1918	for DW_OP_GNU_const_type. Don't pass data to store_implicit_value.
1919	* dwarf_getlocation_attr.c: New file.
1920	* dwarf_getlocation_die.c: Likewise.
1921	* libdw.h (dwarf_getlocation_die): New function definition.
1922	(dwarf_getlocation_attr): Likewise.
1923	* libdwP.h: Declare internal dwarf_getlocation_die.
1924	* libdw.map (ELFUTILS_0.157): Add dwarf_getlocation_die and
1925	dwarf_getlocation_attr.
1926	* Makefile.am (libdw_a_SOURCES): Add dwarf_getlocation_die.c and
1927	dwarf_getlocation_attr.c.
1928
19292013-08-23  Mark Wielaard  <mjw@redhat.com>
1930
1931	* dwarf_getlocation.c (attr_ok): Also accept DW_AT_segment.
1932	(attr_base_address): New function.
1933	(initial_offset_base): New function.
1934	(getlocations_addr): New function. Taken from...
1935	(dwarf_getlocation_addr): here. Use new initial_offset_base and
1936	getlocations_addr.
1937	(dwarf_getlocations): New function.
1938	* libdw.h (dwarf_getlocations): New function definition.
1939	* libdw.map (ELFUTILS_0.157): New.
1940
19412013-07-02  Mark Wielaard  <mjw@redhat.com>
1942
1943	* dwarf_getsrclines.c (dwarf_getsrclines): Add new stack allocation
1944	limit MAX_STACK_ALLOC.  After MAX_STACK_ALLOC lines use malloc in
1945	NEW_LINE macro.  Free malloced line records if any at the end.
1946
19472013-07-02  Mark Wielaard  <mjw@redhat.com>
1948
1949	* dwarf_getcfi_elf.c (getcfi_shdr): Check sh_type == SHT_PROGBITS.
1950
19512013-06-26  Mark Wielaard  <mjw@redhat.com>
1952
1953	* libdw_visit_scopes.c (__libdw_visit_scopes): Don't reject root
1954	DIEs without children. Return an error whenever dwarf_child or
1955	dwarf_siblingof return an error. Don't call recurse and increase
1956	the depth for an imported unit. Walk the children of an imported
1957	unit as if they are logical children of the parent root DIE.
1958
19592013-05-03  Mark Wielaard  <mjw@redhat.com>
1960
1961	* dwarf_getsrclines.c (dwarf_getsrclines): Only set end_sequence
1962	when nlinelist > 0.
1963
19642013-04-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
1965
1966	* libdw.map (ELFUTILS_0.156): New.
1967
19682013-04-24  Mark Wielaard  <mjw@redhat.com>
1969
1970	* Makefile.am: Use AM_CPPFLAGS instead of INCLUDES.
1971
19722013-04-10  Mark Wielaard  <mjw@redhat.com>
1973
1974	* dwarf_formref_die.c (dwarf_formref_die): Reference size is only
1975	equal to address size when we have a DW_FORM_ref_addr for DWARF
1976	version 2.
1977
19782013-03-25  Mark Wielaard  <mjw@redhat.com>
1979
1980	* dwarf_getsrclines.c (dwarf_getsrclines): Mark highest address as
1981	end_sequence.
1982
19832013-03-12  Mark Wielaard  <mjw@redhat.com>
1984
1985	* dwarf_getsrcfiles.c (dwarf_getsrcfiles): Allow DW_TAG_partial_unit.
1986	* dwarf_getsrclines.c (dwarf_getsrclines): Likewise.
1987
19882013-02-15  Mark Wielaard  <mjw@redhat.com>
1989
1990	* dwarf_formstring.c (dwarf_formstring): Check dbg_ret->sectiondata,
1991	not dbg->sectiondata.
1992
19932013-01-07  Roland McGrath  <roland@hack.frob.com>
1994
1995	* memory-access.h
1996	[ALLOW_UNALIGNED] (read_8ubyte_unaligned_noncvt): New macro.
1997	[!ALLOW_UNALIGNED] (read_8ubyte_unaligned_noncvt): New inline function.
1998
19992012-12-18  Mark Wielaard  <mjw@redhat.com>
2000
2001	* dwarf_begin_elf.c (valid_p): Call Dwarf_Sig8_Hash_free if invalid.
2002	(check_section): Likewise on error.
2003	(scngrp_read): Likewise.
2004	(dwarf_begin_elf): Likewise.
2005
20062012-10-09  Petr Machata  <pmachata@redhat.com>
2007
2008	* dwarf_getlocation.c (__libdw_intern_expression): Handle
2009	DW_OP_GNU_parameter_ref, DW_OP_GNU_convert, DW_OP_GNU_reinterpret,
2010	DW_OP_GNU_regval_type, DW_OP_GNU_entry_value,
2011	DW_OP_GNU_deref_type, DW_OP_GNU_const_type.
2012
20132012-10-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
2014
2015	* cfi.c: New include system.h.
2016	(execute_cfi) (enough_registers): Clear new memory after realloc.
2017
20182012-10-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
2019
2020	* fde.c (__libdw_find_fde): Change <fde != NULL> to likely.  Return
2021	DWARF_E_NO_MATCH if .eh_frame_hdr points to FDE which is too short for
2022	searched PC.
2023
20242012-10-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
2025
2026	* dwarf_getlocation.c (__libdw_intern_expression) <cfap>: Make new
2027	loclist element DW_OP_call_frame_cfa before decoding the opcodes.
2028	Remove the later DW_OP_call_frame_cfa push to RESULT.
2029
20302012-10-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
2031
2032	Code cleanup.
2033	* fde.c (binary_search_fde): Remove always true <address >= start>
2034	conditional.  Move L initialization upwards.
2035
20362012-08-24  Mark Wielaard  <mjw@redhat.com>
2037
2038	* dwarf_begin_elf.c (check_section): Only probe for dwz multi files
2039	when ENABLE_DWZ is defined.
2040	* libdwP.h (__check_build_id): Only declare when ENABLE_DWZ is
2041	defined.
2042
20432012-08-16  Mark Wielaard  <mjw@redhat.com>
2044
2045	* Makefile.am (EXTRA_DIST): Add known-dwarf.h.
2046	* dwarf.h (DW_LANG_Go): Update comment.
2047	(DW_LANG_Mips_Assembler): Likewise.
2048
20492012-06-27  Mark Wielaard  <mjw@redhat.com>
2050
2051	* dwarf.h: Add DW_FORM_GNU_ref_alt and DW_FORM_GNU_strp_alt.
2052	* dwarf_begin.c (dwarf_begin): Add INTDEF.
2053	* dwarf_begin_elf.c (__check_build_id): New internal_function.
2054	(try_debugaltlink): New function.
2055	(open_debugaltlink): Likewise.
2056	(check_section): Try open_debugaltlink for .gnu_debugaltlink.
2057	* dwarf_end.c (dwarf_end): Free the alternative Dwarf descriptor if
2058	necessary.
2059	* dwarf_error.c (errmsgs): Add DWARF_E_NO_ALT_DEBUGLINK.
2060	* dwarf_formref.c (__libdw_formref): Using DW_FORM_GNU_ref_alt
2061	is an error here.
2062	* dwarf_formref_die.c (dwarf_formref_die): Handle DW_FORM_GNU_ref_alt.
2063	* dwarf_formstring.c (dwarf_formstring): Handle DW_FORM_GNU_strp_alt.
2064	* dwarf_formudata.c (__libdw_formptr): Adjust __libdw_read_offset
2065	calls.
2066	* dwarf_getpubnames.c (get_offsets): Adjust __libdw_read_offset call.
2067	* libdwP.h: Add DWARF_E_NO_ALT_DEBUGLINK.
2068	(struct Dwarf): Add alt_dwarf and free_alt fields.
2069	(__libdw_read_offset): Add dbg_ret argument, use to check with
2070	__libdw_offset_in_section.
2071	(__check_build_id): New function declaration.
2072	(dwarf_begin): Define as INTDECL.
2073	* libdw_form.c (__libdw_form_val_len): Handle DW_FORM_GNU_ref_alt
2074	and DW_FORM_GNU_strp_alt.
2075
20762012-07-19  Mark Wielaard  <mjw@redhat.com>
2077
2078	* dwarf.h: Add DW_OP_GNU_parameter_ref.
2079
20802012-07-24  Mark Wielaard  <mjw@redhat.com>
2081
2082	* dwarf.h: Correct spelling of DW_LANG_ObjC.
2083	* dwarf_aggregate_size.c (array_size): Use correct spelling of
2084	DW_LANG_ObjC.
2085
20862012-07-24  Mark Wielaard  <mjw@redhat.com>
2087
2088	* dwarf.h: Add DW_ATE_UTF.
2089
20902012-06-27  Mark Wielaard  <mjw@redhat.com>
2091
2092	* dwarf.h: Add DW_MACRO_GNU .debug_macro type encodings.
2093
20942012-06-26  Mark Wielaard  <mjw@redhat.com>
2095
2096	* libdwP.h: Add IDX_debug_macro.
2097	* dwarf.h: Add DW_AT_GNU_macros.
2098	* dwarf_begin_elf.c (dwarf_scnnames): Add .debug_macro.
2099	* dwarf_formudata.c (dwarf_formudata): Recognize DW_AT_GNU_macros.
2100
21012012-04-27  Mark Wielaard  <mjw@redhat.com>
2102
2103	* libdw/dwarf_highpc.c (dwarf_highpc): Handle DW_AT_high_pc being
2104	a constant offset from DW_AT_low_pc.
2105
21062012-03-19  Tom Tromey  <tromey@redhat.com>
2107
2108	* libdw_findcu.c (findcu_cb): Move earlier.
2109	(__libdw_intern_next_unit): Add new CU to search tree here...
2110	(__libdw_findcu): ... not here.
2111
21122012-01-31  Mark Wielaard  <mjw@redhat.com>
2113
2114	* dwarf_formudata.c (dwarf_formudata): Handle DW_FORM_sec_offset.
2115
21162011-11-31  Mark Wielaard  <mjw@redhat.com>
2117
2118	* Makefile.am (known-dwarf.h): Run gawk on config/known-dwarf.awk.
2119
21202011-07-14  Mark Wielaard  <mjw@redhat.com>
2121
2122	* libdw.h (dwarf_offdie): Fix documentation to mention .debug_info.
2123
21242011-05-16  Jakub Jelinek  <jakub@redhat.com>
2125
2126	* dwarf.h (DW_OP_GNU_const_type, DW_OP_GNU_regval_type,
2127	DW_OP_GNU_deref_type, DW_OP_GNU_convert, DW_OP_GNU_reinterpret):
2128	New.
2129
21302011-04-26  Mark Wielaard  <mjw@redhat.com>
2131
2132	* dwarf_child (dwarf_child): Sanity check end of section against
2133	cu_data () of die->cu.
2134
21352011-03-22  Mark Wielaard  <mjw@redhat.com>
2136
2137	* dwarf.h: Add DW_TAG_GNU_call_site,
2138	DW_TAG_GNU_call_site_parameter,
2139	DW_AT_GNU_call_site_value,
2140	DW_AT_GNU_call_site_data_value,
2141	DW_AT_GNU_call_site_target,
2142	DW_AT_GNU_call_site_target_clobbered,
2143	DW_AT_GNU_tail_call,
2144	DW_AT_GNU_all_tail_call_sites,
2145	DW_AT_GNU_all_call_sites,
2146	DW_AT_GNU_all_source_call_sites,
2147	and DW_OP_GNU_entry_value.
2148
21492011-03-10  Petr Machata  <pmachata@redhat.com>
2150
2151	* libdw/dwarf_tag.c (__libdw_findabbrev): Reject requests for
2152	abbreviation with code 0.
2153
21542011-03-09  Petr Machata  <pmachata@redhat.com>
2155
2156	* libdw/dwarf_child.c (dwarf_child): Check for section overrun.
2157
21582011-02-23  Roland McGrath  <roland@redhat.com>
2159
2160	* libdwP.h (struct Dwarf) [USE_ZLIB]: New member sectiondata_gzip_mask.
2161	Declare __libdw_free_zdata.
2162	* dwarf_end.c [USE_ZLIB] (__libdw_free_zdata): New function.
2163	(dwarf_end): Call it.
2164
2165	* dwarf_begin_elf.c (valid_p): Likewise.
2166	(check_section, scngrp_read): Likewise.
2167	(check_section) [USE_ZLIB]: Grok .z* flavors of sections.
2168
21692010-10-13  Roland McGrath  <roland@redhat.com>
2170
2171	* dwarf.h: Add DW_LANG_Go.
2172
21732010-10-05  Roland McGrath  <roland@redhat.com>
2174
2175	* dwarf_getaranges.c: Use malloc rather than alloca,
2176	since the total number of elements can be quite huge.
2177
21782010-07-26  Roland McGrath  <roland@redhat.com>
2179
2180	* dwarf_getlocation_implicit_pointer.c: New file.
2181	* Makefile.am (libdw_a_SOURCES): Add it.
2182	* libdw.map (ELFUTILS_0.149): New set.
2183	Add dwarf_getlocation_implicit_pointer.
2184	* libdw.h: Declare it.
2185
2186	* dwarf_offdie.c (do_offdie): Renamed to __libdw_offdie, made global.
2187	(dwarf_offdie, dwarf_offdie_types): Update callers.
2188	* libdwP.h: Declare it.
2189
2190	* dwarf.h: Add DW_OP_GNU_implicit_pointer.
2191	* dwarf_getlocation.c (__libdw_intern_expression): Handle it.
2192
21932010-08-24  Roland McGrath  <roland@redhat.com>
2194
2195	* libdw.map (ELFUTILS_0.149): New set.  Add dwfl_dwarf_line.
2196
21972010-07-27  Roland McGrath  <roland@redhat.com>
2198
2199	* dwarf_formref_die.c: Fix sig8 hash insertion.
2200
22012010-06-23  Roland McGrath  <roland@redhat.com>
2202
2203	* cfi.c (dwarf_cfi_validate_fde): Function removed.
2204	* libdw.h: Remove it.
2205	* libdw.map: Likewise.
2206
22072010-06-22  Roland McGrath  <roland@redhat.com>
2208
2209	* dwarf_getlocation.c (check_constant_offset): data[48] are constant.
2210
2211	* dwarf_getsrclines.c: Fix signed comparison warning in extended
2212	opcode parsing.
2213
22142010-06-21  Roland McGrath  <roland@redhat.com>
2215
2216	* dwarf.h: Add DW_TAG_GNU_* constants.
2217
2218	* memory-access.h (get_sleb128_rest_return): Fix sign extension for
2219	10-byte case.
2220
22212010-06-20  Roland McGrath  <roland@redhat.com>
2222
2223	* libdw_findcu.c (__libdw_findcu): Take new flag argument,
2224	to search TUs instead of CUs.
2225	* libdwP.h: Update decl.
2226	(struct Dwarf): New member tu_tree.
2227	* dwarf_end.c (dwarf_end): Clean up tu_tree.
2228	* dwarf_offdie.c (do_offdie): New function, broken out of ...
2229	(dwarf_offdie): ... here.
2230	(dwarf_offdie_types): New function.
2231	* libdw.h: Declare it.
2232	* libdw.map (ELFUTILS_0.148): Add it.
2233
2234	* libdwP.h (CUDIE): Use cu_data.
2235	* dwarf_formblock.c: Likewise.
2236	* dwarf_formref_die.c: Likewise.
2237	* dwarf_diecu.c: Use CUDIE macro.
2238	* dwarf_formaddr.c: Use cu_sec_idx.
2239
22402010-06-16  Roland McGrath  <roland@redhat.com>
2241
2242	* dwarf_formref_die.c: Use dwarf_offdie only for DW_FORM_ref_addr, so
2243	we don't repeat a CU lookup we've already done.  Handle
2244	DW_FORM_ref_sig8 using sig8_hash table and __libdw_intern_next_unit.
2245
2246	* libdw_findcu.c (__libdw_intern_next_unit): New function,
2247	broken out of ...
2248	(__libdw_findcu): ... here.  Call it.
2249	* libdwP.h: Declare it.
2250	(struct Dwarf): New member next_tu_offset.
2251
2252	* dwarf_sig8_hash.c: New file.
2253	* dwarf_sig8_hash.h: New file.
2254	* Makefile.am (libdw_a_SOURCES, noinst_HEADERS): Add them.
2255	* dwarf_abbrev_hash.c: Include dwarf_sig8_hash.h before
2256	defining NO_UNDEF.
2257	* libdwP.h (struct Dwarf): New member sig8_hash.
2258	* dwarf_begin_elf.c: Call Dwarf_Sig8_Hash_init on it.
2259	* dwarf_end.c: Call Dwarf_Sig8_Hash_free on it.
2260
2261	* dwarf_nextcu.c (dwarf_next_unit): New function, broken out of ...
2262	(dwarf_nextcu): ... here.  Call it.
2263	* libdw.h: Declare it.
2264	* libdwP.h: Add INTDECL.
2265	* libdw_findcu.c (__libdw_findcu): Use it instead of dwarf_nextcu.
2266	* libdw.map (ELFUTILS_0.148): New set, add dwarf_next_unit.
2267
2268	* libdwP.h (cu_sec_idx, cu_data): New functions.
2269	Use .debug_types when CU is a TU.
2270	* dwarf_cuoffset.c: Use that instead of assuming IDX_debug_info.
2271	* dwarf_siblingof.c: Likewise.
2272	* dwarf_formstring.c: Likewise.
2273	* dwarf_formudata.c (__libdw_formptr, dwarf_formudata): Likewise.
2274	* dwarf_getlocation.c (dwarf_getlocation): Likewise.
2275	(dwarf_getlocation_addr): Likewise.
2276
2277	* libdwP.h (struct Dwarf_CU): Add new members type_offset, type_sig8.
2278	(DIE_OFFSET_FROM_CU_OFFSET): Take flag argument; if true, compute
2279	.debug_types header size instead of .debug_info header size.
2280	(CUDIE): Use it.
2281	* dwarf_diecu.c: Update caller.
2282	* dwarf_getaranges.c: Likewise.
2283	* dwarf_nextcu.c: Likewise.
2284	* libdw_findcu.c (__libdw_findcu): Initialize new members.
2285
2286	* fde.c (fde_by_offset): Renamed to ...
2287	(__libdw_fde_by_offset): ... this, made global and internal_function.
2288	Don't take ADDRESS argument.
2289	(__libdw_find_fde): Update caller.  Do address sanity check here.
2290	* cfi.h: Declare __libdw_fde_by_offset.
2291	* cfi.c (dwarf_cfi_validate_fde): New function.
2292	* libdw.h: Declare it.
2293	* libdw.map (ELFUTILS_0.148): Add it.
2294
2295	* cie.c (intern_new_cie): Canonicalize DW_EH_PE_absptr FDE encoding to
2296	either DW_EH_PE_udata8 or DW_EH_PE_udata4.
2297
2298	* encoded-value.h (read_encoded_value): Handle DW_EH_PE_indirect.
2299	Don't assume DW_EH_PE_aligned refers to native address size.
2300
2301	* cfi.c (execute_cfi): Barf on CIE initial instructions changing the
2302	address.
2303
23042010-06-17  Roland McGrath  <roland@redhat.com>
2305
2306	* libdwP.h (struct Dwarf_Line_s): Add members isa, discriminator, and
2307	op_index.
2308	* dwarf_getsrclines.c (dwarf_getsrclines): Move NEW_FILE macro guts
2309	into an inner inline function.  Set new fields.  Check all fields for
2310	overflow when setting.
2311	* dwarf_lineisa.c: New file.
2312	* dwarf_linediscriminator.c: New file.
2313	* dwarf_lineop_index.c: New file.
2314	* Makefile.am (libdw_a_SOURCES): Add them.
2315	* libdw.map (ELFUTILS_0.148): Add them.
2316	* libdw.h: Declare them.
2317
23182010-06-16  Roland McGrath  <roland@redhat.com>
2319
2320	* dwarf_next_cfi.c: Fix version 4 return_address_register decoding.
2321
2322	* fde.c (fde_by_offset): Renamed to ...
2323	(__libdw_fde_by_offset): ... this, made global and internal_function.
2324	Don't take ADDRESS argument.
2325	(__libdw_find_fde): Update caller.  Do address sanity check here.
2326	* cfi.h: Declare __libdw_fde_by_offset.
2327	* cfi.c (dwarf_cfi_validate_fde): New function.
2328	* libdw.h: Declare it.
2329	* libdw.map (ELFUTILS_0.148): Add it.
2330
2331	* cie.c (intern_new_cie): Canonicalize DW_EH_PE_absptr FDE encoding to
2332	either DW_EH_PE_udata8 or DW_EH_PE_udata4.
2333
2334	* encoded-value.h (read_encoded_value): Handle DW_EH_PE_indirect.
2335	Don't assume DW_EH_PE_aligned refers to native address size.
2336
2337	* cfi.c (execute_cfi): Barf on CIE initial instructions changing the
2338	address.
2339
23402010-06-15  Roland McGrath  <roland@redhat.com>
2341
2342	* dwarf_formref.c (__libdw_formref): Diagnose DW_FORM_ref_sig8 like
2343	DW_FORM_ref_addr.
2344	* dwarf_formref_die.c (dwarf_formref_die): Diagnose it the same way
2345	here, since we don't support it yet.
2346
2347	* dwarf_next_cfi.c: Handle version 4 format.
2348
2349	* dwarf_getsrclines.c: Handle version 4 format.
2350
23512010-06-01  Roland McGrath  <roland@redhat.com>
2352
2353	* libdwP.h: Remove unused IDX_debug_*names, add IDX_debug_types.
2354	* dwarf_begin_elf.c (dwarf_scnnames): Likewise.
2355
2356	* libdwP.h (CIE_VERSION): Remove unused macro.
2357
2358	* dwarf_getsrclines.c: Fix version field test.
2359	* libdwP.h (DWARF_VERSION): Remove useless macro.
2360
2361	* dwarf_formudata.c (__libdw_formptr): Fix DW_FORM_sec_offset handling.
2362
2363	* dwarf_formblock.c (dwarf_formblock): Handle DW_FORM_exprloc.
2364
2365	* libdw_findcu.c (__libdw_findcu): Accept version 4.
2366
23672010-05-31  Mark Wielaard  <mjw@redhat.com>
2368
2369	* cfi.h (dwarf_cfi_cie_p): Move definition from here, to ..
2370	* libdw.h (dwarf_cfi_cie_p): ... here.
2371
23722010-05-31  Mark Wielaard  <mjw@redhat.com>
2373
2374	* dwarf.h: Fix DW_LANG_Python constant.
2375
23762010-05-28  Eduardo Santiago  <santiago@redhat.com>
2377
2378	* dwarf_getlocation.c (dwarf_getlocation): Do attr_ok check first
2379	thing.
2380
23812010-05-27  Roland McGrath  <roland@redhat.com>
2382
2383	* dwarf.h: Add DW_AT_enum_class, DW_AT_linkage_name,
2384	DW_TAG_template_alias, DW_LANG_Python, DW_LNE_set_discriminator.
2385
23862010-05-08  Roland McGrath  <roland@redhat.com>
2387
2388	* dwarf_getlocation.c (__libdw_intern_expression): Take new argument
2389	REF_SIZE.  Use that to handle DW_OP_call_ref correctly.
2390	(getlocation): Update caller.
2391	* dwarf_frame_cfa.c (dwarf_frame_cfa): Likewise.
2392	* dwarf_frame_register.c (dwarf_frame_register): Likewise.
2393	* libdwP.h: Update decl.
2394
23952010-04-26  Roland McGrath  <roland@redhat.com>
2396
2397	* cfi.h (struct Dwarf_Frame_s): Add cfa_invalid alternative in cfa_rule.
2398	* cfi.c (execute_cfi): Set that instead of doing cfi_assert for
2399	DW_CFA_def_cfa_{offset*,register} when a non-offset rule is in force.
2400	* dwarf_frame_cfa.c (dwarf_frame_cfa): Handle cfa_invalid.
2401
2402	* dwarf_getlocation.c (__libdw_intern_expression): Take new arg CFAP.
2403	Prepend DW_OP_call_frame_cfa if true.
2404	(getlocation): Update caller.
2405	* dwarf_frame_cfa.c (dwarf_frame_cfa): Likewise.
2406	* dwarf_frame_register.c (dwarf_frame_register): Likewise.
2407	* libdwP.h: Update decl.
2408
24092010-04-22  Roland McGrath  <roland@redhat.com>
2410
2411	* cfi.c (execute_cfi): Never return without cleanup.
2412	Free FS on failure.
2413	(cie_cache_initial_state): Adjust caller to expect that free.
2414	(__libdw_frame_at_address): Likewise.
2415
24162010-03-10  Roland McGrath  <roland@redhat.com>
2417
2418	* libdw.map (ELFUTILS_0.146): New set.  Add dwfl_core_file_report.
2419
24202010-02-15  Roland McGrath  <roland@redhat.com>
2421
2422	* Makefile.am: Use config/eu.am for common stuff.
2423
24242010-02-02  Mark Wielaard  <mjw@redhat.com>
2425
2426	* fde.c (intern_fde): Fix length check for sized_augmentation_data.
2427
24282010-01-07  Roland McGrath  <roland@redhat.com>
2429
2430	* dwarf_getcfi_elf.c (getcfi_phdr): Use elf_getphdrnum.
2431
24322010-01-05  Roland McGrath  <roland@redhat.com>
2433
2434	* dwarf_aggregate_size.c: New file.
2435	* Makefile.am (libdw_a_SOURCES): Add it.
2436	* libdw.h: Declare it.
2437	* libdwP.h: Add INTDECL.
2438	* libdw.map (ELFUTILS_0.144): New set.  Add dwarf_aggregate_size.
2439
2440	* dwarf_srclang.c: Add INTDEF.
2441	* libdwP.h: Add INTDECL.
2442
2443	* dwarf.h: Add some more DW_AT_GNU_* types from gcc.
2444
2445	* dwarf.h: Add DW_AT_GNU_vector, DW_AT_GNU_template_name.
2446
24472009-11-21  Roland McGrath  <roland@redhat.com>
2448
2449	* dwarf_getlocation.c (check_constant_offset): Return 1 for all
2450	non-constant forms.
2451
24522009-10-15  Roland McGrath  <roland@redhat.com>
2453
2454	* libdw_form.c (__libdw_form_val_len): Grok DW_FORM_sec_offset,
2455	DW_FORM_exprloc, DW_FORM_flag_present, and DW_FORM_ref_sig8.
2456
24572009-09-17  Roland McGrath  <roland@redhat.com>
2458
2459	* dwarf_getlocation.c (dwarf_getlocation_implicit_value): Make OP
2460	argument a pointer to const.
2461	* libdw.h: Update decl.
2462
24632009-09-10  Roland McGrath  <roland@redhat.com>
2464
2465	* dwarf_getlocation.c (store_implicit_value): New function.
2466	(__libdw_intern_expression): Use it, handle DW_OP_implicit_value.
2467	(dwarf_getlocation_implicit_value): New function.
2468	* libdw.h: Declare it.
2469	* libdw.map (ELFUTILS_0.143): Add it.
2470
24712009-09-09  Mark Wielaard  <mjw@redhat.com>
2472
2473	* dwarf_getcfi.c (dwarf_getcfi): Clear cfi->ebl.
2474
24752009-08-21  Josh Stone  <jistone@redhat.com>
2476
2477	* dwarf_hasattr_integrate.c: Integrate DW_AT_specification too.
2478
24792009-08-10  Roland McGrath  <roland@redhat.com>
2480
2481	* dwarf_getscopevar.c: Use dwarf_diename.
2482
24832009-08-09  Roland McGrath  <roland@redhat.com>
2484
2485	* libdw.map (ELFUTILS_0.143): New version set,
2486	inherits from ELFUTILS_0.142.
2487	* dwarf_arrayorder.c: Use OLD_VERSION and NEW_VERSION to define an
2488	alias in the ELFUTILS_0.122 version set and the default in the new set.
2489	* dwarf_srclang.c: Likewise.
2490	* dwarf_decl_file.c: Likewise.
2491	* dwarf_decl_line.c: Likewise.
2492	* dwarf_decl_column.c: Likewise.
2493	* dwarf_bytesize.c: Likewise.
2494	* dwarf_bitsize.c: Likewise.
2495	* dwarf_bitoffset.c: Likewise.
2496
24972009-08-07  Roland McGrath  <roland@redhat.com>
2498
2499	* dwarf_arrayorder.c: Use dwarf_attr_integrate.
2500	* dwarf_srclang.c: Likewise.
2501	* dwarf_decl_file.c: Likewise.
2502	* dwarf_decl_line.c (__libdw_attr_intval): Likewise.
2503	* dwarf_bytesize.c: Likewise.
2504	* dwarf_bitsize.c: Likewise.
2505	* dwarf_bitoffset.c: Likewise.
2506
25072009-07-22  Roland McGrath  <roland@redhat.com>
2508
2509	* dwarf_frame_cfa.c: Change calling convention.
2510	* libdw.h: Update decl.
2511
2512	* dwarf_frame_register.c: Change calling/return-value convention for
2513	value-only results and undefined/same_value.
2514	* libdw.h: Update decl.
2515
2516	* dwarf_getlocation.c (__libdw_intern_expression): Take new bool
2517	argument, append DW_OP_stack_value if set.  Don't take NOPS argument,
2518	return that value instead.
2519	(getlocation): Update caller.
2520	* dwarf_frame_cfa.c: Likewise.
2521	* libdwP.h: Update decl.
2522
25232009-07-21  Roland McGrath  <roland@redhat.com>
2524
2525	* dwarf_getsrc_file.c: Ignore a CU that just has no DW_AT_stmt_list.
2526	Fix loop iteration after skipping a bogus or useless CU.
2527
2528	* dwarf_entry_breakpoints.c: Handle 0 dwarf_errno () as harmless
2529	absence, not DWARF_E_NO_DEBUG_LINE.
2530
25312009-07-20  Roland McGrath  <roland@redhat.com>
2532
2533	* dwarf_getlocation.c (__libdw_intern_expression):
2534	Handle DW_OP_stack_value.
2535
25362009-07-16  Roland McGrath  <roland@redhat.com>
2537
2538	* dwarf_formudata.c (__libdw_formptr): Handle DW_FORM_sec_offset,
2539	reject others when CU's version > 3.
2540
2541	* dwarf_formflag.c: Handle DW_FORM_flag_present.
2542
2543	* dwarf.h: Add DW_OP_{implicit,stack}_value from DWARF 4 draft.
2544	Also DW_TAG_type_unit and DW_TAG_rvalue_reference_type.
2545	Also DW_AT_signature, DW_AT_main_subprogram, DW_AT_data_bit_offset,
2546	and DW_AT_const_expr.
2547	Also DW_FORM_sec_offset, DW_FORM_exprloc, DW_FORM_flag_present,
2548	and DW_FORM_ref_sig8.
2549
25502009-07-15  Roland McGrath  <roland@redhat.com>
2551
2552	* dwarf_getlocation.c: Grok DW_OP_form_tls_address,
2553	DW_OP_GNU_push_tls_address, and DW_OP_bit_piece.
2554
25552009-07-13  Roland McGrath  <roland@redhat.com>
2556
2557	* dwarf_getlocation.c: Grok DW_OP_call_frame_cfa.
2558
25592009-07-08  Roland McGrath  <roland@redhat.com>
2560
2561	* libdw.map (ELFUTILS_0.142): Add dwfl_module_dwarf_cfi,
2562	dwfl_module_eh_cfi.
2563
2564	* libdwP.h (struct Dwarf): Add member `cfi'.
2565	* dwarf_end.c (dwarf_end): Call __libdw_destroy_frame_cache on it.
2566	* dwarf_getcfi.c: New file.
2567	* dwarf_getcfi_elf.c: New file.
2568	* dwarf_cfi_end.c: New file.
2569	* dwarf_cfi_addrframe.c: New file.
2570	* dwarf_frame_cfa.c: New file.
2571	* dwarf_frame_register.c: New file.
2572	* dwarf_frame_return_address_register.c: New file.
2573	* Makefile.am (libdw_a_SOURCES): Add them.
2574	* unwind.h: Declare those functions.
2575	* libdw.map (ELFUTILS_0.142): Export them.
2576
2577	* dwarf_getlocation.c (__libdw_intern_expression): New function,
2578	broken out of ...
2579	(getlocation): ... here, call it.
2580	* libdwP.h: Declare it.
2581
2582	* cie.c: New file.
2583	* fde.c: New file.
2584	* frame-cache.c: New file.
2585	* cfi.c: New file.
2586	* cfi.h: New file.
2587	* encoded-value.h: New file.
2588	* Makefile.am (libdw_a_SOURCES, noinst_HEADERS): Add them.
2589	* libdwP.h: Add DWARF_E_INVALID_CFI to errors enum.
2590	* dwarf_error.c (errmsgs): Add element for it.
2591
2592	* dwarf_next_cfi.c: New file.
2593	* Makefile.am (libdw_a_SOURCES): Add it.
2594	* libdw.h (Dwarf_CIE, Dwarf_FDE, Dwarf_CIE_Entry): New types.
2595	Declare dwarf_next_cfi.
2596	* libdw.map (ELFUTILS_0.142): New set, inherits from ELFUTILS_0.136.
2597	Add dwarf_next_cfi.
2598
2599	* memory-access.h [! ALLOW_UNALIGNED]
2600	(read_2ubyte_unaligned): Renamed to ...
2601	(read_2ubyte_unaligned_1): ... this.  Take bool rather than Dwarf *.
2602	(read_2ubyte_unaligned): Define as macro passing dbg->other_byte_order.
2603	(read_2sbyte_unaligned): Likewise.
2604	(read_4ubyte_unaligned): Likewise.
2605	(read_4sbyte_unaligned): Likewise.
2606	(read_8ubyte_unaligned): Likewise.
2607	(read_8sbyte_unaligned): Likewise.
2608
2609	* libdwP.h (IDX_eh_frame): Remove it.
2610	* dwarf_begin_elf.c (dwarf_scnnames): Remove its element.
2611
26122009-07-08  Roland McGrath  <roland@redhat.com>
2613
2614	* libdwP.h (struct Dwarf_Line_s): Reorder members to pack better.
2615
2616	* dwarf_getlocation.c (check_constant_offset): New function.
2617	(dwarf_getlocation, dwarf_getlocation_addr): Call it to
2618	handle DW_AT_data_member_location of data[48] as constant offset.
2619
26202009-06-18  Roland McGrath  <roland@redhat.com>
2621
2622	* libdwP.h (__libdw_read_address_inc): Constify.
2623	(__libdw_read_offset_inc): Likewise.
2624	* dwarf_getaranges.c: Likewise.
2625	* dwarf_getlocation.c: Likewise.
2626	* dwarf_getsrclines.c: Likewise.
2627	* dwarf_nextcu.c: Likewise.
2628
26292009-05-05  Petr Machata  <pmachata@redhat.com>
2630
2631	* libdwP.h (__libdw_formptr): Declare new function.
2632	* dwarf_formudata.c: Implement it here.
2633	* dwarf_getlocation.c (dwarf_getlocation_addr):
2634	Call it instead of hand-rolled offset handling code.
2635	* dwarf_getsrclines.c (dwarf_getsrclines): Likewise.
2636	* dwarf_ranges.c (dwarf_ranges): Likewise.
2637
26382009-05-04  Petr Machata  <pmachata@redhat.com>
2639
2640	* libdwP.h (__libdw_read_begin_end_pair_inc): Declare new function.
2641	* dwarf_ranges.c: Implement it here.
2642	(dwarf_ranges): Call it.
2643	* dwarf_getlocation.c (dwarf_getlocation_addr): Call it also here.
2644
26452009-04-23  Petr Machata  <pmachata@redhat.com>
2646
2647	* dwarf_formaddr.c (dwarf_formaddr): Call __libdw_read_* instead
2648	of read_*ubyte_unaligned.
2649	* dwarf_formref_die.c (dwarf_formref_die): Likewise.
2650	* dwarf_formstring.c (dwarf_formstring): Likewise.
2651	* dwarf_formudate.c (dwarf_formudata): Likewise.
2652	* dwarf_getaranges.c (dwarf_getaranges): Likewise.
2653	* dwarf_getlocation.c (dwarf_getlocation_addr): Likewise.
2654	* dwarf_getpubnames.c (get_offsets): Likewise.
2655	* dwarf_nextcu.c (dwarf_nextcu): Likewise.
2656
26572009-04-23  Petr Machata  <pmachata@redhat.com>
2658
2659	* libdwP.h (__libdw_read_addr_inc, __libdw_read_off_inc,
2660	__libdw_read_addr, __libdw_read_off): Add four new internal
2661	functions.
2662
26632009-05-07  Roland McGrath  <roland@redhat.com>
2664
2665	* dwarf_getmacros.c (dwarf_getmacros): Use absolute section offset in
2666	return value and OFFSET argument, not CU-relative.  Only fetch the
2667	attribute data when called with OFFSET of 0.
2668
26692009-05-07  Petr Machata  <pmachata@redhat.com>
2670
2671	* dwarf_getmacros.c (dwarf_getmacros): Take into account offset in
2672	DW_AT_macro_info attribute of CU DIE.
2673
26742009-04-15  Roland McGrath  <roland@redhat.com>
2675
2676	* dwarf.h (DW_CIE_ID): Removed.
2677	(DW_CIE_ID_32, DW_CIE_ID_64): New constants replace it.
2678
26792009-04-01  Roland McGrath  <roland@redhat.com>
2680
2681	* dwarf.h: Add DW_CFA_GNU_negative_offset_extended.
2682
26832009-01-28  Roland McGrath  <roland@redhat.com>
2684
2685	* libdwP.h (struct Dwarf_Line_s): Move out of struct Dwarf_Lines_s
2686	defn so C++ doesn't scope the name to not match the Dwarf_Line typedef.
2687
2688	* libdwP.h (struct Dwarf_Files_s): Replace dbg field with cu field.
2689
26902009-01-26  Roland McGrath  <roland@redhat.com>
2691
2692	* dwarf_ranges.c: Return 0 when no ranges or *_pc attrs at all.
2693
26942009-01-25  Roland McGrath  <roland@redhat.com>
2695
2696	* dwarf_getattrs.c: Correctly skip attribute values when restarting.
2697
26982009-01-23  Roland McGrath  <roland@redhat.com>
2699
2700	* Makefile.am ($(srcdir)/known-dwarf.h): Target renamed back.
2701	Put these rules under if MAINTAINER_MODE.
2702
27032009-01-22  Roland McGrath  <roland@redhat.com>
2704
2705	* dwarf.h: Add DW_OP_GNU_encoded_addr.
2706
27072009-01-21  Roland McGrath  <roland@redhat.com>
2708
2709	* Makefile.am (CLEANFILES): Renamed to ...
2710	(MOSTLYCLEANFILES): ... here.
2711	(CLEANFILES): New variable, add known-dwarf.h.
2712
27132009-01-17  Roland McGrath  <roland@redhat.com>
2714
2715	* Makefile.am (known-dwarf.h): Target renamed, not in $(srcdir).
2716	Make it unconditional.
2717	(BUILT_SOURCES): Updated.
2718
2719	* dwarf.h: Add description comments for DW_LANG_* values.
2720
2721	* Makefile.am [MAINTAINER_MODE]
2722	($(srcdir)/known-dwarf.h): New target.
2723	(BUILT_SOURCES): Add it.
2724
2725	* dwarf.h: Add DW_OP_GNU_push_tls_address, DW_OP_GNU_uninit.
2726
27272009-01-10  Ulrich Drepper  <drepper@redhat.com>
2728
2729	* dwarf_error.c: Always use __thread.  Remove all !USE_TLS code.
2730
27312009-01-08  Roland McGrath  <roland@redhat.com>
2732
2733	* Makefile.am (libdw.so): Don't depend on $(zip_LIBS), just link it in.
2734
27352008-01-06  Roland McGrath  <roland@redhat.com>
2736
2737	* libdwP.h (struct Dwarf_Abbrev): Change type of 'has_children' to bool.
2738	Reorder members.
2739	* dwarf_haschildren.c: Return -1 for error case, not 0.
2740
2741	* Makefile.am (libdw.so): Link in $(zip_LIBS).
2742
27432009-01-06  Ulrich Drepper  <drepper@redhat.com>
2744
2745	* dwarf.h: Add definition for unwind and call frame information.
2746
2747	* memory-access.h: Define read_ubyte_unaligned, read_sbyte_unaligned,
2748	read_ubyte_unaligned_inc, and read_sbyte_unaligned_inc.
2749
27502008-08-15  Roland McGrath  <roland@redhat.com>
2751
2752	* libdw.map (ELFUTILS_0.136): New version set, inherits from
2753	ELFUTILS_0.130.  Add dwfl_addrsegment, dwfl_report_segment.
2754
27552008-01-21  Ulrich Drepper  <drepper@redhat.com>
2756
2757	* dwarf_child.c: Minor optimizations.
2758	* dwarf_getattrs.c: Likewise.
2759	* dwarf_getpubnames.c: Likewise.
2760	* dwarf_siblingof.c: Likewise.
2761	* dwarf_tag.c: Likewise.
2762
27632008-01-18  Ulrich Drepper  <drepper@redhat.com>
2764
2765	* dwarf_getsrclines.c (dwarf_getsrclines): Don't require exact match
2766	of DWARF_VERSION comparison, just fail if the file's version is newer.
2767
27682008-01-17  Nick Clifton  <nickc@redhat.com>
2769
2770	* dwarf.h (DWARF3_LENGTH_MIN_ESCAPE_CODE): New define.
2771	(DWARF3_LENGTH_MAX_ESCAPE_CODE): New define.
2772	(DWARF3_LENGTH_64_BIT): New define.
2773	* dwarf_getaranges (dwarf_getaranges): Use the new definitions.
2774	* dwarf_getpubnames: Include dwarf.h.
2775	(get_offsets): Use the new definitions.
2776	* dwarf_getsrclines.c (dwarf_getsrclines): Use the new defintions.
2777	* dwarf_nextcu.c: Include dwarf.h.  Correct comment.
2778	(dwarf_nextcu): Use the new definitions.
2779
2780	* libdwP.h (DIE_OFFSET_FROM_CU_OFFSET): New macro.
2781	* dwarf_diecu.c (dwarf_diecu): Use the new macro.
2782	* dwarf_getaranges (dwarf_getaranges): Use the new macro.
2783	* dwarf_nextcu.c (dwarf_nextcu): Use the new macro.
2784
2785	* dwarf_getpubnames (get_offsets): Replace assertion with test and
2786	error return.
2787
2788	* dwarf_entry_breakpoints.c (dwarf_entry_breakpoints): Use CUDIE.
2789
2790	* dwarf_siblingof (dwarf_siblingof): Detect a NULL return pointer.
2791	Set the address in the return structure to the address of the next
2792	non-sibling die, if there is no sibling and the return pointer is
2793	not the same as the die pointer.
2794	* libdw.h: Expand the description of the dwarf_siblingof prototype.
2795
2796	* dwarf_child.c: Fix typo in comment.
2797
2798	* libdwP.h (DWARF_VERSION): Change to 3.
2799
2800	* dwarf_formref.c (__libdw_formref.c): Handle attributes which do
2801	not have a initialised valp pointer.
2802
2803	* dwarf_getattrs.c (dwarf_getattrs): Return 1 rather than 0 when
2804	the end of the attributes is reached.  When the callback fails,
2805	return the address of the failing attribute, not the address of
2806	its successor.
2807	* libdw.h: Expand the description of the dwarf_getattrs prototype.
2808
2809	* dwarf_child.c (__libdw_find_attr): Use the new definition.
2810	(dwarf_child): Likewise.
2811	* dwarf_tag.c (__libdw_findabbrev): Likewise.
2812	(dwarf_tag): Likewise.
2813
28142008-01-08  Roland McGrath  <roland@redhat.com>
2815
2816	* Makefile.am (euinclude): Variable removed.
2817	(pkginclude_HEADERS): Set this instead of euinclude_HEADERS.
2818	(libdw.so): Pass -Wl,--enable-new-dtags,-rpath,$(pkglibdir).
2819
28202007-10-17  Roland McGrath  <roland@redhat.com>
2821
2822	* libdw.h (__deprecated_attribute__): New macro.
2823	(dwarf_formref): Mark it deprecated.
2824	* dwarf_formref.c (__libdw_formref): New function, broken out of ...
2825	(dwarf_formref): ... here.  Call it.  Remove INTDEF.
2826	* libdwP.h: Remove INTDECL.
2827	Declare __libdw_formref.
2828	* dwarf_siblingof.c (dwarf_siblingof): Call __libdw_formref instead.
2829	* dwarf_formref_die.c: Likewise.  Handle DW_FORM_ref_addr here.
2830
2831	* libdw_form.c (__libdw_form_val_len): Fix DW_FORM_ref_addr result,
2832	needs to check CU->version.
2833
2834	* libdwP.h (struct Dwarf_CU): New member `version'.
2835	* libdw_findcu.c (__libdw_findcu): Initialize it.
2836
2837	* dwarf_child.c: Return 1 for null entry as first child.
2838
28392007-10-05  Roland McGrath  <roland@redhat.com>
2840
2841	* dwarf_begin_elf.c (check_section): Punt on SHT_NOBITS sections.
2842
2843	* libdw.h (__extern_inline): Rename to __libdw_extern_inline.
2844	[__OPTIMIZE__] (dwarf_whatattr, dwarf_whatform): Update uses.
2845
28462007-10-03  Roland McGrath  <roland@redhat.com>
2847
2848	* libdw.map (ELFUTILS_0.130: Add dwfl_build_id_find_elf
2849	and dwfl_build_id_find_debuginfo.
2850
2851	* libdw.map (ELFUTILS_0.130): New version set, inherits from
2852	ELFUTILS_0.127.  Add dwfl_module_build_id, dwfl_module_report_build_id.
2853
28542007-10-02  Roland McGrath  <roland@redhat.com>
2855
2856	* libdw_visit_scopes.c (classify_die): Return walk for class_type and
2857	structure_type.
2858
28592007-08-07  Roland McGrath  <roland@redhat.com>
2860
2861	* dwarf_getscopes.c (pc_match): Swallow dwarf_haspc error return when
2862	error code is DWARF_E_NOERROR (0).
2863
2864	* dwarf_getscopes.c (pc_record): Always bail early if DIE->prune.
2865	Fix typo in __libdw_visit_scopes argument.
2866
2867	* dwarf_getscopes.c (pc_match): Check dwarf_haspc error return,
2868	swallow DWARF_E_NO_DEBUG_RANGES but not other errors.
2869
28702007-07-03  Roland McGrath  <roland@redhat.com>
2871
2872	* libdw.h (__extern_inline): New macro.
2873	[__OPTIMIZE__] (dwarf_whatattr, dwarf_whatform): Use it.
2874
28752007-04-16  Roland McGrath  <roland@redhat.com>
2876
2877	* libdw.map (ELFUTILS_0.127): Add dwfl_module_address_section.
2878
28792007-04-05  Roland McGrath  <roland@redhat.com>
2880
2881	* dwarf_getsrcdirs.c: New file.
2882	* Makefile.am (libdw_a_SOURCES): Add it.
2883	* libdw.h: Declare dwarf_getsrcdirs.
2884	* libdw.map (ELFUTILS_0.127): Add it.
2885
2886	* libdwP.h (struct Dwarf_Files_s): New member ndirs.
2887	* dwarf_getsrclines.c (dwarf_getsrclines): Don't clobber NDIRLIST to
2888	zero before we use it to check for DWARF_E_INVALID_DIR_IDX.
2889	Save DIRARRAY in the Dwarf_Files.
2890
2891	* dwarf_ranges.c (dwarf_ranges): Don't sign-extend 32-bit BEGIN
2892	address to check for all-ones base address entry.  Check directly.
2893	Reported by Sébastien Dugué <sebastien.dugue@bull.net>.
2894
28952007-03-25  Roland McGrath  <roland@redhat.com>
2896
2897	* dwarf_begin_elf.c (check_section): Return Dwarf * instead of void.
2898	Return NULL when freeing RESULT on error.
2899	(global_read, scngrp_read): Check return value from check_section,
2900	break out of loop after it has freed RESULT.
2901	(valid_p): Handle null argument.
2902
29032007-03-12  Roland McGrath  <roland@redhat.com>
2904
2905	* libdw.map (ELFUTILS_0.127): Add dwfl_report_begin_add.
2906
29072007-03-04  Roland McGrath  <roland@redhat.com>
2908
2909	* libdw.map (ELFUTILS_0.127): New version set, inherits from
2910	ELFUTILS_0.126.  Add dwfl_module_addrsym.
2911
29122007-02-10  Roland McGrath  <roland@redhat.com>
2913
2914	* dwarf.h (DW_OP_fbreg): Comment fix.
2915
29162007-02-03  Roland McGrath  <roland@redhat.com>
2917
2918	* dwarf_getelf.c (dwarf_getelf): Renamed from dwarf_get_elf.
2919	* libdw.map (ELFUTILS_0.126): New version set, inherits from
2920	ELFUTILS_0.122.  Move dwarf_getelf there; it was never truly
2921	exported in the past.
2922
29232006-12-17  Roland McGrath  <roland@redhat.com>
2924
2925	* dwarf_getlocation.c (dwarf_getlocation_addr): Use zero as base
2926	address when the CU is missing attributes due to buggy GCC.
2927
29282006-08-29  Roland McGrath  <roland@redhat.com>
2929
2930	* Makefile.am (CLEANFILES): Add libdw.so.$(VERSION).
2931
2932	* libdw.h (dwarf_diecu): Add __nonnull_attribute__.
2933	(dwarf_child): Don't list arg 1 in __nonnull_attribute__.
2934
2935	* libdw_alloc.c (__libdw_allocate): Take new ALIGN argument, make sure
2936	result is aligned.  Adjust NEWP->remaining here for this allocation.
2937	* libdwP.h: Update decl.
2938	(libdw_alloc): Update caller.
2939
29402006-07-12  Ulrich Drepper  <drepper@redhat.com>
2941
2942	* dwarf_child.c: Adjust for internal_function_def removal.
2943	* dwarf_getabbrev.c: Likewise.
2944	* dwarf_tag.c: Likewise.
2945	* libdw_form.c: Likewise.
2946	* memory-access.c: Likewise.
2947
29482006-06-28  Roland McGrath  <roland@redhat.com>
2949
2950	* libdw.map: Export dwfl_linecu, dwfl_line_comp_dir.
2951
2952	* libdw.map: Bump to 0.122; export dwfl_module_getsymtab and
2953	dwfl_module_getsym.
2954
29552006-05-27  Ulrich Drepper  <drepper@redhat.com>
2956
2957	* libdw.h: Add extern "C".
2958
29592006-05-22  Ulrich Drepper  <drepper@redhat.com>
2960
2961	* dwarf_getaranges.c (dwarf_getaranges): Handle files without
2962	aranges information.
2963
29642006-05-21  Ulrich Drepper  <drepper@redhat.com>
2965
2966	* libdw.h: Add nonnull attributes to dwarf_tag, dwarf_getattrs,
2967	dwarf_haschildren.
2968
29692006-02-28  Roland McGrath  <roland@redhat.com>
2970
2971	* dwarf.h: Add missing DW_ATE_*, DW_TAG_*, DW_LANG_*, DW_CFA_*,
2972	DW_OP_* values, to match DWARF 3.0.  Add new DW_DS_*, DW_END_*
2973	values from DWARF 3.0.
2974
29752006-02-22  Roland McGrath  <roland@redhat.com>
2976
2977	* libdw.map: Bump to 0.120; export dwfl_version.
2978
29792005-12-22  Roland McGrath  <roland@redhat.com>
2980
2981	* libdw.map: Bump to 0.119; export dwfl_linux_proc_maps_report.
2982
29832005-12-12  Roland McGrath  <roland@redhat.com>
2984
2985	* dwarf_ranges.c: Copy CU base address-finding code from
2986	dwarf_getlocation.
2987
29882005-12-09  Roland McGrath  <roland@redhat.com>
2989
2990	* dwarf_getlocation.c (dwarf_getlocation_addr): Add some unlikelys.
2991	Delay CU base lookup until it's needed.
2992	If CU base lookup fails with no error, flag invalid DWARF.
2993
29942005-11-25  Roland McGrath  <roland@redhat.com>
2995
2996	* libdw.map: Bump to 0.118; export dwfl_module_register_names.
2997
29982005-11-15  Roland McGrath  <roland@redhat.com>
2999
3000	* Makefile.am [BUILD_STATIC] (AM_CFLAGS): Add -fpic.
3001
30022005-11-13  Roland McGrath  <roland@redhat.com>
3003
3004	* libdw.map: Bump to 0.117; export dwfl_module_return_value_location.
3005
30062005-10-27  Roland McGrath  <roland@redhat.com>
3007
3008	* dwarf_entry_breakpoints.c (search_range): Fix binary search code;
3009	don't match end_sequence markers.
3010
3011	* dwarf_getsrclines.c (compare_lines): Sort end_sequence markers
3012	before normal records at the same address.
3013	* dwarf_getsrc_die.c (dwarf_getsrc_die): Don't match an end_sequence
3014	marker.
3015
30162005-10-26  Roland McGrath  <roland@redhat.com>
3017
3018	* dwarf_getfuncs.c (dwarf_getfuncs): Use Dwarf_Die, not Dwarf_Func.
3019	* dwarf_func_file.c: Renamed to ...
3020	* dwarf_decl_file.c: ... here.
3021	* dwarf_func_col.c: Renamed to ...
3022	* dwarf_decl_column.c: ... here.
3023	* dwarf_func_line.c: Renamed to ...
3024	* dwarf_decl_line.c: ... here.
3025	(dwarf_func_line): Renamed to ...
3026	(dwarf_decl_line): ... this.  Take a Dwarf_Die * argument.
3027	(__libdw_func_intval): Renamed __libdw_attr_intval.
3028	* dwarf_func_name.c: File removed.
3029	* dwarf_func_lowpc.c: File removed.
3030	* dwarf_func_highpc.c: File removed.
3031	* dwarf_func_entrypc.c: File removed.
3032	* dwarf_func_die.c: File removed.
3033	* Makefile.am (libdw_a_SOURCES): Updated.
3034	* libdw.h: Update decls.
3035	(Dwarf_Func): Type removed.
3036	* libdwP.h: Update decls.
3037	(struct Dwarf_Func_s): Type removed.
3038	* libdw.map: Updated.
3039
3040	* libdwP.h (CUDIE): New macro.
3041	* dwarf_getlocation.c (dwarf_getlocation_addr): Use it.
3042	* dwarf_getscopes_die.c (dwarf_getscopes_die): Likewise.
3043	* dwarf_ranges.c (dwarf_ranges): Likewise.
3044
3045	* dwarf_getloclist.c: Renamed to ...
3046	* dwarf_getlocation.c: ... here.
3047	(getloclist): Renamed to getlocation.
3048	(dwarf_getloclist): Renamed to dwarf_getlocation.
3049	(dwarf_addrloclists): Renamed to dwarf_getlocation_addr.
3050	* Makefile.am (libdw_a_SOURCES): Updated.
3051	* libdw.h (dwarf_getloclist): Renamed to dwarf_getlocation.
3052	(dwarf_addrloclists): Renamed dwarf_getlocation_addr.
3053	(Dwarf_Loc): Renamed Dwarf_Op.
3054	* libdwP.h (struct loc_s): Update use.
3055	* libdw.map: Update map.
3056
3057	* dwarf_entry_breakpoints.c: Use the second line record within the
3058	function, regardless of its source location data.
3059
30602005-10-25  Roland McGrath  <roland@redhat.com>
3061
3062	* dwarf_entry_breakpoints.c: Fall back to entrypc for contiguous too.
3063
3064	* libdw.map: Add dwarf_entrypc, dwarf_entry_breakpoints.
3065
30662005-10-14  Roland McGrath  <roland@redhat.com>
3067
3068	* dwarf_diecu.c (dwarf_diecu): New file.
3069	* Makefile.am (libdw_a_SOURCES): Add it.
3070	* libdw.h: Declare dwarf_diecu.
3071	* libdw.map: Export it.
3072
3073	* libdw.map: Bump to 0.116; export dwarf_ranges.
3074
30752005-09-20  Roland McGrath  <roland@redhat.com>
3076
3077	* dwarf_haspc.c: Use dwarf_ranges.
3078	* dwarf_entry_breakpoints.c: Likewise.
3079
3080	* dwarf_ranges.c: New file.
3081	* Makefile.am (libdw_a_SOURCES): Add it.
3082	* libdw.h: Declare dwarf_ranges.
3083	* libdwP.h: Add INTDECL.
3084
30852005-09-14  Roland McGrath  <roland@redhat.com>
3086
3087	* dwarf_entry_breakpoints.c (dwarf_entry_breakpoints): Fix braino in
3088	prologue_end marker scanning loop.
3089
30902005-09-11  Roland McGrath  <roland@redhat.com>
3091
3092	* dwarf.h: Comment typo fix.
3093
30942005-09-07  Roland McGrath  <roland@redhat.com>
3095
3096	* dwarf_entry_breakpoints.c: New file.
3097	* Makefile.am (libdw_a_SOURCES): Add it.
3098	* libdw.h: Declare dwarf_entry_breakpoints.
3099
3100	* dwarf_entrypc.c: New file.
3101	* Makefile.am (libdw_a_SOURCES): Add it.
3102	* libdw.h: Declare dwarf_entrypc.
3103	* libdwP.h: Add INTDECL.
3104
31052005-08-28  Ulrich Drepper  <drepper@redhat.com>
3106
3107	* Makefile.am: Use $(LINK) not $(CC) when creating DSO.
3108	(%.os): Use COMPILE.os.
3109	(COMPILE.os): Filter out gconv options.
3110
31112005-08-27  Roland McGrath  <roland@redhat.com>
3112
3113	* dwarf_getscopes.c (dwarf_getscopes): Rewritten using
3114	__libdw_visit_scopes.
3115
3116	* dwarf_getscopes_die.c: New file.
3117	* Makefile.am (libdw_a_SOURCES): Add it.
3118	* libdw.h: Declare dwarf_getscopes_die.
3119	* libdw.map: Bump to 0.115 and add it.
3120
3121	* libdw_visit_scopes.c (__libdw_visit_scopes): Pass a struct
3122	containing a DIE and its parent pointer, instead of just Dwarf_Die.
3123	Take two functions for both preorder and postorder visitors.
3124	* libdwP.h: Update decl.
3125	(struct Dwarf_Die_Chain): New type.
3126	* dwarf_func_inline.c: Update uses.
3127
3128	* dwarf_diename.c (dwarf_diename): Use dwarf_attr_integrate.
3129	Add INTDEF.
3130	* libdwP.h: Add INTDECL.
3131	* dwarf_func_name.c (dwarf_func_name): Use dwarf_diename.
3132
31332005-08-23  Roland McGrath  <roland@redhat.com>
3134
3135	* dwarf_attr_integrate.c (dwarf_attr_integrate): Treat
3136	DW_AT_specification the same as DW_AT_abstract_origin.
3137
31382005-08-20  Roland McGrath  <roland@redhat.com>
3139
3140	* libdw.map: Add dwfl_cumodule, remove dwfl_linecu.
3141	Add dwfl_linux_kernel_report_offline, dwfl_offline_section_address,
3142	and dwfl_report_offline.
3143
31442005-08-19  Roland McGrath  <roland@redhat.com>
3145
3146	* libdw.map: Bump version to ELFUTILS_0.114 for libdwfl changes.
3147	Add dwfl_module_relocate_address, dwfl_module_relocations,
3148	dwfl_module_relocation_info.
3149
31502005-08-18  Roland McGrath  <roland@redhat.com>
3151
3152	* dwarf_getscopes.c (dwarf_getscopes): Include the CU itself as
3153	outermost scope in the results.
3154
31552005-08-15  Roland McGrath  <roland@redhat.com>
3156
3157	* dwarf_func_inline.c: New file.
3158	* Makefile.am (libdw_a_SOURCES): Add it.
3159	* libdw.h: Declare dwarf_func_inline, dwarf_func_inline_instances.
3160	* libdw.map: Add them.
3161
3162	* dwarf_func_die.c: New file.
3163	* Makefile.am (libdw_a_SOURCES): Add it.
3164	* libdw.h: Declare dwarf_func_die.
3165	* libdw.map: Add it.  Bump version to ELFUTILS_0.114.
3166
31672005-08-10  Ulrich Drepper  <drepper@redhat.com>
3168
3169	* dwarf_getsrclines.c (dwarf_getsrclines): Correct fallout of renaming
3170	of DW_LNS_set_epilog_begin.
3171
31722005-08-09  Roland McGrath  <roland@redhat.com>
3173
3174	* dwarf.h (DW_LNS_set_epilog_begin): Renamed DW_LNS_set_epilogue_begin.
3175
3176	* dwarf_end.c: Add INTDEF.
3177	* dwarf_error.c (dwarf_errmsg): Likewise.
3178	* libdwP.h (dwarf_end, dwarf_errmsg): Add INTDECLs.
3179
31802005-08-01  Roland McGrath  <roland@redhat.com>
3181
3182	* dwarf_getaranges.c (dwarf_getaranges): Check for bogus offset.
3183	* dwarf_getabbrev.c (__libdw_getabbrev): Likewise.
3184
31852005-07-28  Ulrich Drepper  <drepper@redhat.com>
3186
3187	* Makefile.am (libdw.so): No need to link with libeu.a anymore.
3188	(libdw_a_LIBADD): Add all files from libdwfl.a.
3189
31902005-07-27  Roland McGrath  <roland@redhat.com>
3191
3192	* Makefile.am (libdw.so): Link ../libdwfl/libdwfl_pic.a in,
3193	along with ../libebl/libebl.a and ../lib/libeu.a;
3194	depend on ../libelf/libelf.so.
3195	(libdw_so_LDADD): New variable.
3196	* libdw.map: Add dwfl_* symbols formerly in ../libdwfl/libdwfl.map.
3197
3198	* libdw.map: Define an empty base version and move all symbols to
3199	version ELFUTILS_0.111; don't define ELFUTILS_1.0 at all yet.
3200
32012005-07-23  Ulrich Drepper  <drepper@redhat.com>
3202
3203	* dwarf_error.c: Add internal alias for dwarf_errno.
3204	* libdwP.h: Declare __dwarf_errno_internal.
3205	* dwarf_getloclist.c: Use INTDEF for dwarf_errno.
3206
3207	* dwarf_error.c [USE_TLS]: Actually use __thread in definition of
3208	global_error.
3209
32102005-06-01  Roland McGrath  <roland@redhat.com>
3211
3212	* dwarf_getaranges.c (dwarf_getaranges): Sort result array.
3213	* dwarf_getarange_addr.c (dwarf_getarange_addr): Use binary search.
3214
32152005-06-08  Roland McGrath  <roland@redhat.com>
3216
3217	* memory-access.h (get_uleb128_step, get_uleb128): Remove casts.
3218	(get_sleb128_step, get_sleb128): Likewise.
3219	* dwarf_getattrs.c (dwarf_getattrs): Add consts.
3220	* dwarf_getloclist.c (getloclist): Likewise.
3221	* dwarf_formblock.c (dwarf_formblock): Likewise.
3222	* dwarf_getsrclines.c (dwarf_getsrclines): Likewise.
3223	* dwarf_getabbrevattr.c (dwarf_getabbrevattr): Likewise.
3224	* dwarf_formref.c (dwarf_formref): Likewise.
3225	* dwarf_formsdata.c (dwarf_formsdata): Likewise.
3226	* dwarf_formudata.c (dwarf_formudata): Likewise.
3227	* dwarf_haschildren.c (dwarf_haschildren): Likewise.
3228	* dwarf_child.c (__libdw_find_attr, __libdw_find_attr): Likewise.
3229	* dwarf_tag.c (dwarf_tag): Likewise.
3230	* dwarf_getabbrev.c (__libdw_getabbrev): Likewise.
3231	* memory-access.c (__libdw_get_uleb128, __libdw_get_sleb128): Likewise.
3232	* libdw_form.c (__libdw_form_val_len): Likewise.
3233	* libdwP.h: Update decl.
3234
32352005-06-04  Roland McGrath  <roland@redhat.com>
3236
3237	* memory-access.h (get_uleb128_rest_return): New macro.
3238	[! IS_LIBDW] (__libdw_get_uleb128): New static, defined using it.
3239	(get_sleb128_rest_return): New macro.
3240	[! IS_LIBDW] (__libdw_get_sleb128): New static, defined using it.
3241	* memory-access.c: New file.
3242	* Makefile.am (libdw_a_SOURCES): Add it.
3243	(DEFS): Add -DIS_LIBDW.
3244
32452005-05-31  Roland McGrath  <roland@redhat.com>
3246
3247	* dwarf_formref_die.c (dwarf_formref_die): Add CU header offset to
3248	formref offset.
3249
32502005-05-30  Roland McGrath  <roland@redhat.com>
3251
3252	* dwarf_getloclist.c (dwarf_addrloclists): Use DW_AT_entry_pc for base
3253	address if DW_AT_low_pc is missing.  Not to spec, but GCC generates it.
3254
3255	* dwarf_getloclist.c (dwarf_addrloclists): Don't sign-extend 4-byte
3256	BEGIN value.  Instead, match base address entries separately for
3257	32/64 size cases.
3258
32592005-05-28  Roland McGrath  <roland@redhat.com>
3260
3261	* dwarf_getloclist.c (dwarf_addrloclists): Fix decoding to advance
3262	past location expression contents.
3263
32642005-05-23  Roland McGrath  <roland@redhat.com>
3265
3266	* dwarf_getsrclines.c: Comment typo fix.
3267
3268	* dwarf_haspc.c (dwarf_haspc): Fix CU DIE address calculation.
3269	* dwarf_getloclist.c (dwarf_addrloclists): Likewise.
3270
32712005-05-22  Ulrich Drepper  <drepper@redhat.com>
3272
3273	* libdwP.h: Only use INTDECL for alias prototypes.
3274
32752005-05-19  Roland McGrath  <roland@redhat.com>
3276
3277	* dwarf_getloclist.c (attr_ok): Permit DW_AT_static_link too.
3278
3279	* dwarf_getscopevar.c: New file.
3280	* Makefile.am (libdw_a_SOURCES): Add it.
3281	* libdw.h: Declare dwarf_getscopevar.
3282
3283	* dwarf_getsrcfiles.c: Add INTDEF.
3284	* dwarf_haschildren.c: Likewise.
3285	* libdwP.h (dwarf_getsrcfiles, dwarf_haschildren): Add INTDECL.
3286
3287	* dwarf_getscopes.c: New file.
3288	* Makefile.am (libdw_a_SOURCES): Add it.
3289	* libdw.h: Declare dwarf_getscopes.
3290	* libdw.map: Add it.
3291
32922005-05-18  Roland McGrath  <roland@redhat.com>
3293
3294	* libdwP.h (IDX_debug_ranges): New enum constant.
3295	* dwarf_begin_elf.c (dwarf_scnnames): Add it for ".debug_ranges".
3296	* libdwP.h (DWARF_E_NO_DEBUG_RANGES): New enum constant.
3297	* dwarf_error.c (errmsgs): Add it.
3298	* dwarf_haspc.c: New file.
3299	* libdw.h: Declare dwarf_haspc.
3300	* libdw.map: Add it.
3301	* libdwP.h: Add INTDECL.
3302
3303	* dwarf_attr_integrate.c: New file.
3304	* dwarf_hasattr_integrate.c: New file.
3305	* Makefile.am (libdw_a_SOURCES): Add them.
3306	* libdw.h: Declare dwarf_attr_integrate, dwarf_hasattr_integrate.
3307	* libdw.map: Add them.
3308
3309	* dwarf_hasattr.c: Add INTDEF.
3310	* libdwP.h: Add INTDECL for it.
3311
3312	* dwarf_formref_die.c: New file.
3313	* Makefile.am (libdw_a_SOURCES): Add it.
3314	* libdw.h (dwarf_formref_die): Declare it.
3315	* libdwP.h (dwarf_formref_die): Add INTDECL.
3316	* libdw.map: Add it.
3317
3318	* dwarf_getloclist.c (attr_ok, getloclist): New functions, broken out
3319	of ...
3320	(dwarf_getloclist): ... here.  Call them.
3321	(dwarf_addrloclists): New function.
3322	* libdw.h: Declare it.
3323	* libdw.map: Add it.
3324
3325	* dwarf_getmacros.c (dwarf_getmacros): Don't bail at
3326	DW_MACINFO_end_file.  Recognize type 0 as terminator.
3327
33282005-05-05  Roland McGrath  <roland@redhat.com>
3329
3330	* dwarf_getsrc_die.c (dwarf_getsrc_die): Use binary search.
3331
3332	* dwarf_getsrclines.c (dwarf_getsrclines): Sort result array, since
3333	the line program does not produce all entries in ascending order.
3334
33352005-04-25  Ulrich Drepper  <drepper@redhat.com>
3336
3337	* dwarf_getsrc_file.c (dwarf_getsrc_file): Handle multiple
3338	occurences (e.g., inlines) better.
3339
33402005-04-24  Ulrich Drepper  <drepper@redhat.com>
3341
3342	* libdw.h (DWARF_END_ABBREV): Define.
3343	* dwarf_getabbrev.c (__libdw_getabbrev): Return DWARF_END_ABBREV if
3344	end is reached.
3345	* dwarf_offabbrev.c (dwarf_offabbrev): Return -1 on error, 1 if end
3346	of records reached.
3347	* dwarf_tag.c (__libdw_findabbrev): Also recognize DWARF_END_ABBREV
3348	as error of __libdw_getabbrev.
3349
33502005-04-04  Ulrich Drepper  <drepper@redhat.com>
3351
3352	* dwarf_getsrc_file.c (dwarf_getsrc_file): Minor optimization.
3353
3354	* dwarf_getsrc_file.c (dwarf_getsrc_file): Always pass number of
3355	results back to caller.
3356
33572005-04-04  Roland McGrath  <roland@redhat.com>
3358
3359	* dwarf_getsrc_file.c (dwarf_getsrc_file): Use size_t for CUHL.
3360
3361	* dwarf_func_line.c (__libdw_func_intval): Use internal_function in
3362	defn.
3363
33642005-04-04  Ulrich Drepper  <drepper@redhat.com>
3365
3366	* dwarf_getsrc_file.c (dwarf_getsrc_file): Use INTUSE.
3367
3368	* dwarf_getsrc_file.c: New file.
3369	* Makefile.am (libdw_a_SOURCES): Add dwarf_getsrc_file.c.
3370	* libdw.h: Declare dwarf_getsrc_file.
3371	* libdw.map: Add dwarf_getsrc_file.
3372
33732005-04-02  Ulrich Drepper  <drepper@redhat.com>
3374
3375	* dwarf_func_entrypc.c: New file.
3376	* dwarf_func_col.c: New file.
3377	* dwarf_func_line.c: New file.
3378	* dwarf_func_file.c: New file.
3379	* libdw.h: Add prototypes for new functions.
3380	* libdw.map: Add dwarf_func_entrypc, dwarf_func_col, dwarf_func_line,
3381	dwarf_func_file.
3382	* Makefile.am (libdw_a_SOURCES): Add dwarf_func_entrypc.c,
3383	dwarf_func_col.c, dwarf_func_line.c, dwarf_func_file.c.
3384	* libdwP.h (struct Dwarf_Func_s): Add cudie element.
3385	Declare __libdw_func_intval and __dwarf_formsdata_internal.
3386	* dwarf_getfuncs.c: Also fill in cudie in Dwarf_Func object.
3387	* dwarf_formsdata.c: Use INTUSE and INTDEF to avoid PLTs.
3388
3389	* dwarf.h: Add some DWARF3 definitions.
3390
33912005-04-01  Ulrich Drepper  <drepper@redhat.com>
3392
3393	* dwarf_getfuncs.c: New file.
3394	* dwarf_func_highpc.c: New file.
3395	* dwarf_func_lowpc.c: New file.
3396	* dwarf_func_name.c: New file.
3397	* Makefile.am (libdw_a_SOURCES): Add dwarf_getfuncs.c,
3398	dwarf_func_highpc.c, dwarf_func_lowpc.c, and dwarf_func_name.c.
3399	* libdw.map: Add dwarf_getfuncs, dwarf_func_highpc, dwarf_func_lowpc,
3400	and dwarf_func_name.
3401	* libdw.h: Add prototypes for new functions.
3402	* dwarf_child.c: Use INTUSE and INTDEF to avoid PLTs.
3403	* dwarf_siblingof.c: Likewise.
3404	* dwarf_dieoffset.c: Likewise.
3405	* dwarf_highpc.c: Likewise.
3406	* dwarf_lowpc.c: Likewise.
3407	* libdwP.h: Add prototypes for internal functions.
3408	Define Dwarf_Func_s structure.
3409
34102005-03-29  Ulrich Drepper  <drepper@redhat.com>
3411
3412	* libdw.h: Add padding in Dwarf_die.
3413
3414	* dwarf_arrayorder.c: Use INTUSE and INTDEF to avoid PLTs.
3415	* dwarf_attr.c: Likewise.
3416	* dwarf_begin.c: Likewise.
3417	* dwarf_begin_elf.c: Likewise.
3418	* dwarf_bitoffset.c: Likewise.
3419	* dwarf_bitsize.c: Likewise.
3420	* dwarf_bytesize.c: Likewise.
3421	* dwarf_diename.c: Likewise.
3422	* dwarf_formaddr.c: Likewise.
3423	* dwarf_formblock.c: Likewise.
3424	* dwarf_formref.c: Likewise.
3425	* dwarf_formstring.c: Likewise.
3426	* dwarf_formudata.c: Likewise.
3427	* dwarf_getarange_addr.c: Likewise.
3428	* dwarf_getarangeinfo.c: Likewise.
3429	* dwarf_getaranges.c: Likewise.
3430	* dwarf_getloclist.c: Likewise.
3431	* dwarf_getmacros.c: Likewise.
3432	* dwarf_getsrc_die.c: Likewise.
3433	* dwarf_getsrcfiles.c: Likewise.
3434	* dwarf_getsrclines.c: Likewise.
3435	* dwarf_highpc.c: Likewise.
3436	* dwarf_lowpc.c: Likewise.
3437	* dwarf_nextcu.c: Likewise.
3438	* dwarf_offdie.c: Likewise.
3439	* dwarf_siblingof.c: Likewise.
3440	* dwarf_srclang.c: Likewise.
3441	* dwarf_tag.c: Likewise.
3442	* libdw_findcu.c: Likewise.
3443	* libdwP.h: Add prototypes for internal functions.
3444
3445	* dwarf_addrdie.c: New file.
3446	* dwarf_macro_opcode.c: New file.
3447	* dwarf_macro_param1.c: New file.
3448	* dwarf_macro_param2.c: New file.
3449	* libdw.h: Add declarations.  Move Dwarf_Macro definition to libdwP.h.
3450	* libdwP.h: Remove Dwarf_Macro definition.
3451	* Makefile.am (libdw_a_SOURCES): Add dwarf_addrdie.c,
3452	dwarf_macro_opcode.c, dwarf_macro_param1.c, and dwarf_macro_param2.c.
3453	* libdw.map: Add entries for new functions.
3454
34552005-03-21  Ulrich Drepper  <drepper@redhat.com>
3456
3457	* libdw.h: Handle broken gcc < 4.
3458
34592005-02-15  Ulrich Drepper  <drepper@redhat.com>
3460
3461	* Makefile (AM_CFLAGS): Add -Wunused -Wextra -Wformat=2.
3462
3463	* dwarf_begin_elf.c: Fix warnings.
3464	* dwarf_dieoffset.c: Likewise.
3465	* dwarf_end.c: Likewise.
3466	* dwarf_error.c: Likewise.
3467	* dwarf_getpubnames.c: Likewise.
3468
3469	* libdwP.h: Add new error values.
3470	* dwarf_error.c: Support new error values.
3471	* dwarf_getpubnames.c: Check parameter value.
3472
34732005-02-05  Ulrich Drepper  <drepper@redhat.com>
3474
3475	* Makefile.am: Check for text relocations in constructed DSO.
3476
3477	* Makefile.am [MUDFLAP] (AM_CFLAGS): Add -fmudflap.
3478
34792005-02-04  Ulrich Drepper  <drepper@redhat.com>
3480
3481	* dwarf_siblingof.c (dwarf_siblingof): Add some buffer boundary
3482	checks to not read over buffer boundaries for ill-formed DWARF data.
3483
34842004-09-25  Ulrich Drepper  <drepper@redhat.com>
3485
3486	* dwarf_child.c: Make compile with gcc 4.0.
3487	* dwarf_error.c: Likewise.
3488	* dwarf_formblock.c: Likewise.
3489	* dwarf_getabbrev.c: Likewise.
3490	* dwarf_getattrs.c: Likewise.
3491	* dwarf_getsrclines.c: Likewise.
3492	* dwarf_tag.c: Likewise.
3493	* libdw_form.c: Likewise.
3494
34952004-01-20  Ulrich Drepper  <drepper@redhat.com>
3496
3497	* Makefile.am: Support building with mudflap.
3498
3499	* dwarf_getloclist.c: Fix warnings gcc 3.4 spits out.
3500	* dwarf_getsrclines.c: Likewise.
3501	* dwarf_memory-access.h: Likewise.
3502
35032004-01-19  Ulrich Drepper  <drepper@redhat.com>
3504
3505	* dwarf_getsrcfiles.c: Third parameter can be NULL.
3506
3507	* libdw.h: Define Dwarf_macro.  Declare dwarf_getmacros.
3508	Third parameter of dwarf_getsrcfiles can be NULL.
3509
3510	* libdw.map: Add dwarf_getmacros.
3511	* Makefile.am (libdw_a_SOURCES): Add dwarf_getmacros.
3512	* dwarf_getmacros.c: New file.
3513
35142004-01-18  Ulrich Drepper  <drepper@redhat.com>
3515
3516	* libdw.h: Second parameter of dwarf_getaranges can be NULL.
3517
3518	* dwarf_nextcu.c: Return -1 if dwarf parameter is NULL.
3519
3520	* dwarf_getsrclines.c:
3521	Use read_2ubyte_unaligned_inc instead of _inc-less variant.
3522
3523	* dwarf_getaranges.c: Allow naranges parameter to be NULL.
3524
3525	* libdwP.h (_): Use elfutils domain.
3526
3527	* dwarf_getsrclines.c (dwarf_getsrclines): Add more branch prediction.
3528
3529	* dwarf_getsrclines.c: Fix typo in comment.
3530
35312004-01-17  Ulrich Drepper  <drepper@redhat.com>
3532
3533	* Makefile.am: Support building with mudflap.
3534
35352004-01-16  Ulrich Drepper  <drepper@redhat.com>
3536
3537	* memory-access.h: Add lots of const in case a pointer passed is const.
3538
3539	* dwarf_formflag.c: New file.
3540	* dwarf_getattrs.c: New file.
3541	* dwarf_error.c: Add new error value.
3542	* libdw.h: Add prototypes for new functions.  Adjust prototype for
3543	dwarf_getpubnames.
3544	* libdw.map: Add new functions.
3545	* dwarf_getpubnames.c: Change type of return value and fourth parameter
3546	to ptrdiff_t.
3547	* libdwP.h: Add new error value.
3548	* Makefile.am (libdw_a_SOURCES): Add dwarf_getattrs.c and
3549	dwarf_formflag.c.
3550
3551	* dwarf_getpubnames.c (dwarf_getpubnames): Just fail if dbg is NULL.
3552
35532004-01-12  Ulrich Drepper  <drepper@redhat.com>
3554
3555	* dwarf_getarange_addr.c: New file
3556	* dwarf_getarangeinfo.c: New file.
3557	* dwarf_getaranges.c: New file.
3558	* dwarf_onerange.c: New file.
3559	* libdw.h: Declare new functions.  Define Dwarf_Arange and
3560	Dwarf_Aranges.
3561	* libdw.map: Add new functions.
3562	* libdwP.h: Add new errors.  Add aranges member to struct Dwarf.
3563	Define Dwarf_Aranges_s and Dwarf_Arange_s.
3564	* Makefile.am (libdw_a_SOURCES): Add dwarf_getaranges.c,
3565	dwarf_onearange.c, dwarf_getarangeinfo.c, dwarf_getarange_addr.c.
3566	* dwarf_error.c: Add new message.
3567
35682004-01-11  Ulrich Drepper  <drepper@redhat.com>
3569
3570	* Makefile.am (libdw_a_SOURCES): Add dwarf_lineaddr.c, dwarf_linecol.c,
3571	dwarf_linebeginstatement.c, dwarf_lineendsequence.c, dwarf_lineblock.c,
3572	dwarf_lineprologueend.c, dwarf_lineepiloguebegin.c, dwarf_onesrcline.c.
3573	* dwarf_error.c: Add another message.
3574	* dwarf_getsrc_die.c: Adjust for Dwarf_Files and Dwarf_Lines
3575	introduction.
3576	* dwarf_filesrc.c: Likewise.
3577	* dwarf_getsrcfiles.c: Likewise.
3578	* dwarf_getsrclines.c: Likewise.
3579	* dwarf_lineaddr.c: New file.
3580	* dwarf_linebeginstatement.c: New file.
3581	* dwarf_lineblock.c: New file.
3582	* dwarf_linecol.c: New file.
3583	* dwarf_lineendsequence.c: New file.
3584	* dwarf_lineepiloguebegin.c: New file.
3585	* dwarf_lineno.c: New file.
3586	* dwarf_lineprologueend.c: New file.
3587	* dwarf_onesrcline.c: New file.
3588	* dwarf_lineno.c: Change interface to store result in object pointed
3589	to by second parameter.
3590	* libdw.h: Add prototypes for new functions.  Change dwarf_lineno
3591	prototype.  Define Dwarf_Files and Dwarf_Lines.
3592	* libdw.map: Add new functions.
3593	* libdwP.h: Define Dwarf_Files_s and Dwarf_Lines_s.
3594	* libdw_findcu.c: Don't initialize nlines field.
3595
3596	* dwarf_siblingof: Little optimization.
3597
3598	* dwarf_begin.c: Remember that the ELF descriptor must be closed.
3599	* dwarf_end.c: Close ELF descriptor if free_elf is set.
3600	* libdwP.h (struct Dwarf): Add free_elf field.
3601
3602	* Makefile.am (libdw_a_SOURCES): Add dwarf_getstring.c and
3603	dwarf_offabbrev.c.
3604	* dwarf_getstring.c: New file.
3605	* dwarf_offabbrev.c: New file.
3606	* libdw.map: Add dwarf_getstring and dwarf_offabbrev.
3607	* dwarf_getabbrev.c (__libdw_getabbrev): Add new dbg and result
3608	parameters.  Don't allocate memory if not necessary and don't lookup
3609	previous results if no CU given.
3610	(dwarf_getabbrev): Adjust call to __libdw_getabbrev.
3611	* dwarf_tag.c: Adjust call to __libdw_getabbrev.
3612	* libdw.h: Declare dwarf_offabbrev and dwarf_getstring.
3613	* libdwP.h: Change prototype for __libdw_getabbrev.
3614
3615	* dwarf_getabbrevattr.c: Add offsetp parameter.  Fill in before
3616	returning if this is wanted.
3617
36182004-01-09  Ulrich Drepper  <drepper@redhat.com>
3619
3620	* dwarf_nextcu.c: Add new parameter offset_sizep.  Initialize it
3621	with offset_size value.
3622	* libdw.h: Adjust dwarf_nextcu prototype.
3623	* libdwP.h (struct Dwarf_CU): Add offset_size member.
3624	* libdw_findcu.c: Adjust dwarf_nextcu call.  Initialize offset_size
3625	member of new CU struct.
3626	* dwarf_formstring.c: Depend on offset_size not address_size for
3627	DW_FORM_strp handling.
3628	* dwarf_form.c: Likewise for DW_FORM_strp and DW_FORM_ref_addr.
3629
3630	* dwarf_tag.c (__libdw_findabbrev): Return correct value for
3631	failing lookup.
3632	(dwarf_tag): Correctly recognize failed lookup.
3633
3634	* dwarf_end.c (cu_free):  Call tdestroy for locs member.  Use new
3635	function noop_free.
3636	* dwarf_error.c: Add message for DWARF_E_NO_BLOCK.
3637	* dwarf_formblock.c: New file.
3638	* dwarf_getloclist.c: Rewrite to handle a single block.
3639	* libdw.h: Define Dwarf_Block.  Rename Dwarf_Loc members.  Remove
3640	Dwarf_Locdesc definition.  Declare dwarf_formblock.  Remove
3641	dwarf_getloclistent declaration.
3642	* libdw.map: Add dwarf_formblock, remove dwarf_getloclistent.
3643	* libdwP.h: Define struct loc_s and DWARF_E_NO_BLOCK.
3644	Add locs member to struct Dwarf_CU.
3645	* libdw_fundcu.c: Initialize locs member of new CU.
3646	* Makefile.am (libdw_a_SOURCES): Add dwarf_formblock.c.
3647	Remove dwarf_getloclistent.c.
3648
36492004-01-07  Ulrich Drepper  <drepper@redhat.com>
3650
3651	* libdw.h: Use __nonnull__ attribute only for gcc >= 3.3.
3652	* libdwP.h: Likewise.
3653
3654	* dwarf_getloclist.c: New file.
3655	* dwarf_getloclistent.c: New file.
3656	* libdw.h: Define Dwarf_Loc and Dwarf_Locdesc.
3657	Declare dwarf_getloclistent and dwarf_getloclist.
3658	* libdw.map: Add dwarf_getloclistent and dwarf_getloclist.
3659	* libdwP.h: Define DWARF_E_NO_LOCLIST.
3660	* Makefile.am (libdw_a_SOURCES): Add dwarf_getloclistent.c and
3661	dwarf_getloclist.c.
3662
3663	* dwarf_error.c: More error messages.
3664
36652004-01-06  Ulrich Drepper  <drepper@redhat.com>
3666
3667	* dwarf_getsrclines.c: Remove debugging support.
3668
3669	* dwarf_getsrcfiles.c: New file.
3670	* dwarf_filesrc.c: New file.
3671	* libdw.h: Declare these functions.  Define Dwarf_File.
3672	* libdwP.c: Adjust Dwarf_File_s definition.
3673	* libdw.map: Add these functions.
3674	* Makefile.am (libdw_a_SOURCES): Add dwarf_getsrcfiles.c and
3675	dwarf_filesrc.c.
3676	* dwarf_getsrclines.c: Initialize cu->files.
3677
36782004-01-05  Ulrich Drepper  <drepper@redhat.com>
3679
3680	* libdw.h: Add more nonnull function attributes.
3681
3682	* dwarf_begin_elf.c (dwarf_begin_elf): Don't initialize mem_tail->next.
3683	* dwarf_end.c (cu_free): New function.
3684	(dwarf_end): Also free CU tree.  Correct freeing of memory blocks.
3685	* dwarf_error.c (errmsgs): Add new messages.
3686	* dwarf_getsrc_die.c: New file.
3687	* dwarf_getsrclines.c: New file.
3688	* dwarf_lineno.c: New file.
3689	* dwarf_linesrc.c: New file.
3690	* dwarf_nextcu.c (dwarf_nextcu): Use read_*byte_unaligned_inc
3691	instead of the *_inc-less variants.
3692	* libdw.h: Define Dwarf_Line.  Add some function attributes.  Declare
3693	dwarf_getsrclines, dwarf_getsrc_die, dwarf_lineno, and dwarf_linesrc.
3694	* libdw.map: Add dwarf_getsrclines, dwarf_getsrc_die, dwarf_lineno,
3695	and dwarf_linesrc.
3696	* libdwP.h: Add more error codes.
3697	(struct Dwarf): Remove mem_tail.next member.
3698	(Dwarf_File): Define type.
3699	(struct Dwarf_Line_s): Define type.
3700	(struct Dwarf_CU): Add lines and nlines members.
3701	(libdw_alloc): Define local variable _tail and use it.
3702	Add some function attributes.
3703	* libdw_alloc.c (__libdw_allocate): Don't initialize next member.
3704	* libdw_findcu.c (__libdw_findcu): Initialize lines and nlines members.
3705	* memory-access.h: Add unlikely for the endian conversion paths.
3706	* Makefile.am (AM_CFLAGS): Add -std parameter.
3707	(libdw_a_SOURCES): Add dwarf_getsrclines, dwarf_getsrc_die,
3708	dwarf_lineno, and dwarf_linesrc.
3709
37102003-08-11  Ulrich Drepper  <drepper@redhat.com>
3711
3712	* Moved to CVS archive.
3713