2010-06-23  Roland McGrath  <roland@redhat.com>

	* cfi.c (dwarf_cfi_validate_fde): Function removed.
	* libdw.h: Remove it.
	* libdw.map: Likewise.

2010-06-22  Roland McGrath  <roland@redhat.com>

	* dwarf_getlocation.c (check_constant_offset): data[48] are constant.

	* dwarf_getsrclines.c: Fix signed comparison warning in extended
	opcode parsing.

2010-06-21  Roland McGrath  <roland@redhat.com>

	* dwarf.h: Add DW_TAG_GNU_* constants.

	* memory-access.h (get_sleb128_rest_return): Fix sign extension for
	10-byte case.

2010-06-20  Roland McGrath  <roland@redhat.com>

	* libdw_findcu.c (__libdw_findcu): Take new flag argument,
	to search TUs instead of CUs.
	* libdwP.h: Update decl.
	(struct Dwarf): New member tu_tree.
	* dwarf_end.c (dwarf_end): Clean up tu_tree.
	* dwarf_offdie.c (do_offdie): New function, broken out of ...
	(dwarf_offdie): ... here.
	(dwarf_offdie_types): New function.
	* libdw.h: Declare it.
	* libdw.map (ELFUTILS_0.148): Add it.

	* libdwP.h (CUDIE): Use cu_data.
	* dwarf_formblock.c: Likewise.
	* dwarf_formref_die.c: Likewise.
	* dwarf_diecu.c: Use CUDIE macro.
	* dwarf_formaddr.c: Use cu_sec_idx.

2010-06-16  Roland McGrath  <roland@redhat.com>

	* dwarf_formref_die.c: Use dwarf_offdie only for DW_FORM_ref_addr, so
	we don't repeat a CU lookup we've already done.  Handle
	DW_FORM_ref_sig8 using sig8_hash table and __libdw_intern_next_unit.

	* libdw_findcu.c (__libdw_intern_next_unit): New function,
	broken out of ...
	(__libdw_findcu): ... here.  Call it.
	* libdwP.h: Declare it.
	(struct Dwarf): New member next_tu_offset.

	* dwarf_sig8_hash.c: New file.
	* dwarf_sig8_hash.h: New file.
	* Makefile.am (libdw_a_SOURCES, noinst_HEADERS): Add them.
	* dwarf_abbrev_hash.c: Include dwarf_sig8_hash.h before
	defining NO_UNDEF.
	* libdwP.h (struct Dwarf): New member sig8_hash.
	* dwarf_begin_elf.c: Call Dwarf_Sig8_Hash_init on it.
	* dwarf_end.c: Call Dwarf_Sig8_Hash_free on it.

	* dwarf_nextcu.c (dwarf_next_unit): New function, broken out of ...
	(dwarf_nextcu): ... here.  Call it.
	* libdw.h: Declare it.
	* libdwP.h: Add INTDECL.
	* libdw_findcu.c (__libdw_findcu): Use it instead of dwarf_nextcu.
	* libdw.map (ELFUTILS_0.148): New set, add dwarf_next_unit.

	* libdwP.h (cu_sec_idx, cu_data): New functions.
	Use .debug_types when CU is a TU.
	* dwarf_cuoffset.c: Use that instead of assuming IDX_debug_info.
	* dwarf_siblingof.c: Likewise.
	* dwarf_formstring.c: Likewise.
	* dwarf_formudata.c (__libdw_formptr, dwarf_formudata): Likewise.
	* dwarf_getlocation.c (dwarf_getlocation): Likewise.
	(dwarf_getlocation_addr): Likewise.

	* libdwP.h (struct Dwarf_CU): Add new members type_offset, type_sig8.
	(DIE_OFFSET_FROM_CU_OFFSET): Take flag argument; if true, compute
	.debug_types header size instead of .debug_info header size.
	(CUDIE): Use it.
	* dwarf_diecu.c: Update caller.
	* dwarf_getaranges.c: Likewise.
	* dwarf_nextcu.c: Likewise.
	* libdw_findcu.c (__libdw_findcu): Initialize new members.

	* fde.c (fde_by_offset): Renamed to ...
	(__libdw_fde_by_offset): ... this, made global and internal_function.
	Don't take ADDRESS argument.
	(__libdw_find_fde): Update caller.  Do address sanity check here.
	* cfi.h: Declare __libdw_fde_by_offset.
	* cfi.c (dwarf_cfi_validate_fde): New function.
	* libdw.h: Declare it.
	* libdw.map (ELFUTILS_0.148): Add it.

	* cie.c (intern_new_cie): Canonicalize DW_EH_PE_absptr FDE encoding to
	either DW_EH_PE_udata8 or DW_EH_PE_udata4.

	* encoded-value.h (read_encoded_value): Handle DW_EH_PE_indirect.
	Don't assume DW_EH_PE_aligned refers to native address size.

	* cfi.c (execute_cfi): Barf on CIE initial instructions changing the
	address.

2010-06-17  Roland McGrath  <roland@redhat.com>

	* libdwP.h (struct Dwarf_Line_s): Add members isa, discriminator, and
	op_index.
	* dwarf_getsrclines.c (dwarf_getsrclines): Move NEW_FILE macro guts
	into an inner inline function.  Set new fields.  Check all fields for
	overflow when setting.
	* dwarf_lineisa.c: New file.
	* dwarf_linediscriminator.c: New file.
	* dwarf_lineop_index.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add them.
	* libdw.map (ELFUTILS_0.148): Add them.
	* libdw.h: Declare them.

2010-06-16  Roland McGrath  <roland@redhat.com>

	* dwarf_next_cfi.c: Fix version 4 return_address_register decoding.

	* fde.c (fde_by_offset): Renamed to ...
	(__libdw_fde_by_offset): ... this, made global and internal_function.
	Don't take ADDRESS argument.
	(__libdw_find_fde): Update caller.  Do address sanity check here.
	* cfi.h: Declare __libdw_fde_by_offset.
	* cfi.c (dwarf_cfi_validate_fde): New function.
	* libdw.h: Declare it.
	* libdw.map (ELFUTILS_0.148): Add it.

	* cie.c (intern_new_cie): Canonicalize DW_EH_PE_absptr FDE encoding to
	either DW_EH_PE_udata8 or DW_EH_PE_udata4.

	* encoded-value.h (read_encoded_value): Handle DW_EH_PE_indirect.
	Don't assume DW_EH_PE_aligned refers to native address size.

	* cfi.c (execute_cfi): Barf on CIE initial instructions changing the
	address.

2010-06-15  Roland McGrath  <roland@redhat.com>

	* dwarf_formref.c (__libdw_formref): Diagnose DW_FORM_ref_sig8 like
	DW_FORM_ref_addr.
	* dwarf_formref_die.c (dwarf_formref_die): Diagnose it the same way
	here, since we don't support it yet.

	* dwarf_next_cfi.c: Handle version 4 format.

	* dwarf_getsrclines.c: Handle version 4 format.

2010-06-01  Roland McGrath  <roland@redhat.com>

	* libdwP.h: Remove unused IDX_debug_*names, add IDX_debug_types.
	* dwarf_begin_elf.c (dwarf_scnnames): Likewise.

	* libdwP.h (CIE_VERSION): Remove unused macro.

	* dwarf_getsrclines.c: Fix version field test.
	* libdwP.h (DWARF_VERSION): Remove useless macro.

	* dwarf_formudata.c (__libdw_formptr): Fix DW_FORM_sec_offset handling.

	* dwarf_formblock.c (dwarf_formblock): Handle DW_FORM_exprloc.

	* libdw_findcu.c (__libdw_findcu): Accept version 4.

2010-05-31  Mark Wielaard  <mjw@redhat.com>

	* cfi.h (dwarf_cfi_cie_p): Move definition from here, to ..
	* libdw.h (dwarf_cfi_cie_p): ... here.

2010-05-31  Mark Wielaard  <mjw@redhat.com>

	* dwarf.h: Fix DW_LANG_Python constant.

2010-05-28  Eduardo Santiago  <santiago@redhat.com>

	* dwarf_getlocation.c (dwarf_getlocation): Do attr_ok check first
	thing.

2010-05-27  Roland McGrath  <roland@redhat.com>

	* dwarf.h: Add DW_AT_enum_class, DW_AT_linkage_name,
	DW_TAG_template_alias, DW_LANG_Python, DW_LNE_set_discriminator.

