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