2010-05-08  Roland McGrath  <roland@redhat.com>

	* dwarf_getlocation.c (__libdw_intern_expression): Take new argument
	REF_SIZE.  Use that to handle DW_OP_call_ref correctly.
	(getlocation): Update caller.
	* dwarf_frame_cfa.c (dwarf_frame_cfa): Likewise.
	* dwarf_frame_register.c (dwarf_frame_register): Likewise.
	* libdwP.h: Update decl.

2010-04-26  Roland McGrath  <roland@redhat.com>

	* cfi.h (struct Dwarf_Frame_s): Add cfa_invalid alternative in cfa_rule.
	* cfi.c (execute_cfi): Set that instead of doing cfi_assert for
	DW_CFA_def_cfa_{offset*,register} when a non-offset rule is in force.
	* dwarf_frame_cfa.c (dwarf_frame_cfa): Handle cfa_invalid.

	* dwarf_getlocation.c (__libdw_intern_expression): Take new arg CFAP.
	Prepend DW_OP_call_frame_cfa if true.
	(getlocation): Update caller.
	* dwarf_frame_cfa.c (dwarf_frame_cfa): Likewise.
	* dwarf_frame_register.c (dwarf_frame_register): Likewise.
	* libdwP.h: Update decl.

2010-04-22  Roland McGrath  <roland@redhat.com>

	* cfi.c (execute_cfi): Never return without cleanup.
	Free FS on failure.
	(cie_cache_initial_state): Adjust caller to expect that free.
	(__libdw_frame_at_address): Likewise.

2010-03-10  Roland McGrath  <roland@redhat.com>

	* libdw.map (ELFUTILS_0.146): New set.  Add dwfl_core_file_report.

2010-02-15  Roland McGrath  <roland@redhat.com>

	* Makefile.am: Use config/eu.am for common stuff.

2010-02-02  Mark Wielaard  <mjw@redhat.com>

	* fde.c (intern_fde): Fix length check for sized_augmentation_data.

2010-01-07  Roland McGrath  <roland@redhat.com>

	* dwarf_getcfi_elf.c (getcfi_phdr): Use elf_getphdrnum.

2010-01-05  Roland McGrath  <roland@redhat.com>

	* dwarf_aggregate_size.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add it.
	* libdw.h: Declare it.
	* libdwP.h: Add INTDECL.
	* libdw.map (ELFUTILS_0.144): New set.  Add dwarf_aggregate_size.

	* dwarf_srclang.c: Add INTDEF.
	* libdwP.h: Add INTDECL.

	* dwarf.h: Add some more DW_AT_GNU_* types from gcc.

	* dwarf.h: Add DW_AT_GNU_vector, DW_AT_GNU_template_name.

2009-11-21  Roland McGrath  <roland@redhat.com>

	* dwarf_getlocation.c (check_constant_offset): Return 1 for all
	non-constant forms.

2009-10-15  Roland McGrath  <roland@redhat.com>

	* libdw_form.c (__libdw_form_val_len): Grok DW_FORM_sec_offset,
	DW_FORM_exprloc, DW_FORM_flag_present, and DW_FORM_ref_sig8.

2009-09-17  Roland McGrath  <roland@redhat.com>

	* dwarf_getlocation.c (dwarf_getlocation_implicit_value): Make OP
	argument a pointer to const.
	* libdw.h: Update decl.

2009-09-10  Roland McGrath  <roland@redhat.com>

	* dwarf_getlocation.c (store_implicit_value): New function.
	(__libdw_intern_expression): Use it, handle DW_OP_implicit_value.
	(dwarf_getlocation_implicit_value): New function.
	* libdw.h: Declare it.
	* libdw.map (ELFUTILS_0.143): Add it.

2009-09-09  Mark Wielaard  <mjw@redhat.com>

	* dwarf_getcfi.c (dwarf_getcfi): Clear cfi->ebl.

2009-08-21  Josh Stone  <jistone@redhat.com>

	* dwarf_hasattr_integrate.c: Integrate DW_AT_specification too.

2009-08-10  Roland McGrath  <roland@redhat.com>

	* dwarf_getscopevar.c: Use dwarf_diename.

2009-08-09  Roland McGrath  <roland@redhat.com>

	* libdw.map (ELFUTILS_0.143): New version set,
	inherits from ELFUTILS_0.142.
	* dwarf_arrayorder.c: Use OLD_VERSION and NEW_VERSION to define an
	alias in the ELFUTILS_0.122 version set and the default in the new set.
	* dwarf_srclang.c: Likewise.
	* dwarf_decl_file.c: Likewise.
	* dwarf_decl_line.c: Likewise.
	* dwarf_decl_column.c: Likewise.
	* dwarf_bytesize.c: Likewise.
	* dwarf_bitsize.c: Likewise.
	* dwarf_bitoffset.c: Likewise.

2009-08-07  Roland McGrath  <roland@redhat.com>

	* dwarf_arrayorder.c: Use dwarf_attr_integrate.
	* dwarf_srclang.c: Likewise.
	* dwarf_decl_file.c: Likewise.
	* dwarf_decl_line.c (__libdw_attr_intval): Likewise.
	* dwarf_bytesize.c: Likewise.
	* dwarf_bitsize.c: Likewise.
	* dwarf_bitoffset.c: Likewise.

2009-07-22  Roland McGrath  <roland@redhat.com>

	* dwarf_frame_cfa.c: Change calling convention.
	* libdw.h: Update decl.

	* dwarf_frame_register.c: Change calling/return-value convention for
	value-only results and undefined/same_value.
	* libdw.h: Update decl.

	* dwarf_getlocation.c (__libdw_intern_expression): Take new bool
	argument, append DW_OP_stack_value if set.  Don't take NOPS argument,
	return that value instead.
	(getlocation): Update caller.
	* dwarf_frame_cfa.c: Likewise.
	* libdwP.h: Update decl.

2009-07-21  Roland McGrath  <roland@redhat.com>

	* dwarf_getsrc_file.c: Ignore a CU that just has no DW_AT_stmt_list.
	Fix loop iteration after skipping a bogus or useless CU.

	* dwarf_entry_breakpoints.c: Handle 0 dwarf_errno () as harmless
	absence, not DWARF_E_NO_DEBUG_LINE.

2009-07-20  Roland McGrath  <roland@redhat.com>

	* dwarf_getlocation.c (__libdw_intern_expression):
	Handle DW_OP_stack_value.

2009-07-16  Roland McGrath  <roland@redhat.com>

	* dwarf_formudata.c (__libdw_formptr): Handle DW_FORM_sec_offset,
	reject others when CU's version > 3.

	* dwarf_formflag.c: Handle DW_FORM_flag_present.

	* dwarf.h: Add DW_OP_{implicit,stack}_value from DWARF 4 draft.
	Also DW_TAG_type_unit and DW_TAG_rvalue_reference_type.
	Also DW_AT_signature, DW_AT_main_subprogram, DW_AT_data_bit_offset,
	and DW_AT_const_expr.
	Also DW_FORM_sec_offset, DW_FORM_exprloc, DW_FORM_flag_present,
	and DW_FORM_ref_sig8.

2009-07-15  Roland McGrath  <roland@redhat.com>

	* dwarf_getlocation.c: Grok DW_OP_form_tls_address,
	DW_OP_GNU_push_tls_address, and DW_OP_bit_piece.

2009-07-13  Roland McGrath  <roland@redhat.com>

	* dwarf_getlocation.c: Grok DW_OP_call_frame_cfa.

2009-07-08  Roland McGrath  <roland@redhat.com>

	* libdw.map (ELFUTILS_0.142): Add dwfl_module_dwarf_cfi,
	dwfl_module_eh_cfi.

	* libdwP.h (struct Dwarf): Add member `cfi'.
	* dwarf_end.c (dwarf_end): Call __libdw_destroy_frame_cache on it.
	* dwarf_getcfi.c: New file.
	* dwarf_getcfi_elf.c: New file.
	* dwarf_cfi_end.c: New file.
	* dwarf_cfi_addrframe.c: New file.
	* dwarf_frame_cfa.c: New file.
	* dwarf_frame_register.c: New file.
	* dwarf_frame_return_address_register.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add them.
	* unwind.h: Declare those functions.
	* libdw.map (ELFUTILS_0.142): Export them.

	* dwarf_getlocation.c (__libdw_intern_expression): New function,
	broken out of ...
	(getlocation): ... here, call it.
	* libdwP.h: Declare it.

	* cie.c: New file.
	* fde.c: New file.
	* frame-cache.c: New file.
	* cfi.c: New file.
	* cfi.h: New file.
	* encoded-value.h: New file.
	* Makefile.am (libdw_a_SOURCES, noinst_HEADERS): Add them.
	* libdwP.h: Add DWARF_E_INVALID_CFI to errors enum.
	* dwarf_error.c (errmsgs): Add element for it.

	* dwarf_next_cfi.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add it.
	* libdw.h (Dwarf_CIE, Dwarf_FDE, Dwarf_CIE_Entry): New types.
	Declare dwarf_next_cfi.
	* libdw.map (ELFUTILS_0.142): New set, inherits from ELFUTILS_0.136.
	Add dwarf_next_cfi.

	* memory-access.h [! ALLOW_UNALIGNED]
	(read_2ubyte_unaligned): Renamed to ...
	(read_2ubyte_unaligned_1): ... this.  Take bool rather than Dwarf *.
	(read_2ubyte_unaligned): Define as macro passing dbg->other_byte_order.
	(read_2sbyte_unaligned): Likewise.
	(read_4ubyte_unaligned): Likewise.
	(read_4sbyte_unaligned): Likewise.
	(read_8ubyte_unaligned): Likewise.
	(read_8sbyte_unaligned): Likewise.

	* libdwP.h (IDX_eh_frame): Remove it.
	* dwarf_begin_elf.c (dwarf_scnnames): Remove its element.

2009-07-08  Roland McGrath  <roland@redhat.com>

	* libdwP.h (struct Dwarf_Line_s): Reorder members to pack better.

	* dwarf_getlocation.c (check_constant_offset): New function.
	(dwarf_getlocation, dwarf_getlocation_addr): Call it to
	handle DW_AT_data_member_location of data[48] as constant offset.

2009-06-18  Roland McGrath  <roland@redhat.com>

	* libdwP.h (__libdw_read_address_inc): Constify.
	(__libdw_read_offset_inc): Likewise.
	* dwarf_getaranges.c: Likewise.
	* dwarf_getlocation.c: Likewise.
	* dwarf_getsrclines.c: Likewise.
	* dwarf_nextcu.c: Likewise.

2009-05-05  Petr Machata  <pmachata@redhat.com>

	* libdwP.h (__libdw_formptr): Declare new function.
	* dwarf_formudata.c: Implement it here.
	* dwarf_getlocation.c (dwarf_getlocation_addr):
	Call it instead of hand-rolled offset handling code.
	* dwarf_getsrclines.c (dwarf_getsrclines): Likewise.
	* dwarf_ranges.c (dwarf_ranges): Likewise.

2009-05-04  Petr Machata  <pmachata@redhat.com>

	* libdwP.h (__libdw_read_begin_end_pair_inc): Declare new function.
	* dwarf_ranges.c: Implement it here.
	(dwarf_ranges): Call it.
	* dwarf_getlocation.c (dwarf_getlocation_addr): Call it also here.

2009-04-23  Petr Machata  <pmachata@redhat.com>

	* dwarf_formaddr.c (dwarf_formaddr): Call __libdw_read_* instead
	of read_*ubyte_unaligned.
	* dwarf_formref_die.c (dwarf_formref_die): Likewise.
	* dwarf_formstring.c (dwarf_formstring): Likewise.
	* dwarf_formudate.c (dwarf_formudata): Likewise.
	* dwarf_getaranges.c (dwarf_getaranges): Likewise.
	* dwarf_getlocation.c (dwarf_getlocation_addr): Likewise.
	* dwarf_getpubnames.c (get_offsets): Likewise.
	* dwarf_nextcu.c (dwarf_nextcu): Likewise.

2009-04-23  Petr Machata  <pmachata@redhat.com>

	* libdwP.h (__libdw_read_addr_inc, __libdw_read_off_inc,
	__libdw_read_addr, __libdw_read_off): Add four new internal
	functions.

2009-05-07  Roland McGrath  <roland@redhat.com>

	* dwarf_getmacros.c (dwarf_getmacros): Use absolute section offset in
	return value and OFFSET argument, not CU-relative.  Only fetch the
	attribute data when called with OFFSET of 0.

2009-05-07  Petr Machata  <pmachata@redhat.com>

	* dwarf_getmacros.c (dwarf_getmacros): Take into account offset in
	DW_AT_macro_info attribute of CU DIE.

2009-04-15  Roland McGrath  <roland@redhat.com>

	* dwarf.h (DW_CIE_ID): Removed.
	(DW_CIE_ID_32, DW_CIE_ID_64): New constants replace it.

2009-04-01  Roland McGrath  <roland@redhat.com>

	* dwarf.h: Add DW_CFA_GNU_negative_offset_extended.

2009-01-28  Roland McGrath  <roland@redhat.com>

	* libdwP.h (struct Dwarf_Line_s): Move out of struct Dwarf_Lines_s
	defn so C++ doesn't scope the name to not match the Dwarf_Line typedef.

	* libdwP.h (struct Dwarf_Files_s): Replace dbg field with cu field.

2009-01-26  Roland McGrath  <roland@redhat.com>

	* dwarf_ranges.c: Return 0 when no ranges or *_pc attrs at all.

2009-01-25  Roland McGrath  <roland@redhat.com>

	* dwarf_getattrs.c: Correctly skip attribute values when restarting.

2009-01-23  Roland McGrath  <roland@redhat.com>

	* Makefile.am ($(srcdir)/known-dwarf.h): Target renamed back.
	Put these rules under if MAINTAINER_MODE.

2009-01-22  Roland McGrath  <roland@redhat.com>

	* dwarf.h: Add DW_OP_GNU_encoded_addr.

2009-01-21  Roland McGrath  <roland@redhat.com>

	* Makefile.am (CLEANFILES): Renamed to ...
	(MOSTLYCLEANFILES): ... here.
	(CLEANFILES): New variable, add known-dwarf.h.

2009-01-17  Roland McGrath  <roland@redhat.com>

	* Makefile.am (known-dwarf.h): Target renamed, not in $(srcdir).
	Make it unconditional.
	(BUILT_SOURCES): Updated.

	* dwarf.h: Add description comments for DW_LANG_* values.

	* Makefile.am [MAINTAINER_MODE]
	($(srcdir)/known-dwarf.h): New target.
	(BUILT_SOURCES): Add it.

	* dwarf.h: Add DW_OP_GNU_push_tls_address, DW_OP_GNU_uninit.

2009-01-10  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_error.c: Always use __thread.  Remove all !USE_TLS code.

2009-01-08  Roland McGrath  <roland@redhat.com>

	* Makefile.am (libdw.so): Don't depend on $(zip_LIBS), just link it in.

2008-01-06  Roland McGrath  <roland@redhat.com>

	* libdwP.h (struct Dwarf_Abbrev): Change type of 'has_children' to bool.
	Reorder members.
	* dwarf_haschildren.c: Return -1 for error case, not 0.

	* Makefile.am (libdw.so): Link in $(zip_LIBS).

2009-01-06  Ulrich Drepper  <drepper@redhat.com>

	* dwarf.h: Add definition for unwind and call frame information.

	* memory-access.h: Define read_ubyte_unaligned, read_sbyte_unaligned,
	read_ubyte_unaligned_inc, and read_sbyte_unaligned_inc.

2008-08-15  Roland McGrath  <roland@redhat.com>

	* libdw.map (ELFUTILS_0.136): New version set, inherits from
	ELFUTILS_0.130.  Add dwfl_addrsegment, dwfl_report_segment.

2008-01-21  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_child.c: Minor optimizations.
	* dwarf_getattrs.c: Likewise.
	* dwarf_getpubnames.c: Likewise.
	* dwarf_siblingof.c: Likewise.
	* dwarf_tag.c: Likewise.

2008-01-18  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_getsrclines.c (dwarf_getsrclines): Don't require exact match
	of DWARF_VERSION comparison, just fail if the file's version is newer.

2008-01-17  Nick Clifton  <nickc@redhat.com>

	* dwarf.h (DWARF3_LENGTH_MIN_ESCAPE_CODE): New define.
	(DWARF3_LENGTH_MAX_ESCAPE_CODE): New define.
	(DWARF3_LENGTH_64_BIT): New define.
	* dwarf_getaranges (dwarf_getaranges): Use the new definitions.
	* dwarf_getpubnames: Include dwarf.h.
	(get_offsets): Use the new definitions.
	* dwarf_getsrclines.c (dwarf_getsrclines): Use the new defintions.
	* dwarf_nextcu.c: Include dwarf.h.  Correct comment.
	(dwarf_nextcu): Use the new definitions.

	* libdwP.h (DIE_OFFSET_FROM_CU_OFFSET): New macro.
	* dwarf_diecu.c (dwarf_diecu): Use the new macro.
	* dwarf_getaranges (dwarf_getaranges): Use the new macro.
	* dwarf_nextcu.c (dwarf_nextcu): Use the new macro.

	* dwarf_getpubnames (get_offsets): Replace assertion with test and
	error return.

	* dwarf_entry_breakpoints.c (dwarf_entry_breakpoints): Use CUDIE.

	* dwarf_siblingof (dwarf_siblingof): Detect a NULL return pointer.
	Set the address in the return structure to the address of the next
	non-sibling die, if there is no sibling and the return pointer is
	not the same as the die pointer.
	* libdw.h: Expand the description of the dwarf_siblingof prototype.

	* dwarf_child.c: Fix typo in comment.

	* libdwP.h (DWARF_VERSION): Change to 3.

	* dwarf_formref.c (__libdw_formref.c): Handle attributes which do
	not have a initialised valp pointer.

	* dwarf_getattrs.c (dwarf_getattrs): Return 1 rather than 0 when
	the end of the attributes is reached.  When the callback fails,
	return the address of the failing attribute, not the address of
	its successor.
	* libdw.h: Expand the description of the dwarf_getattrs prototype.

	* dwarf_child.c (__libdw_find_attr): Use the new definition.
	(dwarf_child): Likewise.
	* dwarf_tag.c (__libdw_findabbrev): Likewise.
	(dwarf_tag): Likewise.

2008-01-08  Roland McGrath  <roland@redhat.com>

	* Makefile.am (euinclude): Variable removed.
	(pkginclude_HEADERS): Set this instead of euinclude_HEADERS.
	(libdw.so): Pass -Wl,--enable-new-dtags,-rpath,$(pkglibdir).

2007-10-17  Roland McGrath  <roland@redhat.com>

	* libdw.h (__deprecated_attribute__): New macro.
	(dwarf_formref): Mark it deprecated.
	* dwarf_formref.c (__libdw_formref): New function, broken out of ...
	(dwarf_formref): ... here.  Call it.  Remove INTDEF.
	* libdwP.h: Remove INTDECL.
	Declare __libdw_formref.
	* dwarf_siblingof.c (dwarf_siblingof): Call __libdw_formref instead.
	* dwarf_formref_die.c: Likewise.  Handle DW_FORM_ref_addr here.

	* libdw_form.c (__libdw_form_val_len): Fix DW_FORM_ref_addr result,
	needs to check CU->version.

	* libdwP.h (struct Dwarf_CU): New member `version'.
	* libdw_findcu.c (__libdw_findcu): Initialize it.

	* dwarf_child.c: Return 1 for null entry as first child.

2007-10-05  Roland McGrath  <roland@redhat.com>

	* dwarf_begin_elf.c (check_section): Punt on SHT_NOBITS sections.

	* libdw.h (__extern_inline): Rename to __libdw_extern_inline.
	[__OPTIMIZE__] (dwarf_whatattr, dwarf_whatform): Update uses.

2007-10-03  Roland McGrath  <roland@redhat.com>

	* libdw.map (ELFUTILS_0.130: Add dwfl_build_id_find_elf
	and dwfl_build_id_find_debuginfo.

	* libdw.map (ELFUTILS_0.130): New version set, inherits from
	ELFUTILS_0.127.  Add dwfl_module_build_id, dwfl_module_report_build_id.

2007-10-02  Roland McGrath  <roland@redhat.com>

	* libdw_visit_scopes.c (classify_die): Return walk for class_type and
	structure_type.

2007-08-07  Roland McGrath  <roland@redhat.com>

	* dwarf_getscopes.c (pc_match): Swallow dwarf_haspc error return when
	error code is DWARF_E_NOERROR (0).

	* dwarf_getscopes.c (pc_record): Always bail early if DIE->prune.
	Fix typo in __libdw_visit_scopes argument.

	* dwarf_getscopes.c (pc_match): Check dwarf_haspc error return,
	swallow DWARF_E_NO_DEBUG_RANGES but not other errors.

2007-07-03  Roland McGrath  <roland@redhat.com>

	* libdw.h (__extern_inline): New macro.
	[__OPTIMIZE__] (dwarf_whatattr, dwarf_whatform): Use it.

2007-04-16  Roland McGrath  <roland@redhat.com>

	* libdw.map (ELFUTILS_0.127): Add dwfl_module_address_section.

2007-04-05  Roland McGrath  <roland@redhat.com>

	* dwarf_getsrcdirs.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add it.
	* libdw.h: Declare dwarf_getsrcdirs.
	* libdw.map (ELFUTILS_0.127): Add it.

	* libdwP.h (struct Dwarf_Files_s): New member ndirs.
	* dwarf_getsrclines.c (dwarf_getsrclines): Don't clobber NDIRLIST to
	zero before we use it to check for DWARF_E_INVALID_DIR_IDX.
	Save DIRARRAY in the Dwarf_Files.

	* dwarf_ranges.c (dwarf_ranges): Don't sign-extend 32-bit BEGIN
	address to check for all-ones base address entry.  Check directly.
	Reported by Sébastien Dugué <sebastien.dugue@bull.net>.

2007-03-25  Roland McGrath  <roland@redhat.com>

	* dwarf_begin_elf.c (check_section): Return Dwarf * instead of void.
	Return NULL when freeing RESULT on error.
	(global_read, scngrp_read): Check return value from check_section,
	break out of loop after it has freed RESULT.
	(valid_p): Handle null argument.

2007-03-12  Roland McGrath  <roland@redhat.com>

	* libdw.map (ELFUTILS_0.127): Add dwfl_report_begin_add.

2007-03-04  Roland McGrath  <roland@redhat.com>

	* libdw.map (ELFUTILS_0.127): New version set, inherits from
	ELFUTILS_0.126.  Add dwfl_module_addrsym.

2007-02-10  Roland McGrath  <roland@redhat.com>

	* dwarf.h (DW_OP_fbreg): Comment fix.

2007-02-03  Roland McGrath  <roland@redhat.com>

	* dwarf_getelf.c (dwarf_getelf): Renamed from dwarf_get_elf.
	* libdw.map (ELFUTILS_0.126): New version set, inherits from
	ELFUTILS_0.122.  Move dwarf_getelf there; it was never truly
	exported in the past.

2006-12-17  Roland McGrath  <roland@redhat.com>

	* dwarf_getlocation.c (dwarf_getlocation_addr): Use zero as base
	address when the CU is missing attributes due to buggy GCC.

2006-08-29  Roland McGrath  <roland@redhat.com>

	* Makefile.am (CLEANFILES): Add libdw.so.$(VERSION).

	* libdw.h (dwarf_diecu): Add __nonnull_attribute__.
	(dwarf_child): Don't list arg 1 in __nonnull_attribute__.

	* libdw_alloc.c (__libdw_allocate): Take new ALIGN argument, make sure
	result is aligned.  Adjust NEWP->remaining here for this allocation.
	* libdwP.h: Update decl.
	(libdw_alloc): Update caller.

2006-07-12  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_child.c: Adjust for internal_function_def removal.
	* dwarf_getabbrev.c: Likewise.
	* dwarf_tag.c: Likewise.
	* libdw_form.c: Likewise.
	* memory-access.c: Likewise.

2006-06-28  Roland McGrath  <roland@redhat.com>

	* libdw.map: Export dwfl_linecu, dwfl_line_comp_dir.

	* libdw.map: Bump to 0.122; export dwfl_module_getsymtab and
	dwfl_module_getsym.

2006-05-27  Ulrich Drepper  <drepper@redhat.com>

	* libdw.h: Add extern "C".

2006-05-22  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_getaranges.c (dwarf_getaranges): Handle files without
	aranges information.

2006-05-21  Ulrich Drepper  <drepper@redhat.com>

	* libdw.h: Add nonnull attributes to dwarf_tag, dwarf_getattrs,
	dwarf_haschildren.

2006-02-28  Roland McGrath  <roland@redhat.com>

	* dwarf.h: Add missing DW_ATE_*, DW_TAG_*, DW_LANG_*, DW_CFA_*,
	DW_OP_* values, to match DWARF 3.0.  Add new DW_DS_*, DW_END_*
	values from DWARF 3.0.

2006-02-22  Roland McGrath  <roland@redhat.com>

	* libdw.map: Bump to 0.120; export dwfl_version.

2005-12-22  Roland McGrath  <roland@redhat.com>

	* libdw.map: Bump to 0.119; export dwfl_linux_proc_maps_report.

2005-12-12  Roland McGrath  <roland@redhat.com>

	* dwarf_ranges.c: Copy CU base address-finding code from
	dwarf_getlocation.

2005-12-09  Roland McGrath  <roland@redhat.com>

	* dwarf_getlocation.c (dwarf_getlocation_addr): Add some unlikelys.
	Delay CU base lookup until it's needed.
	If CU base lookup fails with no error, flag invalid DWARF.

2005-11-25  Roland McGrath  <roland@redhat.com>

	* libdw.map: Bump to 0.118; export dwfl_module_register_names.

2005-11-15  Roland McGrath  <roland@redhat.com>

	* Makefile.am [BUILD_STATIC] (AM_CFLAGS): Add -fpic.

2005-11-13  Roland McGrath  <roland@redhat.com>

	* libdw.map: Bump to 0.117; export dwfl_module_return_value_location.

2005-10-27  Roland McGrath  <roland@redhat.com>

	* dwarf_entry_breakpoints.c (search_range): Fix binary search code;
	don't match end_sequence markers.

	* dwarf_getsrclines.c (compare_lines): Sort end_sequence markers
	before normal records at the same address.
	* dwarf_getsrc_die.c (dwarf_getsrc_die): Don't match an end_sequence
	marker.

2005-10-26  Roland McGrath  <roland@redhat.com>

	* dwarf_getfuncs.c (dwarf_getfuncs): Use Dwarf_Die, not Dwarf_Func.
	* dwarf_func_file.c: Renamed to ...
	* dwarf_decl_file.c: ... here.
	* dwarf_func_col.c: Renamed to ...
	* dwarf_decl_column.c: ... here.
	* dwarf_func_line.c: Renamed to ...
	* dwarf_decl_line.c: ... here.
	(dwarf_func_line): Renamed to ...
	(dwarf_decl_line): ... this.  Take a Dwarf_Die * argument.
	(__libdw_func_intval): Renamed __libdw_attr_intval.
	* dwarf_func_name.c: File removed.
	* dwarf_func_lowpc.c: File removed.
	* dwarf_func_highpc.c: File removed.
	* dwarf_func_entrypc.c: File removed.
	* dwarf_func_die.c: File removed.
	* Makefile.am (libdw_a_SOURCES): Updated.
	* libdw.h: Update decls.
	(Dwarf_Func): Type removed.
	* libdwP.h: Update decls.
	(struct Dwarf_Func_s): Type removed.
	* libdw.map: Updated.

	* libdwP.h (CUDIE): New macro.
	* dwarf_getlocation.c (dwarf_getlocation_addr): Use it.
	* dwarf_getscopes_die.c (dwarf_getscopes_die): Likewise.
	* dwarf_ranges.c (dwarf_ranges): Likewise.

	* dwarf_getloclist.c: Renamed to ...
	* dwarf_getlocation.c: ... here.
	(getloclist): Renamed to getlocation.
	(dwarf_getloclist): Renamed to dwarf_getlocation.
	(dwarf_addrloclists): Renamed to dwarf_getlocation_addr.
	* Makefile.am (libdw_a_SOURCES): Updated.
	* libdw.h (dwarf_getloclist): Renamed to dwarf_getlocation.
	(dwarf_addrloclists): Renamed dwarf_getlocation_addr.
	(Dwarf_Loc): Renamed Dwarf_Op.
	* libdwP.h (struct loc_s): Update use.
	* libdw.map: Update map.

	* dwarf_entry_breakpoints.c: Use the second line record within the
	function, regardless of its source location data.

2005-10-25  Roland McGrath  <roland@redhat.com>

	* dwarf_entry_breakpoints.c: Fall back to entrypc for contiguous too.

	* libdw.map: Add dwarf_entrypc, dwarf_entry_breakpoints.

2005-10-14  Roland McGrath  <roland@redhat.com>

	* dwarf_diecu.c (dwarf_diecu): New file.
	* Makefile.am (libdw_a_SOURCES): Add it.
	* libdw.h: Declare dwarf_diecu.
	* libdw.map: Export it.

	* libdw.map: Bump to 0.116; export dwarf_ranges.

2005-09-20  Roland McGrath  <roland@redhat.com>

	* dwarf_haspc.c: Use dwarf_ranges.
	* dwarf_entry_breakpoints.c: Likewise.

	* dwarf_ranges.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add it.
	* libdw.h: Declare dwarf_ranges.
	* libdwP.h: Add INTDECL.

2005-09-14  Roland McGrath  <roland@redhat.com>

	* dwarf_entry_breakpoints.c (dwarf_entry_breakpoints): Fix braino in
	prologue_end marker scanning loop.

2005-09-11  Roland McGrath  <roland@redhat.com>

	* dwarf.h: Comment typo fix.

2005-09-07  Roland McGrath  <roland@redhat.com>

	* dwarf_entry_breakpoints.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add it.
	* libdw.h: Declare dwarf_entry_breakpoints.

	* dwarf_entrypc.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add it.
	* libdw.h: Declare dwarf_entrypc.
	* libdwP.h: Add INTDECL.

2005-08-28  Ulrich Drepper  <drepper@redhat.com>

	* Makefile.am: Use $(LINK) not $(CC) when creating DSO.
	(%.os): Use COMPILE.os.
	(COMPILE.os): Filter out gconv options.

2005-08-27  Roland McGrath  <roland@redhat.com>

	* dwarf_getscopes.c (dwarf_getscopes): Rewritten using
	__libdw_visit_scopes.

	* dwarf_getscopes_die.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add it.
	* libdw.h: Declare dwarf_getscopes_die.
	* libdw.map: Bump to 0.115 and add it.

	* libdw_visit_scopes.c (__libdw_visit_scopes): Pass a struct
	containing a DIE and its parent pointer, instead of just Dwarf_Die.
	Take two functions for both preorder and postorder visitors.
	* libdwP.h: Update decl.
	(struct Dwarf_Die_Chain): New type.
	* dwarf_func_inline.c: Update uses.

	* dwarf_diename.c (dwarf_diename): Use dwarf_attr_integrate.
	Add INTDEF.
	* libdwP.h: Add INTDECL.
	* dwarf_func_name.c (dwarf_func_name): Use dwarf_diename.

2005-08-23  Roland McGrath  <roland@redhat.com>

	* dwarf_attr_integrate.c (dwarf_attr_integrate): Treat
	DW_AT_specification the same as DW_AT_abstract_origin.

2005-08-20  Roland McGrath  <roland@redhat.com>

	* libdw.map: Add dwfl_cumodule, remove dwfl_linecu.
	Add dwfl_linux_kernel_report_offline, dwfl_offline_section_address,
	and dwfl_report_offline.

2005-08-19  Roland McGrath  <roland@redhat.com>

	* libdw.map: Bump version to ELFUTILS_0.114 for libdwfl changes.
	Add dwfl_module_relocate_address, dwfl_module_relocations,
	dwfl_module_relocation_info.

2005-08-18  Roland McGrath  <roland@redhat.com>

	* dwarf_getscopes.c (dwarf_getscopes): Include the CU itself as
	outermost scope in the results.

2005-08-15  Roland McGrath  <roland@redhat.com>

	* dwarf_func_inline.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add it.
	* libdw.h: Declare dwarf_func_inline, dwarf_func_inline_instances.
	* libdw.map: Add them.

	* dwarf_func_die.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add it.
	* libdw.h: Declare dwarf_func_die.
	* libdw.map: Add it.  Bump version to ELFUTILS_0.114.

2005-08-10  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_getsrclines.c (dwarf_getsrclines): Correct fallout of renaming
	of DW_LNS_set_epilog_begin.

2005-08-09  Roland McGrath  <roland@redhat.com>

	* dwarf.h (DW_LNS_set_epilog_begin): Renamed DW_LNS_set_epilogue_begin.

	* dwarf_end.c: Add INTDEF.
	* dwarf_error.c (dwarf_errmsg): Likewise.
	* libdwP.h (dwarf_end, dwarf_errmsg): Add INTDECLs.

2005-08-01  Roland McGrath  <roland@redhat.com>

	* dwarf_getaranges.c (dwarf_getaranges): Check for bogus offset.
	* dwarf_getabbrev.c (__libdw_getabbrev): Likewise.

2005-07-28  Ulrich Drepper  <drepper@redhat.com>

	* Makefile.am (libdw.so): No need to link with libeu.a anymore.
	(libdw_a_LIBADD): Add all files from libdwfl.a.

2005-07-27  Roland McGrath  <roland@redhat.com>

	* Makefile.am (libdw.so): Link ../libdwfl/libdwfl_pic.a in,
	along with ../libebl/libebl.a and ../lib/libeu.a;
	depend on ../libelf/libelf.so.
	(libdw_so_LDADD): New variable.
	* libdw.map: Add dwfl_* symbols formerly in ../libdwfl/libdwfl.map.

	* libdw.map: Define an empty base version and move all symbols to
	version ELFUTILS_0.111; don't define ELFUTILS_1.0 at all yet.

2005-07-23  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_error.c: Add internal alias for dwarf_errno.
	* libdwP.h: Declare __dwarf_errno_internal.
	* dwarf_getloclist.c: Use INTDEF for dwarf_errno.

	* dwarf_error.c [USE_TLS]: Actually use __thread in definition of
	global_error.

2005-06-01  Roland McGrath  <roland@redhat.com>

	* dwarf_getaranges.c (dwarf_getaranges): Sort result array.
	* dwarf_getarange_addr.c (dwarf_getarange_addr): Use binary search.

2005-06-08  Roland McGrath  <roland@redhat.com>

	* memory-access.h (get_uleb128_step, get_uleb128): Remove casts.
	(get_sleb128_step, get_sleb128): Likewise.
	* dwarf_getattrs.c (dwarf_getattrs): Add consts.
	* dwarf_getloclist.c (getloclist): Likewise.
	* dwarf_formblock.c (dwarf_formblock): Likewise.
	* dwarf_getsrclines.c (dwarf_getsrclines): Likewise.
	* dwarf_getabbrevattr.c (dwarf_getabbrevattr): Likewise.
	* dwarf_formref.c (dwarf_formref): Likewise.
	* dwarf_formsdata.c (dwarf_formsdata): Likewise.
	* dwarf_formudata.c (dwarf_formudata): Likewise.
	* dwarf_haschildren.c (dwarf_haschildren): Likewise.
	* dwarf_child.c (__libdw_find_attr, __libdw_find_attr): Likewise.
	* dwarf_tag.c (dwarf_tag): Likewise.
	* dwarf_getabbrev.c (__libdw_getabbrev): Likewise.
	* memory-access.c (__libdw_get_uleb128, __libdw_get_sleb128): Likewise.
	* libdw_form.c (__libdw_form_val_len): Likewise.
	* libdwP.h: Update decl.

2005-06-04  Roland McGrath  <roland@redhat.com>

	* memory-access.h (get_uleb128_rest_return): New macro.
	[! IS_LIBDW] (__libdw_get_uleb128): New static, defined using it.
	(get_sleb128_rest_return): New macro.
	[! IS_LIBDW] (__libdw_get_sleb128): New static, defined using it.
	* memory-access.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add it.
	(DEFS): Add -DIS_LIBDW.

2005-05-31  Roland McGrath  <roland@redhat.com>

	* dwarf_formref_die.c (dwarf_formref_die): Add CU header offset to
	formref offset.

2005-05-30  Roland McGrath  <roland@redhat.com>

	* dwarf_getloclist.c (dwarf_addrloclists): Use DW_AT_entry_pc for base
	address if DW_AT_low_pc is missing.  Not to spec, but GCC generates it.

	* dwarf_getloclist.c (dwarf_addrloclists): Don't sign-extend 4-byte
	BEGIN value.  Instead, match base address entries separately for
	32/64 size cases.

2005-05-28  Roland McGrath  <roland@redhat.com>

	* dwarf_getloclist.c (dwarf_addrloclists): Fix decoding to advance
	past location expression contents.

2005-05-23  Roland McGrath  <roland@redhat.com>

	* dwarf_getsrclines.c: Comment typo fix.

	* dwarf_haspc.c (dwarf_haspc): Fix CU DIE address calculation.
	* dwarf_getloclist.c (dwarf_addrloclists): Likewise.

2005-05-22  Ulrich Drepper  <drepper@redhat.com>

	* libdwP.h: Only use INTDECL for alias prototypes.

2005-05-19  Roland McGrath  <roland@redhat.com>

	* dwarf_getloclist.c (attr_ok): Permit DW_AT_static_link too.

	* dwarf_getscopevar.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add it.
	* libdw.h: Declare dwarf_getscopevar.

	* dwarf_getsrcfiles.c: Add INTDEF.
	* dwarf_haschildren.c: Likewise.
	* libdwP.h (dwarf_getsrcfiles, dwarf_haschildren): Add INTDECL.

	* dwarf_getscopes.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add it.
	* libdw.h: Declare dwarf_getscopes.
	* libdw.map: Add it.

2005-05-18  Roland McGrath  <roland@redhat.com>

	* libdwP.h (IDX_debug_ranges): New enum constant.
	* dwarf_begin_elf.c (dwarf_scnnames): Add it for ".debug_ranges".
	* libdwP.h (DWARF_E_NO_DEBUG_RANGES): New enum constant.
	* dwarf_error.c (errmsgs): Add it.
	* dwarf_haspc.c: New file.
	* libdw.h: Declare dwarf_haspc.
	* libdw.map: Add it.
	* libdwP.h: Add INTDECL.

	* dwarf_attr_integrate.c: New file.
	* dwarf_hasattr_integrate.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add them.
	* libdw.h: Declare dwarf_attr_integrate, dwarf_hasattr_integrate.
	* libdw.map: Add them.

	* dwarf_hasattr.c: Add INTDEF.
	* libdwP.h: Add INTDECL for it.

	* dwarf_formref_die.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add it.
	* libdw.h (dwarf_formref_die): Declare it.
	* libdwP.h (dwarf_formref_die): Add INTDECL.
	* libdw.map: Add it.

	* dwarf_getloclist.c (attr_ok, getloclist): New functions, broken out
	of ...
	(dwarf_getloclist): ... here.  Call them.
	(dwarf_addrloclists): New function.
	* libdw.h: Declare it.
	* libdw.map: Add it.

	* dwarf_getmacros.c (dwarf_getmacros): Don't bail at
	DW_MACINFO_end_file.  Recognize type 0 as terminator.

2005-05-05  Roland McGrath  <roland@redhat.com>

	* dwarf_getsrc_die.c (dwarf_getsrc_die): Use binary search.

	* dwarf_getsrclines.c (dwarf_getsrclines): Sort result array, since
	the line program does not produce all entries in ascending order.

2005-04-25  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_getsrc_file.c (dwarf_getsrc_file): Handle multiple
	occurences (e.g., inlines) better.

2005-04-24  Ulrich Drepper  <drepper@redhat.com>

	* libdw.h (DWARF_END_ABBREV): Define.
	* dwarf_getabbrev.c (__libdw_getabbrev): Return DWARF_END_ABBREV if
	end is reached.
	* dwarf_offabbrev.c (dwarf_offabbrev): Return -1 on error, 1 if end
	of records reached.
	* dwarf_tag.c (__libdw_findabbrev): Also recognize DWARF_END_ABBREV
	as error of __libdw_getabbrev.

2005-04-04  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_getsrc_file.c (dwarf_getsrc_file): Minor optimization.

	* dwarf_getsrc_file.c (dwarf_getsrc_file): Always pass number of
	results back to caller.

2005-04-04  Roland McGrath  <roland@redhat.com>

	* dwarf_getsrc_file.c (dwarf_getsrc_file): Use size_t for CUHL.

	* dwarf_func_line.c (__libdw_func_intval): Use internal_function in
	defn.

2005-04-04  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_getsrc_file.c (dwarf_getsrc_file): Use INTUSE.

	* dwarf_getsrc_file.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add dwarf_getsrc_file.c.
	* libdw.h: Declare dwarf_getsrc_file.
	* libdw.map: Add dwarf_getsrc_file.

2005-04-02  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_func_entrypc.c: New file.
	* dwarf_func_col.c: New file.
	* dwarf_func_line.c: New file.
	* dwarf_func_file.c: New file.
	* libdw.h: Add prototypes for new functions.
	* libdw.map: Add dwarf_func_entrypc, dwarf_func_col, dwarf_func_line,
	dwarf_func_file.
	* Makefile.am (libdw_a_SOURCES): Add dwarf_func_entrypc.c,
	dwarf_func_col.c, dwarf_func_line.c, dwarf_func_file.c.
	* libdwP.h (struct Dwarf_Func_s): Add cudie element.
	Declare __libdw_func_intval and __dwarf_formsdata_internal.
	* dwarf_getfuncs.c: Also fill in cudie in Dwarf_Func object.
	* dwarf_formsdata.c: Use INTUSE and INTDEF to avoid PLTs.

	* dwarf.h: Add some DWARF3 definitions.

2005-04-01  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_getfuncs.c: New file.
	* dwarf_func_highpc.c: New file.
	* dwarf_func_lowpc.c: New file.
	* dwarf_func_name.c: New file.
	* Makefile.am (libdw_a_SOURCES): Add dwarf_getfuncs.c,
	dwarf_func_highpc.c, dwarf_func_lowpc.c, and dwarf_func_name.c.
	* libdw.map: Add dwarf_getfuncs, dwarf_func_highpc, dwarf_func_lowpc,
	and dwarf_func_name.
	* libdw.h: Add prototypes for new functions.
	* dwarf_child.c: Use INTUSE and INTDEF to avoid PLTs.
	* dwarf_siblingof.c: Likewise.
	* dwarf_dieoffset.c: Likewise.
	* dwarf_highpc.c: Likewise.
	* dwarf_lowpc.c: Likewise.
	* libdwP.h: Add prototypes for internal functions.
	Define Dwarf_Func_s structure.

2005-03-29  Ulrich Drepper  <drepper@redhat.com>

	* libdw.h: Add padding in Dwarf_die.

	* dwarf_arrayorder.c: Use INTUSE and INTDEF to avoid PLTs.
	* dwarf_attr.c: Likewise.
	* dwarf_begin.c: Likewise.
	* dwarf_begin_elf.c: Likewise.
	* dwarf_bitoffset.c: Likewise.
	* dwarf_bitsize.c: Likewise.
	* dwarf_bytesize.c: Likewise.
	* dwarf_diename.c: Likewise.
	* dwarf_formaddr.c: Likewise.
	* dwarf_formblock.c: Likewise.
	* dwarf_formref.c: Likewise.
	* dwarf_formstring.c: Likewise.
	* dwarf_formudata.c: Likewise.
	* dwarf_getarange_addr.c: Likewise.
	* dwarf_getarangeinfo.c: Likewise.
	* dwarf_getaranges.c: Likewise.
	* dwarf_getloclist.c: Likewise.
	* dwarf_getmacros.c: Likewise.
	* dwarf_getsrc_die.c: Likewise.
	* dwarf_getsrcfiles.c: Likewise.
	* dwarf_getsrclines.c: Likewise.
	* dwarf_highpc.c: Likewise.
	* dwarf_lowpc.c: Likewise.
	* dwarf_nextcu.c: Likewise.
	* dwarf_offdie.c: Likewise.
	* dwarf_siblingof.c: Likewise.
	* dwarf_srclang.c: Likewise.
	* dwarf_tag.c: Likewise.
	* libdw_findcu.c: Likewise.
	* libdwP.h: Add prototypes for internal functions.

	* dwarf_addrdie.c: New file.
	* dwarf_macro_opcode.c: New file.
	* dwarf_macro_param1.c: New file.
	* dwarf_macro_param2.c: New file.
	* libdw.h: Add declarations.  Move Dwarf_Macro definition to libdwP.h.
	* libdwP.h: Remove Dwarf_Macro definition.
	* Makefile.am (libdw_a_SOURCES): Add dwarf_addrdie.c,
	dwarf_macro_opcode.c, dwarf_macro_param1.c, and dwarf_macro_param2.c.
	* libdw.map: Add entries for new functions.

2005-03-21  Ulrich Drepper  <drepper@redhat.com>

	* libdw.h: Handle broken gcc < 4.

2005-02-15  Ulrich Drepper  <drepper@redhat.com>

	* Makefile (AM_CFLAGS): Add -Wunused -Wextra -Wformat=2.

	* dwarf_begin_elf.c: Fix warnings.
	* dwarf_dieoffset.c: Likewise.
	* dwarf_end.c: Likewise.
	* dwarf_error.c: Likewise.
	* dwarf_getpubnames.c: Likewise.

	* libdwP.h: Add new error values.
	* dwarf_error.c: Support new error values.
	* dwarf_getpubnames.c: Check parameter value.

2005-02-05  Ulrich Drepper  <drepper@redhat.com>

	* Makefile.am: Check for text relocations in constructed DSO.

	* Makefile.am [MUDFLAP] (AM_CFLAGS): Add -fmudflap.

2005-02-04  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_siblingof.c (dwarf_siblingof): Add some buffer boundary
	checks to not read over buffer boundaries for ill-formed DWARF data.

2004-09-25  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_child.c: Make compile with gcc 4.0.
	* dwarf_error.c: Likewise.
	* dwarf_formblock.c: Likewise.
	* dwarf_getabbrev.c: Likewise.
	* dwarf_getattrs.c: Likewise.
	* dwarf_getsrclines.c: Likewise.
	* dwarf_tag.c: Likewise.
	* libdw_form.c: Likewise.

2004-01-20  Ulrich Drepper  <drepper@redhat.com>

	* Makefile.am: Support building with mudflap.

	* dwarf_getloclist.c: Fix warnings gcc 3.4 spits out.
	* dwarf_getsrclines.c: Likewise.
	* dwarf_memory-access.h: Likewise.

2004-01-19  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_getsrcfiles.c: Third parameter can be NULL.

	* libdw.h: Define Dwarf_macro.  Declare dwarf_getmacros.
	Third parameter of dwarf_getsrcfiles can be NULL.

	* libdw.map: Add dwarf_getmacros.
	* Makefile.am (libdw_a_SOURCES): Add dwarf_getmacros.
	* dwarf_getmacros.c: New file.

2004-01-18  Ulrich Drepper  <drepper@redhat.com>

	* libdw.h: Second parameter of dwarf_getaranges can be NULL.

	* dwarf_nextcu.c: Return -1 if dwarf parameter is NULL.

	* dwarf_getsrclines.c:
	Use read_2ubyte_unaligned_inc instead of _inc-less variant.

	* dwarf_getaranges.c: Allow naranges parameter to be NULL.

	* libdwP.h (_): Use elfutils domain.

	* dwarf_getsrclines.c (dwarf_getsrclines): Add more branch prediction.

	* dwarf_getsrclines.c: Fix typo in comment.

2004-01-17  Ulrich Drepper  <drepper@redhat.com>

	* Makefile.am: Support building with mudflap.

2004-01-16  Ulrich Drepper  <drepper@redhat.com>

	* memory-access.h: Add lots of const in case a pointer passed is const.

	* dwarf_formflag.c: New file.
	* dwarf_getattrs.c: New file.
	* dwarf_error.c: Add new error value.
	* libdw.h: Add prototypes for new functions.  Adjust prototype for
	dwarf_getpubnames.
	* libdw.map: Add new functions.
	* dwarf_getpubnames.c: Change type of return value and fourth parameter
	to ptrdiff_t.
	* libdwP.h: Add new error value.
	* Makefile.am (libdw_a_SOURCES): Add dwarf_getattrs.c and
	dwarf_formflag.c.

	* dwarf_getpubnames.c (dwarf_getpubnames): Just fail if dbg is NULL.

2004-01-12  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_getarange_addr.c: New file
	* dwarf_getarangeinfo.c: New file.
	* dwarf_getaranges.c: New file.
	* dwarf_onerange.c: New file.
	* libdw.h: Declare new functions.  Define Dwarf_Arange and
	Dwarf_Aranges.
	* libdw.map: Add new functions.
	* libdwP.h: Add new errors.  Add aranges member to struct Dwarf.
	Define Dwarf_Aranges_s and Dwarf_Arange_s.
	* Makefile.am (libdw_a_SOURCES): Add dwarf_getaranges.c,
	dwarf_onearange.c, dwarf_getarangeinfo.c, dwarf_getarange_addr.c.
	* dwarf_error.c: Add new message.

2004-01-11  Ulrich Drepper  <drepper@redhat.com>

	* Makefile.am (libdw_a_SOURCES): Add dwarf_lineaddr.c, dwarf_linecol.c,
	dwarf_linebeginstatement.c, dwarf_lineendsequence.c, dwarf_lineblock.c,
	dwarf_lineprologueend.c, dwarf_lineepiloguebegin.c, dwarf_onesrcline.c.
	* dwarf_error.c: Add another message.
	* dwarf_getsrc_die.c: Adjust for Dwarf_Files and Dwarf_Lines
	introduction.
	* dwarf_filesrc.c: Likewise.
	* dwarf_getsrcfiles.c: Likewise.
	* dwarf_getsrclines.c: Likewise.
	* dwarf_lineaddr.c: New file.
	* dwarf_linebeginstatement.c: New file.
	* dwarf_lineblock.c: New file.
	* dwarf_linecol.c: New file.
	* dwarf_lineendsequence.c: New file.
	* dwarf_lineepiloguebegin.c: New file.
	* dwarf_lineno.c: New file.
	* dwarf_lineprologueend.c: New file.
	* dwarf_onesrcline.c: New file.
	* dwarf_lineno.c: Change interface to store result in object pointed
	to by second parameter.
	* libdw.h: Add prototypes for new functions.  Change dwarf_lineno
	prototype.  Define Dwarf_Files and Dwarf_Lines.
	* libdw.map: Add new functions.
	* libdwP.h: Define Dwarf_Files_s and Dwarf_Lines_s.
	* libdw_findcu.c: Don't initialize nlines field.

	* dwarf_siblingof: Little optimization.

	* dwarf_begin.c: Remember that the ELF descriptor must be closed.
	* dwarf_end.c: Close ELF descriptor if free_elf is set.
	* libdwP.h (struct Dwarf): Add free_elf field.

	* Makefile.am (libdw_a_SOURCES): Add dwarf_getstring.c and
	dwarf_offabbrev.c.
	* dwarf_getstring.c: New file.
	* dwarf_offabbrev.c: New file.
	* libdw.map: Add dwarf_getstring and dwarf_offabbrev.
	* dwarf_getabbrev.c (__libdw_getabbrev): Add new dbg and result
	parameters.  Don't allocate memory if not necessary and don't lookup
	previous results if no CU given.
	(dwarf_getabbrev): Adjust call to __libdw_getabbrev.
	* dwarf_tag.c: Adjust call to __libdw_getabbrev.
	* libdw.h: Declare dwarf_offabbrev and dwarf_getstring.
	* libdwP.h: Change prototype for __libdw_getabbrev.

	* dwarf_getabbrevattr.c: Add offsetp parameter.  Fill in before
	returning if this is wanted.

2004-01-09  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_nextcu.c: Add new parameter offset_sizep.  Initialize it
	with offset_size value.
	* libdw.h: Adjust dwarf_nextcu prototype.
	* libdwP.h (struct Dwarf_CU): Add offset_size member.
	* libdw_findcu.c: Adjust dwarf_nextcu call.  Initialize offset_size
	member of new CU struct.
	* dwarf_formstring.c: Depend on offset_size not address_size for
	DW_FORM_strp handling.
	* dwarf_form.c: Likewise for DW_FORM_strp and DW_FORM_ref_addr.

	* dwarf_tag.c (__libdw_findabbrev): Return correct value for
	failing lookup.
	(dwarf_tag): Correctly recognize failed lookup.

	* dwarf_end.c (cu_free):  Call tdestroy for locs member.  Use new
	function noop_free.
	* dwarf_error.c: Add message for DWARF_E_NO_BLOCK.
	* dwarf_formblock.c: New file.
	* dwarf_getloclist.c: Rewrite to handle a single block.
	* libdw.h: Define Dwarf_Block.  Rename Dwarf_Loc members.  Remove
	Dwarf_Locdesc definition.  Declare dwarf_formblock.  Remove
	dwarf_getloclistent declaration.
	* libdw.map: Add dwarf_formblock, remove dwarf_getloclistent.
	* libdwP.h: Define struct loc_s and DWARF_E_NO_BLOCK.
	Add locs member to struct Dwarf_CU.
	* libdw_fundcu.c: Initialize locs member of new CU.
	* Makefile.am (libdw_a_SOURCES): Add dwarf_formblock.c.
	Remove dwarf_getloclistent.c.

2004-01-07  Ulrich Drepper  <drepper@redhat.com>

	* libdw.h: Use __nonnull__ attribute only for gcc >= 3.3.
	* libdwP.h: Likewise.

	* dwarf_getloclist.c: New file.
	* dwarf_getloclistent.c: New file.
	* libdw.h: Define Dwarf_Loc and Dwarf_Locdesc.
	Declare dwarf_getloclistent and dwarf_getloclist.
	* libdw.map: Add dwarf_getloclistent and dwarf_getloclist.
	* libdwP.h: Define DWARF_E_NO_LOCLIST.
	* Makefile.am (libdw_a_SOURCES): Add dwarf_getloclistent.c and
	dwarf_getloclist.c.

	* dwarf_error.c: More error messages.

2004-01-06  Ulrich Drepper  <drepper@redhat.com>

	* dwarf_getsrclines.c: Remove debugging support.

	* dwarf_getsrcfiles.c: New file.
	* dwarf_filesrc.c: New file.
	* libdw.h: Declare these functions.  Define Dwarf_File.
	* libdwP.c: Adjust Dwarf_File_s definition.
	* libdw.map: Add these functions.
	* Makefile.am (libdw_a_SOURCES): Add dwarf_getsrcfiles.c and
	dwarf_filesrc.c.
	* dwarf_getsrclines.c: Initialize cu->files.

2004-01-05  Ulrich Drepper  <drepper@redhat.com>

	* libdw.h: Add more nonnull function attributes.

	* dwarf_begin_elf.c (dwarf_begin_elf): Don't initialize mem_tail->next.
	* dwarf_end.c (cu_free): New function.
	(dwarf_end): Also free CU tree.  Correct freeing of memory blocks.
	* dwarf_error.c (errmsgs): Add new messages.
	* dwarf_getsrc_die.c: New file.
	* dwarf_getsrclines.c: New file.
	* dwarf_lineno.c: New file.
	* dwarf_linesrc.c: New file.
	* dwarf_nextcu.c (dwarf_nextcu): Use read_*byte_unaligned_inc
	instead of the *_inc-less variants.
	* libdw.h: Define Dwarf_Line.  Add some function attributes.  Declare
	dwarf_getsrclines, dwarf_getsrc_die, dwarf_lineno, and dwarf_linesrc.
	* libdw.map: Add dwarf_getsrclines, dwarf_getsrc_die, dwarf_lineno,
	and dwarf_linesrc.
	* libdwP.h: Add more error codes.
	(struct Dwarf): Remove mem_tail.next member.
	(Dwarf_File): Define type.
	(struct Dwarf_Line_s): Define type.
	(struct Dwarf_CU): Add lines and nlines members.
	(libdw_alloc): Define local variable _tail and use it.
	Add some function attributes.
	* libdw_alloc.c (__libdw_allocate): Don't initialize next member.
	* libdw_findcu.c (__libdw_findcu): Initialize lines and nlines members.
	* memory-access.h: Add unlikely for the endian conversion paths.
	* Makefile.am (AM_CFLAGS): Add -std parameter.
	(libdw_a_SOURCES): Add dwarf_getsrclines, dwarf_getsrc_die,
	dwarf_lineno, and dwarf_linesrc.

2003-08-11  Ulrich Drepper  <drepper@redhat.com>

	* Moved to CVS archive.
