2015-11-18  Chih-Hung Hsieh <chh@google.com>

	* linux-proc-maps.c (proc_maps_report): Move nested function
	'report' to file scope.

2015-11-18  Chih-Hung Hsieh <chh@google.com>

	* core-file.c (elf_begin_rand): Move nested function 'fail' to file
	scope.
	* core-file.c (dwfl_elf_phdr_memory_callback): Move nested functions
	'update_end' and 'more' to file scope.

2015-11-17  Chih-Hung Hsieh <chh@google.com>

	* link_map.c (auxv_format_probe): Move nested functions
	check64 and check32 to file scope.

2015-12-08  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* dwfl_frame.c (state_fetch_pc): Add a backend-defined offset to
	the value of the return address register as defined by the CFI
	abi.
	* frame_unwind.c (handle_cfi): Likewise.

2015-12-01  Mark Wielaard  <mjw@redhat.com>

	* link_map.c (dwfl_link_map_report): Track whether in.d_buf comes
	from exec or memory_callback, free as appropriate.

2015-12-01  Mark Wielaard  <mjw@redhat.com>

	* libdwflP.h (struct Dwfl_User_Core): New.
	(struct DWfl): Replace executable_for_core with user_core.
	* argp-std.c (parse_opt): Store core and fd in Dwfl user_core.
	* core-file.c (dwfl_core_file_report): Check and store
	executable_for_core in Dwfl user_core.
	* dwfl_build_id_find_elf.c (dwfl_build_id_find_elf): Check and use
	executable_for_core in Dwfl user_core.
	* dwfl_end.c (dwfl_end): Release resources held in Dwfl user_core.
	* link-map.c (report_r_debug): Check executable_for_core in Dwfl
	user_core.
	(dwfl_link_map_report): Likewise.

2015-11-16  Chih-Hung Hsieh <chh@google.com>

	* dwfl_module_getdwarf.c (find_prelink_address_sync): Move nested
	function 'consider_shdr' to file scope.
	* dwfl_module_getdwarf.c (find_dynsym): Move nested function
	'translate_offs' to file scope.

2015-11-16  Chih-Hung Hsieh <chh@google.com>

	* dwfl_module_addrsym.c (__libdwfl_addrsym): Move nested functions
	'same_section', 'binding_value', 'try_sym_value', and 'search_table'
	to file scope.

2015-11-19  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module.c (__libdwfl_module_free): Remove Dwfl_Module Ebl from
	eh_cfi and dwarf_cfi cache if necessary before calling dwarf_end and
	dwarf_cfi_end.

2015-11-13  Chih-Hung Hsieh <chh@google.com>

	* gzip.c (unzip): Move nested functions to file scope.

2015-10-21  Chih-Hung Hsieh <chh@google.com>
	    Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_getsrc_file.c (dwfl_module_getsrc_file): Move nested
	functions 'dwarf_line_file', 'dwfl_line', and 'dwfl_line_file' to
	file scope. Rename dwarf_line_file to dwfl_dwarf_line_file. Don't
	use INTUSE.

2015-10-21  Chih-Hung Hsieh <chh@google.com>

	* frame_unwind.c (expr_eval): Move nested function 'push' and 'pop'
	to file scope. Pass used local variables in struct eval_stack.

2015-10-21  Chih-Hung Hsieh <chh@google.com>

	* dwfl_module.c (dwfl_report_module): Move nested function 'use' to
	file scope.

2015-10-09  Josh Stone  <jistone@redhat.com>

	* core-file.c (elf_begin_rand): Replace loff_t with off_t.
	* open.c (decompress): Replace off64_t with off_t.
	* gzip.c (unzip): Likewise.
	* image-header.c (__libdw_image_header): Likewise.
	* libdwflP.h: Likewise in function declarations.
	* argp-std.c (parse_opt): Replace open64 with open.
	* dwfl_build_id_find_elf.c (__libdwfl_open_mod_by_build_id,
	dwfl_build_id_find_elf): Likewise.
	* dwfl_module_getdwarf.c (open_elf_file): Likewise.
	* dwfl_report_elf.c (dwfl_report_elf): Likewise.
	* dwfl_segment_report_module.c (dwfl_segment_report_module): Likewise.
	* link_map.c (report_r_debug): Likewise.
	* offline.c (dwfl_report_offline): Likewise.
	* linux-proc-maps.c (grovel_auxv, get_pid_class,
	dwfl_linux_proc_find_elf): Likewise.
	(read_proc_memory): Replace off64_t with off_t.
	* find-debuginfo.c (find_debuginfo_in_path): Replace stat64 and
	fstat64 with stat and fstat.
	(try_open): Likewise, and replace open64 with open.
	* linux-kernel-modules.c: Manually define open and fopen to open64 and
	fopen64 when needed, since the early fts.h include breaks that.
	(try_kernel_name): Replace open64 with open.
	(check_notes): Likewise.

2015-10-09  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* linux-proc-maps.c (read_proc_memory): Use seek+read instead of
	pread, as the later doesn't accept negative offsets.

2015-10-07  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_getdwarf.c (MAX): Removed.
	(find_prelink_address_sync): Allocate exact amount of bytes for
	phdrs and shdrs.
	* dwfl_segment_report_module.c (dwfl_segment_report_module):
	Likewise for phdrs.
	* elf-from-memory.c (MAX): Removed.
	(elf_from_remote_memory): Allocate exact amount of bytes for phdrs.

2015-10-05  Chih-Hung Hsieh <chh@google.com>

	* dwfl_module_getdwarf.c (find_prelink_address_sync): Do not use
	union of variable length arrays.
	* dwfl_segment_report_module.c (dwfl_segment_report_module): Likewise.
	* elf-from-memory.c (elf_from_remote_memory): Likewise.
	* link_map.c (auxv_format_probe): Likewise.
	* link_map.c (report_r_debug): Likewise.
	* link_map.c (dwfl_link_map_report): Likewise.

2015-09-18  Chih-Hung Hsieh  <chh@google.com>

	* relocate.c (relocate_section): Move nested function "relocate"
	to file scope, pass all used local variables as constants.
	Move nested "check_badreltype" to file scope, pass addresses of
	updated used local variables.
	* linux-kernel-modules.c (intuit_kernel_bounds): Move nested function
	"read_address" to file scope, pass all updated local variables in
	a state structure.
	* linux-kernel-modules.c (dwfl_linux_kernel_find_elf): Move nested
	function "subst_name" to file scope, pass all used local variables
	as constants.
	* linux-kernel-modules.c (dwfl_linux_kernel_report_kernel): Replace
	simple nested function "report" with a macro. Work around gcc static
	analysis error -Werror=maybe-uninitialized.

2015-09-22  Mark Wielaard  <mjw@redhat.com>

	* core-file.c: Remove old-style function definitions.
	* dwfl_error.c: Likewise.
	* dwfl_module_dwarf_cfi.c: Likewise.
	* dwfl_module_eh_cfi.c: Likewise.
	* dwfl_module_register_names.c: Likewise.
	* dwfl_module_return_value_location.c: Likewise.
	* dwfl_version.c: Likewise.

2015-09-09  Chih-Hung Hsieh  <chh@google.com>
	    Mark Wielaard  <mjw@redhat.com>

	* dwfl_frame.c (dwfl_attach_state): Remove redundant NULL tests
	on parameters declared with __nonnull_attribute__.
	* libdwfl.h (dwfl_module_getelf): Don't mark first argument as
	nonnull.

2015-09-08  Mark Wielaard  <mjw@redhat.com>

	* libdwflP.h (struct __libdwfl_pid_arg): Add elf and elf_fd.
	* linux-pid-attach.c (pid_detach): Call elf_end and close.
	(dwfl_linux_proc_attach): Open and save /proc/PID/exe.

2015-09-04  Chih-Hung Hsieh  <chh@google.com

	* frame_unwind.c (expr_eval): Use llabs instead of abs.

2015-08-14  Dodji Seketeli  <dodji@seketeli.org>

	* find-debuginfo.c (find_debuginfo_in_path): Try to locate the
	debug info file named debuglink_file under
	mod->dwfl->callbacks->debuginfo_path, by looking at
	the set of sub-trees under mod->dwfl->callbacks->debuginfo_path
	which is common to the set of non-absolute parent trees of
	file_name.

2015-06-18  Mark Wielaard  <mjw@redhat.com>

	* find-debuginfo.c (try_open): Free fname on all failure paths.

2015-06-18  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_getdwarf.c (find_symtab): Check shdr is not NULL and
	sh_entsize is not zero.

2015-06-06  Mark Wielaard  <mjw@redhat.com>

	* find-debuginfo.c (find_debuginfo_in_path): Always free localpath,
	localname and file_dirname.

2015-06-06  Mark Wielaard  <mjw@redhat.com>

	* derelocate.c (cache_sections): Free sortrefs.

2015-06-05  Mark Wielaard  <mjw@redhat.com>

	* dwfl_segment_report_module.c (dwfl_segment_report_module):
	If the note_file exists, but the build_id doesn't match discard
	the file and continue reporting.

2015-06-01  Mark Wielaard  <mjw@redhat.com>

	* dwfl_build_id_find_elf.c (__libdwfl_open_by_build_id): Copy path
	pointer before passing to strsep.

2015-05-30  Mark Wielaard  <mjw@redhat.com>

	* link_map.c (check32): Use read_4ubyte_unaligned_noncvt to read
	type and value.
	(read_addrs): Use read_(4|8)ubyte_unaligned_noncvt or to read
	adresses.

2015-05-30  Mark Wielaard  <mjw@redhat.com>

	* find-debuginfo.c (dwfl_standard_find_debuginfo): Check file_name is
	not NULL before calling canonicalize_file_name.

2015-05-24  Mark Wielaard  <mjw@redhat.com>

	* derelocate.c (check_module): Check mod is not NULL.

2015-05-22  Mark Wielaard  <mjw@redhat.com>

	* link_map.c (dwfl_link_map_report): Allocate phdrs and dyn with
	malloc instead of stack allocating. Call free when done with data.

2015-05-22  Mark Wielaard  <mjw@redhat.com>

	* dwfl_segment_report_module.c (dwfl_segment_report_module):
	Allocate phdrs with malloc, not on stack. free in finish.
	Allocate dyn with malloc, not on stack, free after use.

2015-05-22  Mark Wielaard  <mjw@redhat.com>

	* find-debuginfo.c (find_debuginfo_in_path): malloc or strdup,
	instead of alloca or strdupa, local strings of unknown size.
	Call free before return.

2015-05-22  Mark Wielaard  <mjw@redhat.com>

	* dwfl_build_id_find_elf.c (__libdwfl_open_by_build_id): Return
	error when id_len too small or too large. strdup, not strdupa,
	and free path when done.

2015-05-19  Mark Wielaard  <mjw@redhat.com>

	* elf-from-memory.c (elf_from_remote_memory): Don't allocate all
	phdrs on the stack. Allocate with malloc and free when done.

2015-05-19  Mark Wielaard  <mjw@redhat.com>

	* linux-kernel-modules.c (dwfl_linux_kernel_find_elf): malloc and
	free alternate_name.

2015-05-19  Mark Wielaard  <mjw@redhat.com>

	* linux-kernel-modules.c (dwfl_linux_kernel_report_offline): Don't
	stack allocate name. Only change chars up to suffix.

2015-05-18  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_getdwarf.c (find_prelink_address_sync): Allocate
	phdrs and shdrs unions with malloc, not alloca. Free after use.

2015-05-18  Mark Wielaard  <mjw@redhat.com>

	* derelocate.c (cache_sections): Allocate temporary newrefs and
	sortrefs with malloc, not alloca. Always free them on return.

2015-05-07  Mark Wielaard  <mjw@redhat.com>

	* cu.c (intern_cu): Check for EOF and check cuoff points to a real
	Dwarf_Die before interning. Explicitly check EOF is expected.

2015-05-05  Mark Wielaard  <mjw@redhat.com>

	* dwfl_lineinfo.c (dwfl_lineinfo): Check info->file is valid.

2015-05-06  Roland McGrath  <roland@hack.frob.com>

	* dwfl_error.c (struct msgtable): Break type definition out of
	the 'msgtable' initializer.
	(msgtable): Make it a union of struct msgtable and a char array.
	(msgstr): Use the full-table char array rather than the msg_0 entry.

2015-04-23  Max Filippov  <jcmvbkbc@gmail.com>

	* core-file.c (_compat_without_executable_dwfl_core_file_report):
	Guard with SYMBOL_VERSIONING.
	* dwfl_module_build_id.c (_compat_vaddr_at_end_dwfl_module_build_id):
	Likewise.
	* dwfl_report_elf.c (_compat_without_add_p_vaddr_dwfl_report_elf):
	Likewise.

2015-04-02  Mark Wielaard  <mjw@redhat.com>

	* segment.c (insert): Check correct number of lookup_elts.

2015-03-31  Mark Wielaard  <mjw@redhat.com>

	* core-file.c (core_file_read_eagerly): Special case small images.

2015-01-26  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_getdwarf.c (find_symtab): Explicitly clear symdata,
	syments and first_global on elferr before calling find_dynsym.

2014-12-27  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_getsrc.c (dwfl_module_getsrc): Never match a line that
	has end_sequence set.

2015-01-04  Mark Wielaard  <mjw@redhat.com>

	* cu.c (intern_cu): Store result and return directly when finding
	EOF marker.
	(__libdwfl_nextcu): Check *nextp as returned by intern_cu isn't -1.

2014-12-19  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_getdwarf.c (find_symtab): Always try find_dynsym last.

2014-12-19  Mark Wielaard  <mjw@redhat.com>

	* elf-from-memory.c (handle_segment): Remove palign sanity check.

2014-12-18  Mark Wielaard  <mjw@redhat.com>

	* relocate.c (resolve_symbol): Make sure symstrdata->d_buf != NULL.

2014-12-13  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_getdwarf.c (find_dynsym): elf_getdata_rawchunk takes
	a size_t, make sure it doesn't overflow.

2014-12-13  Mark Wielaard  <mjw@redhat.com>

	* cu.c (cudie_offset): Make sure Dwarf_Off difference doesn't
	wrap around before returning as int.

2014-12-11  Josh Stone  <jistone@redhat.com>

	* dwfl_module_getsrc.c (dwfl_module_getsrc): Return the *last* line
	record <= addr, rather than returning immediately on matches.

2014-12-09  Mark Wielaard  <mjw@redhat.com>

	* dwfl_segment_report_module.c (handle_file_note): Check count doesn't
	overflow.

2014-12-07  Mark Wielaard  <mjw@redhat.com>

	* relocate.c (relocate_section): Sanity check section overlap against
	actually used ehsize, shentsize and phentsize.

2014-12-07  Mark Wielaard  <mjw@redhat.com>

	* offline.c (dwfl_offline_section_address): Assert shndx is not zero.
	* relocate.c (__libdwfl_relocate_value): Don't relocate against
	section zero.

2014-11-29  Mark Wielaard  <mjw@redhat.com>

	* relocate.c (relocate_section): Check relocation section and target
	section data don't overlap any of the ELF headers.
	(relocate): Check for offset + size overflow.

2014-11-22  Mark Wielaard  <mjw@redhat.com>

	* link_map.c (consider_executable): Use elf_getphdrnum.
	(dwfl_link_map_report): Likewise.

2014-11-18  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_getdwarf.c (find_symtab): Sanity check the data buffer,
	number of symbols and first_global before use.

2014-11-14  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_getdwarf.c (load_symtab): Don't use tables which have
	a zero sh_entsize.

2014-11-10  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_getdwarf.c (find_dynsym): New inner function
	translate_offs that takes an adjust argument. Try finding
	the symbol table with and without adjusting to main_bias.

2014-09-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Support NT_FILE for locating files.
	* core-file.c (dwfl_core_file_report): New variables note_file and
	note_file_size, set them and pass them to dwfl_segment_report_module.
	* dwfl_segment_report_module.c: Include common.h and fcntl.h.
	(buf_has_data, buf_read_ulong, handle_file_note): New functions.
	(invalid_elf): New function from code of dwfl_segment_report_module.
	(dwfl_segment_report_module): Add parameters note_file and
	note_file_size.  New variables elf and fd, clean them up in finish.
	Move some code to invalid_elf.  Call handle_file_note, if it found
	a name verify the file by invalid_elf.  Protect elf and fd against
	cleanup by finish if we found the file for new Dwfl_Module.
	* libdwflP.h (dwfl_segment_report_module): Add parameters note_file and
	note_file_size.

2014-09-23  Mark Wielaard  <mjw@redhat.com>

	* dwfl_segment_report_module.c (dwfl_segment_report_module):
	Extract ei_class, ei_data and e_type early and use the result.

2014-09-18  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwfl_build_id_find_elf.c (dwfl_build_id_find_elf): Use IS_EXECUTABLE.
	* dwfl_segment_report_module.c (dwfl_segment_report_module): Set
	IS_EXECUTABLE.
	* libdwflP.h (struct Dwfl_Module): New field is_executable.

2014-08-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwfl_module_getdwarf.c (find_offsets): Add parameter main_bias, use
	it.
	(find_dynsym): Pass the new parameter main_bias.

2014-08-14  Mark Wielaard  <mjw@redhat.com>

	* linux-kernel-modules.c (check-suffix): Also TRY .ko.xz.

2014-07-24  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix report_r_debug for prelinked libraries.
	* link_map.c (report_r_debug): Comment out variable l_addr.
	Use instead new variable base recalculated from l_ld.

2014-06-24  Kurt Roeckx  <kurt@roeckx.be>

	* linux-pid-attach.c: Make it build on non linux hosts.

2014-06-17  Mark Wielaard  <mjw@redhat.com>

	* frame_unwind.c (handle_cfi): Use ebl_func_addr_mask.
	* dwfl_module_getsym.c (__libdwfl_getsym): Likewise.

2014-06-15  Mark Wielaard  <mjw@redhat.com>

	* linux-core-attach.c (core_memory_read): Use libdw/memory-access.h
	macros read_4ubyte_unaligned_noncvt and read_8ubyte_unaligned_noncvt
	to read possibly unaligned data.
	(core_next_thread): Likewise.
	(core_set_initial_registers): Likewise.
	(dwfl_core_file_attach): Likewise.

2014-06-11  Mark Wielaard  <mjw@redhat.com>

	* dwfl_frame.c (__libdwfl_process_free): Reset dwfl->attacherr.
	(dwfl_attach_state): Set dwfl->attacherr.
	(dwfl_pid): Check and return dwfl->attacherr if set.
	(dwfl_getthreads): Likewise.
	(getthread): Likewise.
	* libdwflP.h: Add DWFL_E_NO_CORE_FILE.
	(struct Dwfl): Add attacherr field.
	* linux-core-attach.c (dwfl_core_file_attach): Set dwfl->attacherr.
	Don't assert if ELF file is not ET_CORE, just return error.
	* linux-pid-attach.c (dwfl_linux_proc_attach): Set dwfl->attacherr.

2014-06-10  Mark Wielaard  <mjw@redhat.com>

	* argp-std.c (parse_opt): Ignore errors from dwfl_core_file_attach
	or dwfl_linux_proc_attach.

2014-05-15  Mark Wielaard  <mjw@redhat.com>

	* linux-proc-maps.c (grovel_auxv): Close fd on error.

2014-05-02  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_getdwarf: Remove ENABLE_DWZ ifdefs so find_debug_altlink
	is always called.

2014-05-01  Mark Wielaard  <mjw@redhat.com>

	* libdwflP.h (struct Dwfl_Module): Add alt, alt_fd and alt_elf fields.
	(__libdwfl_open_mod_by_build_id): Renamed __libdwfl_open_by_build_id.
	(__libdwfl_open_by_build_id): New declaration that takes an explicit
	build-id.
	* dwfl_build_id_find_debuginfo.c (dwfl_build_id_find_debuginfo): If
	we already have the Dwarf then look for the alt dwz multi file by
	build-id.
	* dwfl_build_id_find_elf.c (__libdwfl_open_by_build_id): Add the
	build-id we are looking for as argument.
	(__libdwfl_open_mod_by_build_id): New function, calls
	__libdwfl_open_by_build_id.
	(dwfl_build_id_find_elf): Call __libdwfl_open_mod_by_build_id.
	* dwfl_module.c (__libdwfl_module_free): Release alt, alt_elf and
	close alt_fd if necessary.
	* dwfl_module_getdwarf.c (__check_build_id): Removed.
	(try_debugaltlink): Removed.
	(open_debugaltlink): Removed.
	(open_elf_file): First half of open_elf that just opens the elf
	file but doesn't setup the load address.
	(open_elf): Call open_elf_file.
	(find_debug_altlink): New function.
	(load_dw): Remove loading of dwz multifile.
	(find_dw): Call find_debug_altlink.
	* find-debuginfo.c (validate): Handle alt debug case using
	dwelf_dwarf_gnu_debugaltlink and mod->alt_elf.
	(find_debuginfo_in_path): Handle alt debug files possibly in .dwz
	subdirs.
	* linux-kernel-modules.c (try_kernel_name): Use fakemod.debug.name
	to store name to find by dwfl_standard_find_debuginfo instead of
	allocating an extra variable on stack.

2014-04-30  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_build_id.c (__libdwfl_find_elf_build_id): Moved to
	dwelf_elf_gnu_build_id.c.
	(__libdwfl_find_build_id): Add assert to make sure mod is never NULL.
	* dwfl_segment_report_module.c (dwfl_segment_report_module): Call
	dwelf_elf_gnu_build_id directly instead of __libdwfl_find_build_id.
	* dwfl_module_getdwarf.c (__check_build_id): Implement using
	dwelf_elf_gnu_build_id.

2014-04-15  Florian Weimer  <fweimer@redhat.com>

	* dwfl_module_getdwarf.c (__check_build_id): Moved from libdw.
	(try_debugaltlink): Likewise.
	(open_debugaltlink): Likewise.
	(load_dw): Locate alternate debug information using
	dwelf_dwarf_gnu_debugaltlink and call open_debugaltlink.

2014-04-11  Mark Wielaard  <mjw@redhat.com>

	* Makefile.am (AM_CPPFLAGS): Add libdwelf.
	* libdwflP.h: Include libdwelfP.h.
	* dwfl_module_getdwarf.c (find_debuglink): Moved to libdwelf.
	(find_debuginfo): Use dwelf_elf_gnu_debuglink.

2014-04-22  Mark Wielaard  <mjw@redhat.com>

	* frame_unwind.c (__libdwfl_frame_reg_get): Use uint64_t when
	checking bits.
	(__libdwfl_frame_reg_set): Likewise.

2014-04-22  Kurt Roeckx  <kurt@roeckx.be>

	* linux-pid-attach.c: Make linux only.

2014-03-14  Mark Wielaard  <mjw@redhat.com>

	* Makefile.am: Remove !MUDFLAP and MUDFLAP conditions.
	Remove libelf and libdw definitions when MUDFLAP is defined.
	* argp-std.c (__libdwfl_argp_mudflap_options): Removed.

2014-03-03  Mark Wielaard  <mjw@redhat.com>

	* elf-from-memory.c (elf_from_remote_memory): Keep track of
	segments_end_mem. Pass memsz to first handle_segment pass. Only
	extend contents_size and use shdrs if only file bits are in
	segment.

2014-03-11  Josh Stone  <jistone@redhat.com>

	* dwfl_module_getdwarf.c (open_elf): Only explicitly set
	mod->e_type when processing the main ELF file.

2014-03-04  Mark Wielaard  <mjw@redhat.com>

	* libdwflP.h (struct __libdwfl_pid_arg): Moved here and renamed from
	linux-pid-attach.c (struct pid_arg).
	(__libdwfl_get_pid_arg): New internal function declaration.
	(__libdwfl_ptrace_attach): Likewise.
	(__libdwfl_ptrace_detach): Likewise.
	* dwfl_frame.c (dwfl_attach_state): Add "(deleted)" files to the
	special exception modules that cannot be checked at this point.
	* linux-pid-attach.c (struct pid_arg): Moved to libdwflP.h
	(ptrace_attach): Renamed to...
	(__libdwfl_ptrace_attach): New internal function.
	(__libdwfl_ptrace_detach): Likewise. Extracted from ...
	(pid_thread_detach): Call __libdwfl_ptrace_detach now.
	(__libdwfl_get_pid_arg): New internal function.
	* linux-proc-maps.c (dwfl_linux_proc_find_elf): Check if special
	module name contains "(deleted)" and dwfl_pid gives an attached
	pid. If pid is set and try to (re)use ptrace attach state of
	process before reading memory.

2014-03-03  Mark Wielaard  <mjw@redhat.com>

	* elf-from-memory.c (elf_from_remote_memory): Take pagesize as
	argument. Free buffer when detecting bad elf. Check PT_LOAD
	alignment requirements on first handle_segment pass. Calculate
	loadbase, start and end of segment using pagesize, not p_align.
	* linux-proc-maps.c (dwfl_linux_proc_find_elf): Provide pagesize
	to elf_from_remote_memory.

2014-02-26  Mark Wielaard  <mjw@redhat.com>

	* linux-proc-maps.c (proc_maps_report): Don't assert on bad input.

2014-02-26  Mark Wielaard  <mjw@redhat.com>

	* elf-from-memory.c (elf_from_remote_memory): Check against p64
	p_type in case ELFCLASS64, not against p32 p_type.

2014-01-17  Petr Machata  <pmachata@redhat.com>

	* relocate.c (relocate_section): Use gelf_fsize instead of relying
	on shdr->sh_entsize.

2014-01-05  Mark Wielaard  <mjw@redhat.com>

	* frame_unwind.c (handle_cfi): Only skip resetting return register
	if the regno is not the actual CIE return address register.

2014-01-02  Mark Wielaard  <mjw@redhat.com>

	* linux-pid-attach.c (dwfl_linux_proc_attach): Use strtol, not atoi.

2013-12-30  Mark Wielaard  <mjw@redhat.com>

	* argp-std.c (parse_opt): Call dwfl_linux_proc_attach and
	dwfl_core_file_attach explicitly.
	* core-file.c (dwfl_core_file_report): Don't call
	__libdwfl_attach_state_for_core implicitly.
	* dwfl_begin.c (dwfl_begin): Remove setting of process_attach_error.
	* dwfl_frame.c (dwfl_pid): Set errno to DWFL_E_NO_ATTACH_STATE, not
	process_attach_error.
	(dwfl_getthreads): Likewise.
	(getthread): Likewise.
	* libdwfl.h (dwfl_core_file_report): Update documentation.
	(dwfl_linux_proc_report): Likewise.
	(dwfl_core_file_attach): New function declaration.
	(dwfl_linux_proc_attach): Likewise.
	* libdwflP.h (struct Dwfl): Remove process_attach_error.
	(__libdwfl_attach_state_for_pid): Removed declaration.
	(__libdwfl_attach_state_for_core): Likewise.
	(dwfl_core_file_attach): New internal declaration.
	(dwfl_linux_proc_attach): Likewise.
	(attach_state_for_core): Renamed to...
	(dwfl_core_file_attach): ...this. Change return type.
	(__libdwfl_attach_state_for_core): Removed.
	* linux-pid-attach.c (struct pid_arg): Add assume_ptrace_stopped.
	(pid_set_initial_registers): Check assume_ptrace_stopped before
	calling ptrace.
	(pid_thread_detach): Likewise.
	(__libdwfl_attach_state_for_pid): Renamed to...
	(dwfl_linux_proc_attach): ...this. Adjust return type.
	* linux-proc-maps.c (dwfl_linux_proc_report): Don't call
	__libdwfl_attach_state_for_pid implicitly.

2013-12-28  Mark Wielaard  <mjw@redhat.com>

	* linux-proc-maps.c (dwfl_linux_proc_find_elf): Don't return special
	character device files, only regular files.

2013-12-24  Mark Wielaard  <mjw@redhat.com>

	* linux-core-attach.c (core_next_thread): Check whether thread_argp
	is NULL. Reset core_arg->thread_note_offset and malloc a thread_arg
	in that case. Free thread_arg if there are no more threads.

2013-12-23  Mark Wielaard  <mjw@redhat.com>

	* dwfl_segment_report_module.c (dwfl_segment_report_module): Free
	build_id before returning early.

2013-12-23  Mark Wielaard  <mjw@redhat.com>

	* linux-pid-attach.c (__libdwfl_attach_state_for_pid): Report actual
	pid (thread group leader) to dwfl_attach_state.

2013-12-21  Mark Wielaard  <mjw@redhat.com>

	* frame_unwind.c (handle_cfi): Track whether the return register
	has been set and only allow it to be set once.

2013-12-20  Mark Wielaard  <mjw@redhat.com>

	* dwfl_frame.c (one_arg): New struct.
	(get_one_thread_cb): New function.
	(dwfl_getthread): Likewise.
	(one_thread): New struct.
	(get_one_thread_frames_cb): New function.
	(dwfl_getthread_frames): Likewise.
	* libdwfl.h (Dwfl_Thread_Callbacks): Add get_thread function.
	(dwfl_getthread_frames): Likewise.
	* libdwflP.h (dwfl_getthread_frames): New internal function declaration.
	* linux-core-attach.c (core_thread_callbacks): Initialize get_thread
	to NULL.
	* linux-pid-attach.c (pid_getthread): New function.
	(pid_thread_callbacks): Initialize get_thread to pid_getthread.

2013-12-20  Mark Wielaard  <mjw@redhat.com>

	* linux-kernel-modules.c (report_kernel_archive): Correct nested
	asprintf result check for debug.a.

2013-12-18  Mark Wielaard  <mjw@redhat.com>

	* derelocate.c (__libdwfl_find_section_ndx): New internal function.
	* dwfl_module_addrname.c (dwfl_module_addrname): Use
	dwfl_module_addrinfo.
	* dwfl_module_addrsym.c (dwfl_module_addrsym_elf): Replace with...
	(__libdwfl_addrsym): ...this. Use __libdwfl_getsym, use value
	for comparisons, not st_value. Fill in off. Search for both value
	and the (adjusted) sym.st_value when different.
	(dwfl_module_addrsym): Implement using __libdwfl_addrsym.
	(dwfl_module_addrinfo): New function.
	* dwfl_module_getsym.c (dwfl_module_getsym_elf): Replace with...
	(__libdwfl_getsym): ...this. Use ebl_resolve_sym_value if requested
	and possible. Adjust sym->st_value only when requested. Fill in addr
	if available.
	(dwfl_module_getsym_info): New function.
	(dwfl_module_getsym): Use __libdwfl_getsym.
	* libdwfl.h (dwfl_module_getsym_elf): Removed.
	(dwfl_module_getsym_info): New function declaration.
	(dwfl_module_addrinfo): Likewise.
	(dwfl_module_addrsym): Add documentation describing differences
	with addrinfo variants.
	(dwfl_module_addrsym_elf): Removed.
	* libdwflP.h (__libdwfl_getsym): New internal function declaration.
	(__libdwfl_addrsym): Likewise.
	(__libdwfl_find_section_ndx): Likewise.
	(dwfl_module_addrinfo): New internal declaration.
	(dwfl_module_getsym_info): Likewise.
	(dwfl_module_addrsym_elf): Removed.
	(dwfl_module_getsym_elf): Likewise.

2013-12-18  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* argp-std.c (offline_find_elf): Remove.
	(offline_callbacks): Use dwfl_build_id_find_elf instead.
	* dwfl_build_id_find_elf.c (dwfl_build_id_find_elf): Move here the code
	removed above.

2013-12-18  Jan Kratochvil  <jan.kratochvil@redhat.com>

	unwinder: s390 and s390x
	* dwfl_frame_pc.c (dwfl_frame_pc): Call ebl_normalize_pc.
	* frame_unwind.c (new_unwound): New function from ...
	(handle_cfi): ... here.  Call it.
	(setfunc, getfunc, readfunc): New functions.
	(__libdwfl_frame_unwind): Call ebl_unwind with those functions.
	* linux-core-attach.c (core_set_initial_registers): Always iterate
	through the Ebl_Register_Location loop.  Call
	dwfl_thread_state_register_pc there.

2013-12-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* frame_unwind.c (handle_cfi): Call ebl_dwarf_to_regno for RA.

2013-12-17  Mark Wielaard  <mjw@redhat.com>

	* linux-pid-attach.c (pid_next_thread): Call rewinddir on first
	traversal.

2013-12-16  Mark Wielaard  <mjw@redhat.com>

	* libdwfl.h (dwfl_module_getsymtab_first_global): New function
	definition.
	* dwfl_module_getdwarf.c (dwfl_module_getsymtab_first_global): New
	function.
	* libdwflP.h (dwfl_module_getsymtab_first_global): New internal
	function definition.
	* dwfl_module_addrsym.c (dwfl_module_addrsym_elf): Use new function.

2013-12-14  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module.c (__libdwfl_module_free): Free mod->reloc_info if
	allocated. Call dwarf_cfi_end on mod->eh_cfi if necessary.
	* frame_unwind.c (handle_cfi): Free frame result from
	dwarf_cfi_addrframe when done.

2013-12-15  Jan Kratochvil  <jan.kratochvil@redhat.com>

	unwinder: ppc and ppc64
	* frame_unwind.c (__libdwfl_frame_reg_get, __libdwfl_frame_reg_set):
	Call ebl_dwarf_to_regno.
	* linux-core-attach.c (core_set_initial_registers): Implement
	pc_register support.
	* linux-pid-attach.c (pid_thread_state_registers_cb): Implement
	FIRSTREG -1.

2013-11-30  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Introduce process_attach_error.
	* dwfl_begin.c (dwfl_begin): Initialize process_attach_error.
	* dwfl_frame.c (dwfl_pid, dwfl_getthreads): Use PROCESS_ATTACH_ERROR if
	PROCESS is NULL.
	* libdwflP.h (struct Dwfl): New field process_attach_error.
	* linux-core-attach.c (__libdwfl_attach_state_for_core): Rename to ...
	(attach_state_for_core): ... here, make it static, change return type,
	no longer use __libdwfl_seterrno.
	(__libdwfl_attach_state_for_core): New wrapper for it.

2013-11-27  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_addrsym.c (dwfl_module_addrsym): Rename to and call...
	(dwfl_module_addrsym_elf): this. Add elfp and biasp arguments,
	keep track of symelf, addr_symelf, closest_elf and sizeless_elf
	instead of tracking dwfl_files.
	* dwfl_module_getsym.c (__libdwfl_module_getsym): Renamed to...
	(dwfl_module_getsym_elf): ...this. Remove dwfl_file argument, add
	new elfp and biasp arguments. Track elf instead of file.
	(dwfl_module_getsym): Call dwfl_module_getsym_elf.
	dwfl_module_info.c (dwfl_module_info): Pass elf to
	dwfl_adjusted_st_value.
	* libdwfl.h (dwfl_module_getsym): Document limitations of shndx.
	(dwfl_module_getsym_elf): New function declaration.
	(dwfl_module_addrsym_elf): Likewise.
	* libdwflP.h (dwfl_module_addrsym_elf): INTDECL.
	(dwfl_module_getsym_elf): Likewise.
	(dwfl_adjusted_st_value): Take and check elf not dwfl_file.
	(dwfl_deadjust_st_value): Likewise.
	(__libdwfl_module_getsym): Removed.
	* relocate.c (resolve_symbol): Pass elf to dwfl_adjusted_st_value.

2013-11-21  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix non-build-id core files on build-id system.
	* link_map.c (report_r_debug): Remove valid clearing if build-id cannot
	be read from memory.

2013-11-21  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwfl_segment_report_module.c (dwfl_segment_report_module): New
	variable close_elf.  Call __libdwfl_find_elf_build_id and compare the
	content, if possible.

2013-11-21  Jan Kratochvil  <jan.kratochvil@redhat.com>

	link_map: Use proper bias, not l_addr.
	* core-file.c (dynamic_vaddr_get): Rename to ...
	(__libdwfl_dynamic_vaddr_get): ... here, make it global,
	internal_function.
	(dwfl_core_file_report): Update name in the caller.
	* libdwflP.h (__libdwfl_dynamic_vaddr_get): New declaration.
	* link_map.c (report_r_debug): New variable elf_dynamic_vaddr.  Call
	__libdwfl_dynamic_vaddr_get for it.  Remove L_ADDR FIXME comment.
	Use ELF_DYNAMIC_VADDR instead of L_ADDR.

2013-11-19  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Compatibility with older kernels such as RHEL-6.
	* linux-pid-attach.c (struct pid_arg): New field tid_was_stopped.
	(ptrace_attach): New parameter tid_was_stoppedp.  Set it.
	(pid_set_initial_registers): Pass tid_was_stopped.
	(pid_thread_detach): Use tid_was_stopped.

2013-11-18  Josh Stone  <jistone@redhat.com>

	* dwfl_module_getdwarf.c (find_aux_address_sync): New function.
	(find_aux_sym): Use it.

2013-11-14  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup: Remove const in prototype
	* dwfl_frame_regs.c (dwfl_thread_state_registers): Remove const from
	firstreg.
	* libdwfl.h (dwfl_thread_state_registers): Likewise.
	* linux-pid-attach.c (pid_thread_state_registers_cb): Likewise.

2013-11-14  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix dwfl_attach_state machine->elf.
	* dwfl_frame.c (dwfl_attach_state): Change parameter machine to elf.
	Call ebl_openbackend instead of ebl_openbackend_machine.
	* libdwfl.h (dwfl_attach_state): Change parameter machine to elf.
	Update the function description.
	* linux-core-attach.c (__libdwfl_attach_state_for_core): Pass CORE to
	dwfl_attach_state.
	* linux-pid-attach.c (__libdwfl_attach_state_for_pid): Pass NULL to
	dwfl_attach_state.

2013-11-06  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Provide __libdwfl_module_getsym to get dwfl_file *.
	* dwfl_module_addrsym.c (dwfl_module_addrsym) (i_to_symfile): Remove.
	(dwfl_module_addrsym) (search_table): New variable file.  Use
	__libdwfl_module_getsym.  Use file.
	* dwfl_module_getsym.c (dwfl_module_getsym): Rename to ...
	(__libdwfl_module_getsym): ... here.  Add parameter filep.  Set it.
	(dwfl_module_getsym): New wrapper.
	* libdwflP.h (__libdwfl_module_getsym): New declaration.

2013-11-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix dwfl_module_addrsym for minidebuginfo.
	* dwfl_module_addrsym.c (dwfl_module_addrsym): New variable
	addr_symfile.
	(dwfl_module_addrsym) (same_section): Use it.
	(dwfl_module_addrsym) (i_to_symfile): New function.
	(dwfl_module_addrsym) (search_table): Use it.

2013-11-07  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Mark Wielaard  <mjw@redhat.com>

	* Makefile.am (libdwfl_a_SOURCES): Add dwfl_frame.c, frame_unwind.c,
	dwfl_frame_pc.c, linux-pid-attach.c, linux-core-attach.c and
	dwfl_frame_regs.c.
	* core-file.c (dwfl_core_file_report): Call
	__libdwfl_attach_state_for_core.
	* dwfl_end.c (dwfl_end): Call __libdwfl_process_free.
	* dwfl_frame.c: New file.
	* frame_unwind.c: New file.
	* dwfl_frame_pc.c: New file.
	* linux-pid-attach.c: New file.
	* linux-core-attach.c: New file.
	* dwfl_frame_regs.c: New file.
	* libdwfl.h (Dwfl_Thread, Dwfl_Frame): New typedefs.
	(dwfl_core_file_report, dwfl_linux_proc_report): Extend comments.
	(Dwfl_Thread_Callbacks): New definition.
	(struct ebl, dwfl_attach_state, dwfl_pid, dwfl_thread_dwfl)
	(dwfl_thread_tid, dwfl_frame_thread, dwfl_thread_state_registers)
	(dwfl_thread_state_register_pc, dwfl_getthreads, dwfl_thread_getframes)
	(dwfl_frame_pc): New declarations.
	* libdwflP.h (Dwfl_Process): New typedef.
	(LIBEBL_BAD, CORE_MISSING, INVALID_REGISTER, PROCESS_MEMORY_READ)
	(PROCESS_NO_ARCH, PARSE_PROC, INVALID_DWARF, UNSUPPORTED_DWARF)
	(NEXT_THREAD_FAIL, ATTACH_STATE_CONFLICT, NO_ATTACH_STATE, NO_UNWIND)
	(INVALID_ARGUMENT): New DWFL_ERROR entries.
	(struct Dwfl): New entry process.
	(struct Dwfl_Process, struct Dwfl_Thread, struct Dwfl_Frame)
	(__libdwfl_frame_reg_get, __libdwfl_frame_reg_set)
	(__libdwfl_process_free, __libdwfl_frame_unwind)
	(__libdwfl_attach_state_for_pid, __libdwfl_attach_state_for_core)
	(__libdwfl_segment_start, __libdwfl_segment_end): New declarations.
	(dwfl_attach_state, dwfl_pid, dwfl_thread_dwfl, dwfl_thread_tid)
	(dwfl_frame_thread, dwfl_thread_state_registers)
	(dwfl_thread_state_register_pc, dwfl_getthreads, dwfl_thread_getframes)
	(dwfl_frame_pc): New INTDECL entries.
	* linux-proc-maps.c (dwfl_linux_proc_report): Call
	__libdwfl_attach_state_for_pid.
	* segment.c (segment_start): Rename to ...
	(__libdwfl_segment_start): ... here and make it internal_function.
	(segment_end): Rename to ...
	(__libdwfl_segment_end): ... here and make it internal_function.
	(reify_segments, dwfl_report_segment): Rename them at the callers.

2013-11-07  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* core-file.c (dwfl_core_file_report): Remove the use of MAX.

2013-11-07  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* core-file.c (dwfl_core_file_report): Replaced variable sniffed by
	retval.  Fix one forgotten LISTED increase.

2013-11-07  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix core files for re-prelink-ed files.
	* core-file.c (dynamic_vaddr_get): New function.
	(dwfl_core_file_report): New variable file_dynamic_vaddr.  Call
	dynamic_vaddr_get instead of using L_ADDR.
	* libdwflP.h (struct r_debug_info_module): Remove field l_addr.
	* link_map.c (report_r_debug): Do not initialize l_addr.

2013-11-07  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* core-file.c (dwfl_core_file_report): Reindent block of code by
	continue keyword.

2013-10-30  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* argp-std.c (parse_opt): Use executable parameter of
	dwfl_core_file_report.
	* core-file.c (dwfl_core_file_report): Add parameter executable.  Set
	it to DWFL.  Add NEW_VERSION for it.
	(_compat_without_executable_dwfl_core_file_report): New.  Twice.
	* libdwfl.h (dwfl_core_file_report): Add parameter executable, update
	the function comment.

2013-10-15  Mark Wielaard  <mjw@redhat.com>

	* linux-proc-maps.c (proc_maps_report): Ignore non-absolute file
	mappings.
	(dwfl_linux_proc_find_elf): Don't abort, just return failure.

2013-09-12  Mark Wielaard  <mjw@redhat.com>

	* cu.c (intern_cu): If dwarf_offdie fails free cu.

2013-09-12  Mark Wielaard  <mjw@redhat.com>

	* linux-proc-maps.c (proc_maps_report): Don't fclose FILE in
	bad_report.

2013-09-12  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_getdwarf.c (find_symtab): Call elf_getdata with
	aux_xndxscn, not xndxscn, for aux_symxndxdata.

2013-08-25  Mark Wielaard  <mjw@redhat.com>

	* linux-kernel-modules.c (report_kernel): Pass add_p_vaddr as true
	to dwfl_report_elf.

2013-07-25  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwfl_segment_report_module.c (dwfl_segment_report_module): Check for
	conflicts all the modules, not just the first one.  Compare L_LD if it
	is equal, not if it is in a module address range.

2013-07-23  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* libdwflP.h (__libdwfl_elf_address_range): Add internal_function.

2013-07-23  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* core-file.c (clear_r_debug_info): Close also ELF and FD.
	(dwfl_core_file_report): Call __libdwfl_report_elf for
	R_DEBUG_INFO.MODULE.
	* dwfl_report_elf.c (__libdwfl_elf_address_range): New function from
	code of ...
	(__libdwfl_report_elf): ... this function.  Call it.
	* dwfl_segment_report_module.c: Include unistd.h.
	(dwfl_segment_report_module): Use basename for MODULE->NAME.
	Clear MODULE if it has no build-id and we have segment with build-id.
	Ignore this segment only if MODULE still contains valid ELF.
	* libdwflP.h (__libdwfl_elf_address_range): New declaration.
	(struct r_debug_info_module): New fields fd, elf, l_addr, start, end
	and disk_file_has_build_id.
	(dwfl_link_map_report): Extend the comment.
	* link_map.c (report_r_debug): Extend the comment.  Always fill in new
	r_debug_info_module.  Initialize also the new r_debug_info_module
	fields.  Remove one FIXME comment.  Call __libdwfl_elf_address_range
	instead of __libdwfl_report_elf when R_DEBUG_INFO is not NULL.

2013-07-19  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* libdwflP.h (__libdwfl_find_elf_build_id): Add internal_function.

2013-07-02  Mark Wielaard  <mjw@redhat.com>

	* relocate.c (__libdwfl_relocate_value): Remove mod->e_type assert.

2013-06-05  Mark Wielaard  <mjw@redhat.com>

	* link_map.c (report_r_debug): Always call release_buffer after
	memory_callback succeeded reading build_id.

2013-05-30  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* argp-std.c (parse_opt) <ARGP_KEY_SUCCESS> <opt->core> <opt->e>: Set
	executable_for_core before calling dwfl_core_file_report.
	* core-file.c (clear_r_debug_info): New function.
	(dwfl_core_file_report): Move raw segments reporting lower.  New
	variable r_debug_info, pass it to dwfl_segment_report_module.  Call
	clear_r_debug_info in the end.  Return sum of LISTED and SNIFFED.
	* dwfl_module_build_id.c (check_notes): Move into
	__libdwfl_find_elf_build_id.
	(__libdwfl_find_build_id): Rename to ...
	(__libdwfl_find_elf_build_id): ... here.  Add parameters build_id_bits,
	build_id_elfaddr and build_id_len.  Verify MOD vs. ELF.
	(__libdwfl_find_elf_build_id) (check_notes): Remove parameters mod and
	set, rename data_vaddr to data_elfaddr.  Do not call found_build_id.
	(__libdwfl_find_elf_build_id): Update the check_notes caller, do not
	adjust its data_elfaddr parameter.
	(__libdwfl_find_build_id): New wrapper of __libdwfl_find_elf_build_id.
	* dwfl_segment_report_module.c (dwfl_segment_report_module): New
	parameter r_debug_info.  New variable name_is_final.  Adjust addresses
	according to R_DEBUG_INFO->MODULE.  Check conflicts against DWFL.
	Do not overwrite NAME by SONAME if NAME_IS_FINAL.
	* libdwflP.h (__libdwfl_find_elf_build_id): New declaration.
	(struct r_debug_info_module, struct r_debug_info): New definitions.
	(dwfl_segment_report_module, dwfl_link_map_report): Add parameter
	r_debug_info.
	* link_map.c: Include fcntl.h.
	(report_r_debug): Add parameter r_debug_info, describe it in the
	function comment.  Delete dwfl_addrmodule call and its dependent code.
	Verify build-id before calling dwfl_report_elf, also supply
	executable_for_core to it.  Store r_debug_info->module info when
	appropriate.
	(dwfl_link_map_report): Add parameter r_debug_info.  New variable
	in_ok.  Try to read IN from EXECUTABLE_FOR_CORE.  Update report_r_debug
	caller parameters.

2013-04-30  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwfl_report_elf.c (__libdwfl_report_elf): Add parameter add_p_vaddr.
	Set it to true for ET_EXEC and ET_CORE.  Provide alternative
	setup of START and BIAS if !ADD_P_VADDR.  Set END from BIAS, not BASE.
	(dwfl_report_elf): Add parameter add_p_vaddr.  Pass it down.  Add
	NEW_VERSION.
	(_compat_without_add_p_vaddr_dwfl_report_elf) <SHARED>: New, with
	COMPAT_VERSION.
	* libdwfl.h (dwfl_report_elf): Add parameter add_p_vaddr.  Describe it.
	* libdwflP.h (__libdwfl_report_elf): Add parameter add_p_vaddr.
	* link_map.c (report_r_debug): Use true add_p_vaddr for dwfl_report_elf.
	* linux-kernel-modules.c (report_kernel): Use false add_p_vaddr for
	dwfl_report_elf.
	* offline.c (process_elf): Use true add_p_vaddr for dwfl_report_elf.

2013-04-27  Mark Wielaard  <mjw@redhat.com>

	* link_map.c: #include system.h.

2013-04-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* link_map.c (BE32, BE64, LE32, LE64): Delete the definitions, move
	them to lib/system.h.

2013-04-24  Mark Wielaard  <mjw@redhat.com>

	* Makefile.am: Use AM_CPPFLAGS instead of INCLUDES.

2013-03-20  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwfl_report_elf.c (__libdwfl_report_elf): Remove BASE aligning.

2013-03-12  Mark Wielaard  <mjw@redhat.com>

	* dwfl_getsrclines.c (dwfl_getsrclines): Return 0 on success.

2013-02-22  Mark Wielaard  <mjw@redhat.com>

	* open.c (__libdw_gunzip,__libdw_bunzip2,__libdw_unlzma): Define
	as DWFL_E_BADELF when not used.

2013-02-10  Mark Wielaard  <mjw@redhat.com>

	* argp-std.c (parse_opt): Use opt->core and opt->e explicitly in
	failure messages When handling ARGP_KEY_SUCCESS because arg will
	not have been set.

2013-01-30  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linux-proc-maps.c: Include system.h.
	(PROCEXEFMT, get_pid_class): New.
	(grovel_auxv): Detect 32-bit vs. 64-bit auxv, possibly call
	get_pid_class.

2013-01-23  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_getdwarf.c (find_aux_sym): Don't substract one
	from aux_syments by default.
	(find_symtab): Also succeed when only aux_symdata is found.
	When no symtab is found always try to load auxiliary table.
	(dwfl_module_getsymtab): Substract one from result when both
	tables have symbols.
	* dwfl_module_getsym.c (dwfl_module_getsym): Only skip auxiliary
	zero entry when both tables have symbols.
	* dwfl_module_addrsym.c (dwfl_module_addrsym): Only substract
	one from first_global when both tables have symbols.

2013-01-16  Mark Wielaard  <mjw@redhat.com>

	* libdwflP.h (struct Dwfl_Module): Add aux_sym, aux_symdata,
	aux_syments, aux_symstrdata, aux_symxndxdata and aux_first_global.
	(dwfl_adjusted_aux_sym_addr): New function.
	(dwfl_deadjust_aux_sym_addr): Likewise.
	(dwfl_adjusted_st_value): Take and check symfile argument.
	(dwfl_deadjust_st_value): Likewise.
	* dwfl_module_getdwarf.c (find_prelink_address_sync): Take and
	use dwfl_file as argument to set address_sync.
	(find_debuginfo): Call find_prelink_address_sync with debug file.
	(find_aux_sym): New function.
	(find_symtab): Use find_aux_sym if all we have is the dynsym table
	and fill in aux DwflModule fields.
	(dwfl_module_getsymtab): Return syments plus aux_syments.
	(load_symtab): Always set first_global.
	* dwfl_module_addrsym.c (dwfl_module_addrsym): Check symfile
	when using same_section. Calculate first_global based on both
	mod->first_global and mod->aux_first_global.
	* dwfl_module.c (__libdwfl_module_free): Free aux_sym.
	* dwfl_module_getsym.c (dwfl_module_getsym): Use auxsym table
	to retrieve symbol and name if necessary, making sure all locals
	from any table come before any globals.
	* dwfl_module_info.c (dwfl_module_info): Call dwfl_adjusted_st_value
	with symfile.
	* relocate.c (resolve_symbol): Likewise.

2013-01-07  Roland McGrath  <roland@hack.frob.com>

	* link_map.c (auxv_format_probe): Handle unaligned 64-bit data, but
	still assume the data is at least 32-bit aligned anyway.
	(dwfl_link_map_report): Handle unaligned auxv data.

2012-12-11  Mark Wielaard  <mjw@redhat.com>

	* linux-kernel-modules.c (report_kernel): Only free fname if
	find_kernel_elf succeeds and allocates it.
	(report_kernel_archive): Fix brackets around unlikely expression.

2012-11-29  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* argp-std.c: Update Copyright year.
	(offline_find_elf): New function.
	(offline_callbacks): Use it for find_elf.
	(struct parse_opt): New.
	(parse_opt): New key ARGP_KEY_INIT.  In other make hook struct
	parse_opt pointer from former Dwfl pointer.  Delay 'e and OPT_COREFILE
	processing till ARGP_KEY_SUCCESS.  Initialize state->input already from
	ARGP_KEY_SUCCESS.  Modify the cleanup in ARGP_KEY_ERROR.  Make the
	final state->input initialization optional.
	* dwfl_end.c: Update Copyright year.
	(dwfl_end): Free executable_for_core.
	* libdwflP.h: Update Copyright year.
	(struct Dwfl): New field executable_for_core.

2012-11-20  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwfl_report_elf.c (__libdwfl_report_elf): Simplify START and BIAS
	calculation.

2012-10-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwfl_module_getdwarf.c (mod_verify_build_id): New function with code
	from ...
	(__libdwfl_getelf): ... here.  Call it.

2012-10-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* libdwfl.h (dwfl_module_getelf): Add __nonnull_attribute__.

2012-10-10  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwfl_segment_report_module.c (dwfl_segment_report_module):
	Initialize mod->MAIN_BIAS.

2012-10-10  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwfl_module_addrsym.c (dwfl_module_addrsym): New function
	binding_value.  Use it for both zero and non-zero size symbols
	comparisons.

2012-10-01  Mark Wielaard  <mjw@redhat.com>

	* cu.c (cudie_offset): Don't use type_sig8, it might not be
	initialized and these are always real CUs, never TUs.

2012-10-01  Mark Wielaard  <mjw@redhat.com>

	* derelocate.c (find_section): Check next section exists before
	accessing it.

2012-08-01  Petr Machata  <pmachata@redhat.com>

	* offline.c (process_archive_member): Ignore entry "/SYM64/".

2012-03-28  Roland McGrath  <roland@hack.frob.com>

	* dwfl_segment_report_module.c
	(dwfl_segment_report_module: read_portion): Don't use existing buffer
	when FILESZ is zero (string mode) and available portion doesn't hold
	a terminated string.

2011-12-02  Roland McGrath  <roland@hack.frob.com>

	* elf-from-memory.c (elf_from_remote_memory): Fix ELFCLASS64 case
	to use elf64_xlatetom and PHDRS.p64.
	Reported by Serge Pavlov <serge.pavlov.at.gnu@gmail.com>.

2011-11-31  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_addrsym.c (dwfl_module_addrsym): First search all
	global symbols. Then only when that doesn't provide a match search
	all local symbols too.
	* dwfl_module_getdwarf.c (load_symtab): Take first_global int arg
	and fill it in.
	(find_symtab): Initialize mod->first_global and pass it to load_symtab.
	* libdwfl/libdwflP.h (Dwfl_Module): Add first_global field.

2011-11-31  Mark Wielaard  <mjw@redhat.com>

	* dwfl_module_addrsym.c (dwfl_module_addrsym): Only update
	sizeless_sym if needed and closer to desired addr.

2011-10-20  Mark Wielaard  <mjw@redhat.com>

	* derelocate.c (cache_sections): Intern mod->reloc_info check.
	(dwfl_module_relocations): Don't check mod->reloc_info.
	(dwfl_module_relocation_info): Likewise.
	(find_section): Likewise.

2011-07-09  Roland McGrath  <roland@hack.frob.com>

	* image-header.c (LE32): Macro removed (now in lib/system.h).

2011-04-11  Mark Wielaard  <mjw@redhat.com>

	* linux-kernel-modules.c (vmlinux_suffixes): Guard definition
	by check for zlib, bzlib or lzma defines to check it isn't empty.
	(try_kernel_name): Use same guard for use of vmlinux_suffixes.

2011-03-08  Roland McGrath  <roland@redhat.com>

	* dwfl_module_getdwarf.c (open_elf): Clear errno before CBFAIL.
	Reported by Kurt Roeckx <kurt@roeckx.be>.

2011-02-11  Roland McGrath  <roland@redhat.com>

	* linux-kernel-modules.c (try_kernel_name): Try .gz, .bz2, .xz
	suffixes if corresponding decompression support is enabled.

2011-02-01  Roland McGrath  <roland@redhat.com>

	* dwfl_module_getdwarf.c (find_prelink_address_sync): Use the
	section-end address as the synchronization point, rather than sh_addr.

	* dwfl_module_getdwarf.c (find_prelink_address_sync): Discover
	PT_INTERP p_vaddr separately from main phdrs and undo phdrs.

	* dwfl_module_getdwarf.c (find_prelink_address_sync): Fix pasto in
	last change, so we recognize PT_INTERP in ELFCLASS64 correctly.

2011-01-11  Roland McGrath  <roland@redhat.com>

	* dwfl_module_getdwarf.c (open_elf): Remove section-based
	address_sync fixup from here.
	(find_prelink_address_sync): New function.
	(find_debuginfo): Call it.
	* libdwflP.h (DWFL_ERRORS): Add BAD_PRELINK error.

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

	* dwfl_module_getdwarf.c (open_elf): Enhance address_sync calculation
	logic to consider section addresses, the better to survive all the
	possible prelink machinations.
	* libdwflP.h (struct dwfl_file): Comment change.

2010-11-30  Roland McGrath  <roland@redhat.com>

	* derelocate.c (dwfl_module_relocations): Remove over-eager assert.

2010-11-12  Roland McGrath  <roland@redhat.com>

	* libdwflP.h (struct Dwfl_Module): New member main_bias.
	(dwfl_adjusted_address, dwfl_deadjust_address): Use it.
	* dwfl_module_getdwarf.c (__libdwfl_getelf): Initialize it.

	* libdwflP.h (dwfl_deadjust_address): New function.
	(dwfl_deadjust_dwarf_addr, dwfl_deadjust_st_value): New functions.
	* cu.c (addrarange): Use dwfl_deadjust_dwarf_addr.
	* dwfl_module_addrsym.c: Use dwfl_deadjust_st_value.

2010-11-11  Roland McGrath  <roland@redhat.com>

	* libdwflP.h (struct dwfl_file): Remove bias member.
	Add vaddr and address_sync members instead.
	(dwfl_adjusted_address): Calculate using vaddr.
	(dwfl_adjusted_dwarf_addr): Calculate using address_sync and call that.
	(dwfl_adjusted_st_value): Use one of those calls.
	* dwfl_module_getdwarf.c (open_elf): Initialize vaddr and address_sync.
	* dwfl_segment_report_module.c (dwfl_segment_report_module): Likewise.
	* derelocate.c (dwfl_module_relocations): Update ET_EXEC assertions.
	* link_map.c (consider_executable): Adjust only MOD->low_addr for
	detected PIE bias change.

	* libdwflP.h (dwfl_adjusted_dwarf_addr): New function.
	* dwfl_module_info.c: Use it.
	* cu.c (addrarange): Likewise.
	* dwfl_dwarf_line.c: Likewise.
	* dwfl_module_dwarf_cfi.c: Likewise.
	* dwfl_lineinfo.c: Likewise.
	* dwfl_nextcu.c: Likewise.
	* dwfl_module_getdwarf.c (dwfl_module_getdwarf): Likewise.

	* libdwflP.h (dwfl_adjusted_st_value): New function.
	* relocate.c (resolve_symbol): Use it.
	* dwfl_module_getsym.c: Likewise.
	* dwfl_module_addrsym.c: Likewise.
	* dwfl_module_info.c: Likewise.

	* libdwflP.h (dwfl_adjusted_address): New function.
	* dwfl_module_build_id.c (__libdwfl_find_build_id): Use it.
	* relocate.c (__libdwfl_relocate_value): Likewise.
	* derelocate.c (cache_sections): Likewise.
	(dwfl_module_address_section): Likewise.
	* dwfl_module_getelf.c: Likewise.
	* dwfl_module_eh_cfi.c: Likewise.
	* link_map.c (consider_executable): Likewise.

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

	* dwfl_dwarf_line.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.

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

	* link_map.c (report_r_debug): Use found name if we have no name,
	even if we already have an Elf handle.

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

	* linux-kernel-modules.c (dwfl_linux_kernel_find_elf): Don't be
	confused by -1 return from dwfl_build_id_find_elf after it opened
	the Elf handle.
	* find-debuginfo.c (dwfl_standard_find_debuginfo): Likewise for
	dwfl_build_id_find_debuginfo.

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

	* cu.c (cudie_offset): Use DIE_OFFSET_FROM_CU_OFFSET macro.

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

	* find-debuginfo.c (try_open): Take new arg MAIN_STAT.  Compare
	candidate file to that st_dev/st_ino and pretend it didn't exist
	if they match.
	(find_debuginfo_in_path): Update caller, pass main file's info.

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

	* linux-proc-maps.c (find_sysinfo_ehdr): Renamed to ...
	(grovel_auxv): ... this.  Take DWFL argument.
	(dwfl_linux_proc_report): Update caller.

	* dwfl_module_getdwarf.c (open_elf): Calculate alignment for bias
	based on dwfl->segment_align or manifest alignment of MOD->low_addr.

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

	* linux-kernel-modules.c (intuit_kernel_bounds): Rewritten.

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

	* segment.c (insert): Clear inserted elements of DWFL->lookup_module.

	* libdwflP.h (DWFL_ERRORS): Add WRONG_ID_ELF.
	* dwfl_build_id_find_elf.c: Set MOD->main.valid when there is a build
	ID but we didn't find a file.
	* dwfl_module_getdwarf.c (__libdwfl_getelf): When that's set, check
	and refuse any fallback file-by-name if it lacks the matching ID.

	* dwfl_error.c (dwfl_errno): Add INTDEF.
	* libdwflP.h: Add INTDECL.

	* dwfl_module_getdwarf.c (open_elf): Do elf_end and clear FILE->elf in
	failure cases.

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

	* dwfl_segment_report_module.c: Use "[pie]" rather than "[dso]" for an
	ET_DYN that has a DT_DEBUG.

	* dwfl_segment_report_module.c: Fix jump-start of NDX-finding loop.

	* segment.c (insert): Fix moving of values following insertion.
	(reify_segments): Fix up MOD->segment backpointer indices after
	later insertions in the main loop invalidate them.

	* link_map.c (dwfl_link_map_report): Detect bias of embedded phdrs and
	apply it to PT_DYNAMIC p_vaddr so we handle a PIE correctly.

	* core-file.c (dwfl_core_file_report): Return any nonzero count of
	modules reported, even if link_map grovelling failed and only sniffing
	found anything.

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

	* relocate.c (relocate_section): Treat R_*_NONE reloc as no reloc.
	Works around probably-wrong ld -r behavior for case of a DWARF address
	constant that refers to a discarded SHF_ALLOC section.

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

	* link_map.c (report_r_debug): Limit iterations on the l_next chain to
	an upper bound on sane possible number of elements.

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

	* link_map.c (auxv_format_probe): Fix scanning loop, so we really scan
	the second half for 32-bit matches.

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

	* core-file.c (dwfl_core_file_report): Punt EHDR argument.
	* argp-std.c (parse_opt): Update caller.
	* libdwfl.h: Declare dwfl_core_file_report.
	* libdwflP.h: Don't.

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

	* dwfl_segment_report_module.c (addr_segndx): Take new flag argument.
	If set, find the first index not below ADDR.
	(dwfl_segment_report_module): Update callers.
	Pass true when calculating return value.

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

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

	* find-debuginfo.c (find_debuginfo_in_path): Fix uninitialized
	variable in failure path.

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

	* dwfl_module_dwarf_cfi.c (dwfl_module_dwarf_cfi): Always set bias.
	* dwfl_module_eh_cfi.c (dwfl_module_eh_cfi): Likewise

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

	* core-file.c (dwfl_core_file_report): Use elf_getphdrnum.
	* dwfl_module_build_id.c (__libdwfl_find_build_id): Likewise.
	* dwfl_module_getdwarf.c (open_elf, find_dynsym): Likewise.
	* dwfl_report_elf.c (__libdwfl_report_elf): Likewise.

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

	* relocate.c (relocate_getsym): For SHN_COMMON, zero st_value.
	(relocate_section): Let unresolved SHN_COMMON symbol stay 0.

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

	* relocate.c (relocate_section): Skip SHT_NOBITS or empty target scn.

2009-11-12  Petr Machata  <pmachata@redhat.com>

	* core-file.c (dwfl_elf_phdr_memory_callback): Only load ahead if
	the chunk is both offset-contiguous and vaddr-contiguous.

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

	* link_map.c (report_r_debug): Skip entries with l_ld==0.
	Use dwfl_addrmodule for l_ld lookup, don't bail on lookup failure.

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

	* image-header.c (__libdw_image_header): Fix tranposed comparison.

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

	* image-header.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.
	* libdwflP.h: Declare __libdw_image_header.
	* open.c (decompress): Don't consume ELF on failure.
	(what_kind): New function, broken out of ...
	(__libdw_open_file): ... here.  Call it.
	If it fails, try __libdw_image_header and then try what_kind again.

	* gzip.c (unzip): Reuse *WHOLE as first INPUT_BUFFER,
	leave it behind for next decompressor.
	* open.c (decompress): Free BUFFER on failure.

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

	* gzip.c (find_zImage_payload): New function, broken out of ...
	(mapped_zImage): ... here.  Call it.
	(find_zImage_payload) [LZMA]: Match LZMA-compressed kernels with
	stupid method of just trying the decoder.

	* open.c [USE_LZMA]: Try __libdw_unlzma.
	* libdwflP.h: Declare it.
	(DWFL_ERRORS): Add DWFL_E_LZMA.
	* gzip.c [LZMA]: Implement liblzma version for XZ file format.
	* lzma.c: New file.
	* Makefile.am [LZMA] (libdwfl_a_SOURCES): Add it.

	* gzip.c (mapped_zImage): Limit scan to 32kb.
	Make this unconditional, support bzip2 kernel images too.
	(unzip): Use direct inflate method for non-mmap case too.
	Only zlib uses the stream method.

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

	* dwfl_module_build_id.c: Use new macros for versioned definitions.

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

	* dwfl_module_dwarf_cfi.c: New file.
	* dwfl_module_eh_cfi.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add them.
	* libdwflP.h (struct Dwfl_Module): New members `dwarf_cfi', `eh_cfi.
	Add INTDECL for dwfl_module_eh_cfi, dwfl_module_dwarf_cfi.

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

	* libdwflP.h (struct Dwfl_Module): Reorder members to pack better.

2009-06-18  Mark Wielaard  <mjw@redhat.com>

	* dwfl_report_elf.c (__libdwfl_report_elf): Return NULL on overlap.

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

	* derelocate.c: Don't use deprecated libelf functions.
	* dwfl_module_getdwarf.c: Likewise.
	* relocate.c: Likewise.

2009-04-23  Ulrich Drepper  <drepper@redhat.com>

	* dwfl_module_build_id.c: Define versioned symbols only if SHARED is
	defined.  Otherwise just define the latest version.

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

	* relocate.c (resolve_symbol): Apply correct bias to st_value found in
	a non-ET_REL module.

	* dwfl_module_build_id.c (__libdwfl_find_build_id): Fix last change to
	adjust properly for non-ET_REL.

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

	* dwfl_module_getsym.c: Apply non-ET_REL bias only if SHF_ALLOC.

	* relocate.c (__libdwfl_relocate_value): Assert that MOD is ET_REL.
	* derelocate.c (cache_sections): Call __libdwfl_relocate_value only
	for ET_REL.
	* dwfl_module_build_id.c (__libdwfl_find_build_id): Likewise.

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

	* dwfl_module_getdwarf.c (__libdwfl_getelf): Add internal_function.

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

	* dwfl_module_getdwarf.c (find_file): Renamed to ...
	(__libdwfl_getelf): ... this.  Make it global.
	(find_symtab, find_dw): Update callers.
	(dwfl_module_getelf): Functions moved ...
	* dwfl_module_getelf.c: ... here, new file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.
	* libdwflP.h: Declare __libdwfl_getelf.

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

	* dwfl_segment_report_module.c: Handle DT_STRTAB value being either
	absolute (already adjusted in place) or needing load bias adjustment.

	* core-file.c (dwfl_elf_phdr_memory_callback): Fix return value for
	gelf_getphdr failure.  Fix file size limit checks.

	* dwfl_segment_report_module.c: Fix underflow in DYNSTRSZ check.

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

	* dwfl_module_getsym.c: Don't adjust for bias again after
	__libdwfl_relocate_value.

	* relocate.c (__libdwfl_relocate_value): Don't adjust a value from
	a non-SHF_ALLOC section.
	(relocate_getsym): Test st_shndx for SHN_* values, not *SHNDX.
	* dwfl_module_getsym.c (dwfl_module_getsym): Likewise.

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

	* dwfl_module_build_id.c (__libdwfl_find_build_id): Move SHSTRNDX
	variable to outer scope, so we cache it for the loop.

	* relocate.c (__libdwfl_relocate_value): Add MOD->main.bias to sh_addr.

2009-02-12  Roland McGrath  <roland@redhat.com>

	* dwfl_module_build_id.c (__libdwfl_find_build_id): Use
	__libdwfl_relocate_value to find correct sh_addr value.

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

	* dwfl_report_elf.c (__libdwfl_report_elf): Take new arg SANITY.
	If false, don't fail for NO_PHDR.
	(dwfl_report_elf): Update caller.
	* libdwflP.h: Update decl.
	* offline.c (process_elf): Call it with false, so we don't refuse
	dubiously-formed objects here.

	* link_map.c (consider_executable): Don't assert dwfl_addrsegment
	finds our module.  We shouldn't crash when we confuse some guesses.

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

	* open.c (decompress): Avoid crash with empty input file.

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

	* dwfl_report_elf.c (__libdwfl_report_elf): Ignore trailing PT_LOAD
	with zero vaddr and memsz.

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

	* open.c (decompress): Move BUFFER, SIZE decls outside #if.

	* dwfl_segment_report_module.c (addr_segndx): Remove bogus adjustments
	after address-matching loop.

	* segment.c (lookup): Fix fencepost in checking for HINT match.

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

	* gzip.c [!BZLIB] (mapped_zImage): New function.
	(unzip) [!BZLIB]: Grok Linux kernel zImage format.

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

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

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

	* linux-kernel-modules.c (dwfl_linux_kernel_report_offline):
	Skip subdirectory named "source".
	(dwfl_linux_kernel_find_elf): Likewise.

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

	* linux-kernel-modules.c (check_suffix): New function.
	Match ".ko", ".ko.gz", and ".ko.bz2" suffixes.
	(dwfl_linux_kernel_report_offline): Use it.
	(dwfl_linux_kernel_find_elf): Likewise.

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

	* argp-std.c (parse_opt): Use __libdw_open_file for core file.
	* dwfl_build_id_find_debuginfo.c: Use it to open the file.
	* dwfl_build_id_find_elf.c: Likewise.
	* dwfl_module_getdwarf.c (open_elf): Likewise.
	* dwfl_report_elf.c: Likewise.
	* find-debuginfo.c (validate): Likewise.
	* offline.c (__libdwfl_report_offline): Likewise.

	* libdwflP.h: Declare __libdw_open_file.
	* open.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.

	* gzip.c: New file.
	* Makefile.am [ZLIB] (libdwfl_a_SOURCES): Add it.
	* bzip2.c: New file.
	* Makefile.am [BZLIB] (libdwfl_a_SOURCES): Add it.
	* libdwflP.h: Declare __libdw_gunzip, __libdw_bunzip2.

2008-12-16  Roland McGrath  <roland@redhat.com>

	* dwfl_module_build_id.c (dwfl_module_build_id): Define with alias and
	symver magic to bind to ELFUTILS_0.138.
	(_BUG_COMPAT_dwfl_module_build_id): New function, bug compatible
	wrapper for ELFUTILS_0.130 version set.

2008-12-18  Roland McGrath  <roland@redhat.com>

	* derelocate.c (dwfl_module_relocate_address): Fix last fix: ET_DYN
	addresses are taken as relative to MOD->low_addr.

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

	* derelocate.c (dwfl_module_relocate_address): Apply main.bias, not
	debug.bias.

2008-12-11  Roland McGrath  <roland@redhat.com>

	* offline.c (process_archive): Don't call elf_end and close if
	returning NULL.  Check first elf_begin call and set error code
	specially for empty archive.
	Fixes RHBZ#465878.

2008-12-02  Roland McGrath  <roland@redhat.com>

	* dwfl_getmodules.c (dwfl_getmodules): Typo fix in last change.

2008-11-26  Roland McGrath  <roland@redhat.com>

	* dwfl_getmodules.c (dwfl_getmodules): Encode iteration style in
	return value, and interpret encoded OFFSET argument.

2008-10-07  Roland McGrath  <roland@redhat.com>

	* dwfl_module_build_id.c (check_notes): Fix typo in vaddr calculation.

2008-09-29  Roland McGrath  <roland@redhat.com>

	* segment.c (insert): Must realloc DWFL->lookup_module here too.
	(dwfl_report_segment): Clear DWFL->lookup_module before insert calls.

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

	* segment.c (reify_segments): Fix last change.

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

	* linux-proc-maps.c (read_proc_memory): Return 0 for EINVAL or EPERM
	failure from pread64.

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

	* segment.c (reify_segments): Insert a trailing segment for a module
	end that is above the highest current segment.

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

	* dwfl_module_getdwarf.c (open_elf): Extract elf_errno () for
	coded return value, not plain DWFL_E_LIBELF.  Return DWFL_E_BADELF
	if FILE->elf is not ELF_K_ELF.

	* dwfl_segment_report_module.c: Add a cast.

2008-08-21  Denys Vlasenko  <dvlasenk@redhat.com>

	* dwfl_module_addrsym.c (dwfl_module_addrsym): Improve logic
	which decides which symbol is "closest" to a given address.

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

	* argp-std.c (offline_callbacks): Use dwfl_build_id_find_elf.
	(options, parse_opt): Handle --core.

	* core-file.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.
	* libdwflP.h (dwfl_core_file_report): Declare it.

	* link_map.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.
	* libdwflP.h (dwfl_link_map_report): Declare it.

	* libdwflP.h (MIN, MAX): New macros.
	(Dwfl_Memory_Callback): New typedef.
	(Dwfl_Module_Callback): New typedef.
	(dwfl_segment_report_module): Declare it.
	* dwfl_segment_report_module.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.

	* derelocate.c (dwfl_module_address_section): Add INTDEF.
	* libdwflP.h: Add INTDECL.

	* segment.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.
	* libdwfl.h: Declare dwfl_addrsegment, dwfl_report_segment.
	* libdwflP.h (struct Dwfl): New members lookup_elts, lookup_alloc,
	lookup_addr, lookup_module, lookup_segndx, replace removed members
	modules, nmodules.
	(struct Dwfl_Module): New member segment.
	* dwfl_end.c (dwfl_end): Free the new ones.  Iterate via modulelist
	to each free module.
	* dwfl_module.c (dwfl_report_begin_add): Do nothing.
	(dwfl_report_begin): Don't call it.  Truncate the segment table instead.
	(dwfl_report_module): Don't touch DWFL->nmodules.
	(dwfl_report_end): Don't touch DWFL->modules and DWFL->nmodules.
	(compare_modules): Function removed.
	* dwfl_getmodules.c: Rewritten.
	Add INTDEF.
	* libdwflP.h: Add INTDECLs.
	* dwfl_getdwarf.c: Rewritten to call dwfl_getmodules.
	* dwfl_addrmodule.c: Rewritten to just call dwfl_addrsegment.

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

	* linux-kernel-modules.c: Include <fts.h> before <config.h>.

2008-07-17  Roland McGrath  <roland@redhat.com>

	* dwfl_build_id_find_elf.c (__libdwfl_open_by_build_id): Set errno to
	zero if the failure was only ENOENT.

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

	* dwfl_module_addrsym.c (dwfl_module_addrsym): Exclude undefined
	symbols.

2008-05-22  Petr Machata  <pmachata@redhat.com>

	* dwfl_module_getdwarf.c (open_elf): Bias of ET_EXEC files is always 0.

2008-05-06  Roland McGrath  <roland@frob.com>

	* linux-kernel-modules.c (dwfl_linux_kernel_report_offline): Use
	FTS_LOGICAL here too.
	(dwfl_linux_kernel_find_elf): Likewise.

2008-04-29  Roland McGrath  <roland@redhat.com>

	* find-debuginfo.c (dwfl_standard_find_debuginfo): Try path search
	based on canonicalize_file_name if it differs from the supplied name.

	* linux-kernel-modules.c (check_module_notes): Use FTS_LOGICAL so
	we accept symlinks.

2008-04-27  Roland McGrath  <roland@redhat.com>

	* linux-kernel-modules.c (report_kernel): Fix crash when
	dwfl_report_elf fails.

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

	* linux-proc-maps.c (proc_maps_report): Don't leak LAST_FILE.

	* dwfl_module_getdwarf.c (find_file): Always free build_id_bits.
	Clear it after freeing.
	* dwfl_module_report_build_id.c (dwfl_module_report_build_id): Likewise.

2008-03-26  Roland McGrath  <roland@redhat.com>

	* dwfl_module_getdwarf.c (load_symtab): Don't return success for
	SHT_DYNSYM, just set *SYMSCN like the comment says.

	* dwfl_end.c (dwfl_end): Iterate on modulelist chain, not modules array.

	* argp-std.c (parse_opt): On failure, call dwfl_end before argp_failure.

2008-03-19  Roland McGrath  <roland@redhat.com>

	* dwfl_module_getsrc.c: Adjust address for module bias before search.

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

	* libdwflP.h (__libdwfl_seterrno): Remove parameter name from
	prototype to avoid older compiler's complaint about reuse of the name.
	(__libdwfl_canon_error): Likewise.

2008-02-19  Roland McGrath  <roland@redhat.com>

	* relocate.c (relocate_section): Check for an unhandled relocation
	type before resolving a reloc's symbol.  Lift DWFL_E_BADRELTYPE ->
	DWFL_E_UNKNOWN_MACHINE check out of loops.

	* dwfl_module_getdwarf.c (load_dw): Skip relocation if
	DEBUGFILE->relocated is already set.

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

	* dwfl_module_getdwarf.c (open_elf): Open FILE->name if it's non-null.

	* dwfl_build_id_find_elf.c (__libdwfl_open_by_build_id): Don't clear
	incoming *FILE_NAME at the start.

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

	* Makefile.am (euinclude): Variable removed.
	(pkginclude_HEADERS): Set this instead of euinclude_HEADERS.

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

	* linux-kernel-modules.c (report_kernel_archive): Reorder the kernel
	module to appear first.

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

	* offline.c (process_archive_member): Take FD argument, pass it down
	to process_file.  Return Elf_Cmd, not bool.
	Call elf_next here, always before elf_end.
	(process_archive): Update caller.  Don't close FD here unless there
	are no member refs.

	* dwfl_module.c (free_file): Close fd only when elf_end returns zero.

	* libdwflP.h (struct dwfl_file): New bool member `relocated'.
	* dwfl_module_getdwarf.c (dwfl_module_getelf): For ET_REL, apply
	partial relocation to one or both files.
	(dwfl_module_getdwarf): For ET_REL, make sure extra sections'
	relocations have been applied to the debug file if dwfl_module_getelf
	has been used before.

	* relocate.c (resolve_symbol): New function.
	(relocate_section): Call it.

	* relocate.c (relocate_getsym): Handle null MOD->symfile.
	(relocate_section): Take new bool arg, PARTIAL.  If true,
	no error for BADRELTYPE/RELUNDEF, instead just skip them
	and leave only those skipped relocs behind the reloc section.
	(__libdwfl_relocate_section): Take new arg, pass it down.
	(__libdwfl_relocate): Take new bool arg, DEBUG.  If false,
	do partial relocation on all sections.
	* dwfl_module_getdwarf.c (load_dw): Update caller.
	* libdwflP.h: Update decls.
	* derelocate.c (dwfl_module_address_section): Pass new argument
	to __libdwfl_relocate_section, true.

	* derelocate.c (cache_sections): Don't cache reloc sections when
	section_address callback is null.

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

	* relocate.c (relocate_section): Fix fencepost error in r_offset check.

	* derelocate.c (struct dwfl_relocation): Add member `relocs'.
	(struct secref): Likewise.
	(cache_sections): Cache the relocation section referring to each
	section we cache, if any.
	(dwfl_module_address_section): Use __libdwfl_relocate_section as
	necessary.

	* relocate.c (struct reloc_symtab_cache): New type.
	(relocate_getsym): Use it instead of four arguments.
	(__libdwfl_relocate): Update caller.
	(relocate_section): New function, broken out of ...
	(__libdwfl_relocate): ... here.
	(__libdwfl_relocate_section): New function.
	* libdwflP.h: Declare it.

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

	* dwfl_module_getsym.c (dwfl_module_getsym): Apply MOD->symfile->bias
	to relocated st_value.

	* dwfl_report_elf.c (__libdwfl_report_elf): Align initial BASE for
	ET_REL to 0x100.

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

	* dwfl_report_elf.c (__libdwfl_report_elf): Readjust BASE when a later
	section has larger alignment requirements not met by the original BASE,
	rather than padding more between sections.

	* dwfl_report_elf.c (__libdwfl_report_elf): Fix bias calculation.

	* dwfl_module_build_id.c (__libdwfl_find_build_id): Apply module bias
	to sh_addr value.

	* dwfl_report_elf.c (__libdwfl_report_elf): Don't be confused by BASE
	at zero in ET_REL case.  Adjust BASE to necessary alignment.

	* dwfl_module_build_id.c (check_notes): Take -1, not 0, as stub value
	for DATA_VADDR.
	(__libdwfl_find_build_id): Update caller.

	* relocate.c (__libdwfl_relocate_value): Don't use sh_offset.
	* dwfl_report_elf.c (__libdwfl_report_elf): Likewise.
	* offline.c (dwfl_offline_section_address): Bail early if there is
	separate debug file.

	* relocate.c (__libdwfl_relocate): Don't return DWFL_E_NO_DWARF.

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

	* dwfl_report_elf.c (__libdwfl_report_elf): Clear SHDR->sh_offset when
	caching SHDR->sh_addr = 0.
	* offline.c (dwfl_offline_section_address): Never called for sh_addr
	really at 0, don't check for it.  Use MOD->debug directly, not symfile.

	* dwfl_module_getdwarf.c (load_symtab): Return success properly when
	we've found SHT_SYMTAB.

	* relocate.c (relocate_getsym): New function.
	(__libdwfl_relocate): Use it.
	(__libdwfl_relocate_value): Take new Elf * argument.  Make SYMSHSTRNDX
	be a pointer instead of value; cache getshstrndx result there.
	* libdwflP.h: Update decl.
	* derelocate.c (cache_sections): Update caller.
	Always work on the main file, not the symfile.
	(dwfl_module_address_section): Likewise.
	* dwfl_module_getsym.c (dwfl_module_getsym): Update caller.

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

	* offline.c (process_archive): Initialize MOD.

	* linux-kernel-modules.c (get_release): New function, broken out of ...
	(report_kernel): ... here.  Call it.
	(try_kernel_name): Take new arg TRY_DEBUG, only try ".debug" if set.
	(find_kernel_elf): Update caller.
	(report_kernel_archive): New function.
	(dwfl_linux_kernel_report_offline): Call it.

	* offline.c (process_file): Take new arg PREDICATE, pass it down.
	(process_archive): Likewise.
	(process_archive_member): Likewise.  When nonnull, let the predicate
	decide whether to use this member.
	(__libdwfl_report_offline): New function, broken out of ...
	(dwfl_report_offline): ... here.  Call it.
	* libdwflP.h: Declare it.

	* offline.c (process_archive, process_archive_member): New functions.
	(process_elf, process_file): New functions, broken out of ...
	(dwfl_report_offline): ... here.  Call process_file, which recurses on
	ELF_K_AR files.

	* dwfl_report_elf.c (__libdwfl_report_elf): New, broken out of ...
	(dwfl_report_elf): ... here.  Call it.
	* libdwflP.h: Declare it.

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

	* derelocate.c (dwfl_module_relocations): Don't call
	dwfl_module_getdwarf.

	* derelocate.c (find_section): Use __libdwfl_seterrno, not
	__libdw_seterrno.

	* relocate.c (__libdwfl_relocate_value): Abuse sh_offset, not
	SHF_ALLOC, to cache sh_addr resolved to 0.

	* dwfl_report_elf.c (dwfl_report_elf): When an ET_REL file has sh_addr
	values nonzero already, just use its existing layout.

	* relocate.c (__libdwfl_relocate): Clear size of reloc section in its
	in-core shdr after applying it.

2007-10-04  Ulrich Drepper  <drepper@redhat.com>

	* linux-kernel-modules.c (dwfl_linux_kernel_report_kernel): Fake
	initialization of notes variable.

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

	* linux-kernel-modules.c (intuit_kernel_bounds): Take new arg NOTES,
	fill in with vaddr of "__start_notes" symbol if found.
	(check_notes): New function.
	(check_kernel_notes): New function.
	(dwfl_linux_kernel_report_kernel): Call it.
	(check_module_notes): New function.
	(dwfl_linux_kernel_report_modules): Call it.

	* linux-kernel-modules.c (dwfl_linux_kernel_find_elf):
	Try dwfl_build_id_find_elf first.

	* linux-kernel-modules.c (report_kernel): Don't leak FD if !REPORT.
	Set kernel module e_type to ET_DYN.

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

	* find-debuginfo.c (validate): New function, broken out of ...
	(find_debuginfo_in_path): ... here.  New function, broken out of ...
	(dwfl_standard_find_debuginfo): ... here.  Call it, after trying
	dwfl_build_id_find_debuginfo first.

	* dwfl_build_id_find_elf.c: New file.
	* dwfl_build_id_find_debuginfo.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add them.
	* libdwfl.h: Declare them.
	* libdwflP.h: Add INTDECLs.

	* dwfl_module_build_id.c: New file.
	* dwfl_module_report_build_id.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add them.
	* libdwfl.h: Declare them.
	* libdwflP.h (struct Dwfl_Module): New members build_id_bits,
	build_id_len, build_id_vaddr.  Declare __libdwfl_find_build_id.
	* dwfl_module.c (__libdwfl_module_free): Free MOD->build_id_bits.

	* dwfl_module_getdwarf.c (find_offsets): New function.
	(find_dynsym): New function, calls that.
	(find_symtab): Call it.

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

	* dwfl_module_addrsym.c: Prefer a later global symbol at the same
	address if its st_size is smaller.

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

	* dwfl_module_addrsym.c: Add dead initializer for stupid compiler.

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

	* linux-kernel-modules.c (dwfl_linux_kernel_report_offline): Don't use
	FTS_LOGICAL.

	* elf-from-memory.c (elf_from_remote_memory): Don't reset LOADBASE on
	a second phdr if it happens to match EHDR_VMA exactly.

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

	* dwfl_module_addrsym.c: Don't use STT_SECTION, STT_FILE symbols and
	those with no names.  Rewrite best symbol algorithm not to assume a
	sorted table and to be smarter handling sizeless symbols.

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

	* dwfl_module.c (dwfl_report_module): Increment DWFL->nmodules when
	reviving an existing module.

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

	* libdwflP.h: Fix #ifndef for config.h to use PACKAGE_NAME.

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

	* linux-kernel-modules.c (dwfl_linux_kernel_report_offline): Look at
	whole /lib/modules/VERSION tree, not just /lib/modules/VERSION/kernel.
	(dwfl_linux_kernel_find_elf): Likewise.

	* linux-kernel-modules.c (dwfl_linux_kernel_report_modules): Use
	getline and sscanf instead of fscanf.

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

	* offline.c (dwfl_offline_section_address): Don't assume section
	numbers match between stripped and debuginfo files.  Instead, assume
	only that the ordering among SHF_ALLOC sections matches.

	* linux-kernel-modules.c (report_kernel): Change RELEASE argument to
	pointer to string.
	(dwfl_linux_kernel_report_offline): Update caller.
	(dwfl_linux_kernel_report_kernel): Likewise.

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

	* argp-std.c (options): Fix group title string.

	* argp-std.c (parse_opt): Handle ARGP_KEY_ERROR, free the Dwfl.
	Update via STATE->input every time we set STATE->hook, not only at
	ARGP_KEY_SUCCESS.

	* dwfl_module.c (free_file): Free FILE->name.

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

	* derelocate.c (cache_sections): Apply bias to sh_addr.
	(compare_secrefs): Fix address comparison to avoid signed overflow.
	(find_section): New function, broken out of ...
	(dwfl_module_relocate_address): ... here, call it.
	(check_module): New function, broken out of ...
	(dwfl_module_relocate_address): ... here, call it.
	(dwfl_module_address_section): New function.
	* libdwfl.h: Declare it.

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

	* dwfl_module.c (__libdwfl_module_free): Free MOD itself.

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

	* dwfl_module_getdwarf.c (find_debuglink): New function, broken out of
	(find_debuginfo): ... here.  Call it.
	Don't return error for libelf errors finding .gnu_debuglink section.

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

	* dwfl_module.c (dwfl_report_begin_add): New function broken out of ...
	(dwfl_report_begin): ... here.  Call it.
	* libdwfl.h: Declare it.
	* libdwflP.h: Add INTDECL.

	* elf-from-memory.c (elf_from_remote_memory): Fix 32/64 typo.

	* offline.c: Comment typo fix.

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

	* linux-kernel-modules.c (KERNEL_MODNAME): New macro for "kernel".
	(find_kernel_elf): New function, broken out of ...
	(report_kernel): ... here.  Call it.
	(dwfl_linux_kernel_find_elf): Use it for module named KERNEL_MODNAME.
	(intuit_kernel_bounds): New function, grovel /proc/kallsyms to guess
	virtual address bounds of kernel from symbols rounded to page size.
	(dwfl_linux_kernel_report_kernel): Use that if it works, before
	resorting to report_kernel.

	* dwfl_module_getdwarf.c (open_elf): Set MOD->e_type to ET_DYN for an
	ET_EXEC file with nonzero bias.

	* dwfl_module_addrname.c (dwfl_module_addrname): Just call
	dwfl_module_addrsym.  Guts moved to ...
	* dwfl_module_addrsym.c: ... here; new file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.
	* libdwfl.h: Declare dwfl_module_addrsym.
	* libdwflP.h: Add INTDECL.

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

	* dwfl_module.c (free_file): New function, broken out of ...
	(__libdwfl_module_free): ... here.  In it, close fd after elf_end.

	* dwfl_module_getdwarf.c (open_elf): Close fd and reset to -1
	on libelf failure.

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

	* linux-kernel-modules.c: Fix bogus error test for asprintf call.

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

	* dwfl_addrmodule.c (dwfl_addrmodule): Match a module's high boundary
	address exactly if it's no other module's low boundary.

	* dwfl_module_addrname.c (dwfl_module_addrname): If no symbol's value
	and size cover the address, select the closest symbol with st_size==0
	that lies in the same section.

2007-01-29  Roland McGrath  <roland@redhat.com>

	* dwfl_version.c (dwfl_version): Return PACKAGE_VERSION,
	not PACKAGE_STRING.

2007-01-20  Roland McGrath  <roland@redhat.com>

	* relocate.c (__libdwfl_relocate_value): Treat section_address of -1
	as omitted, not 0.
	* libdwfl.h (Dwfl_Callbacks): Update comment.
	* derelocate.c (cache_sections): Don't ignore sh_addr == 0 sections.
	* linux-kernel-modules.c (dwfl_linux_kernel_module_section_address):
	For ignored missing section, use -1 instead of 0.
	* offline.c (dwfl_offline_section_address): Expect a call for 0.

2007-01-19  Roland McGrath  <roland@redhat.com>

	* argp-std.c (parse_opt): For -e, reset DWFL->offline_next_address to
	zero so a lone -e foo.so is shown without address bias.

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

	* linux-kernel-modules.c (report_kernel): Check asprintf return value
	directly instead of via side effect, to silence warn_unused_result.
	(dwfl_linux_kernel_report_offline): Likewise.
	(dwfl_linux_kernel_find_elf): Likewise.
	(dwfl_linux_kernel_module_section_address): Likewise.
	* find-debuginfo.c (try_open): Likewise.
	* linux-proc-maps.c (find_sysinfo_ehdr): Likewise.
	(dwfl_linux_proc_report): Likewise.

	* libdwfl.h (dwfl_begin): Require nonnull argument.

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

	* dwfl_module.c (compare_modules): Fix address comparison to avoid
	signed overflow.  Patch by Frank Ch. Eigler <fche@redhat.com>.

2006-10-30  Roland McGrath  <roland@redhat.com>

	* dwfl_module.c (dwfl_report_module): Comment typo fix.

2006-09-05  Roland McGrath  <roland@redhat.com>

	* derelocate.c (cache_sections): Use alloca instead of variable-sized
	auto array, in function already using alloca.

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

	* linux-kernel-modules.c (try_kernel_name): If the call to
	dwfl_standard_find_debuginfo produces no results, try it again
	with NULL as DEBUGLINK_FILE to try *FNAME with .debug suffix.

	* find-debuginfo.c (DEFAULT_DEBUGINFO_PATH): Macro moved ...
	* libdwflP.h: ... to here.
	* linux-kernel-modules.c (try_kernel_name): Skip manual open if it
	repeats the first thing dwfl_standard_find_debuginfo will try.

	* linux-kernel-modules.c (MODULE_SECT_NAME_LEN): New macro.
	(dwfl_linux_kernel_module_section_address): If a /sys file is missing
	and the section name is >= MODULE_SECT_NAME_LEN, try truncating the
	section name.

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

	* cu.c: Adjust for internal_function_def removal.
	* dwfl_error.c: Likewise.
	* dwfl_module.c: Likewise.
	* dwfl_module_getdwarf.c: Likewise.
	* lines.c: Likewise.
	* relocate.c: Likewise.

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

	* dwfl_module.c (compare_modules): Don't return GElf_Sxword value,
	it can overflow the return value type.
	Patch by Tim Moore <timoore@redhat.com>.

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

	* libdwfl.h: Cosmetic changes.

	* dwfl_line_comp_dir.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.
	* libdwfl.h: Declare dwfl_line_comp_dir.

	* dwfl_lineinfo.c (dwfl_lineinfo): Remove stray extern in defn.

	* dwfl_linecu.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.
	* libdwfl.h: Declare dwfl_linecu.

	* libdwflP.h (dwfl_linecu_inline): Function renamed from dwfl_linecu.
	(dwfl_linecu): Define as macro.

	* relocate.c (__libdwfl_relocate): Use dwfl_module_getsym.

	* dwfl_module_getdwarf.c (dwfl_module_getsymtab): New function.
	(dwfl_module_addrname): Function moved ...
	* dwfl_module_addrname.c: ... here, new file.
	* dwfl_module_getsym.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add them.
	* libdwfl.h: Declare dwfl_module_getsymtab, dwfl_module_getsym.
	* libdwflP.h: Add INTDECLs.

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

	* dwfl_module.c (dwfl_report_end): Whitespace fix.

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

	* elf-from-memory.c (elf_from_remote_memory): Fix 32/64 typo.
	Use __libdwfl_seterrno for elf_memory failure.

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

	* dwfl_module_return_value_location.c
	(dwfl_module_return_value_location): Use __libdwfl_module_getebl.

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

	* libdwfl.h: Add extern "C".

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

	* cu.c (addrarange): Handle files without aranges information.

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

	* dwfl_addrmodule.c (dwfl_addrmodule): Also return NULL of
	->modules is NULL.

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

	* dwfl_version.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.
	* libdwfl.h: Declare dwfl_version.

	* offline.c (dwfl_report_offline): Account for dwfl_report_elf having
	aligned up from DWFL->offline_next_address when checking for overlap.

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

	* argp-std.c (parse_opt): Call dwfl_end in failure cases.

	* linux-proc-maps.c (proc_maps_report): New function, broken out of ...
	(dwfl_linux_proc_report): ... here.  Call it.
	(dwfl_linux_proc_maps_report): New function.
	* libdwfl.h: Declare it.
	* libdwflP.h: Add INTDECL.
	* argp-std.c (options, parse_opt): Grok -M/--linux-process-map.

	* dwfl_nextcu.c (dwfl_nextcu): Don't fail when dwfl_module_getdwarf
	failed with DWFL_E_NO_DWARF.

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

	* dwfl_end.c (dwfl_end): Free the DWFL itself.

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

	* dwfl_module_getdwarf.c (__libdwfl_module_getebl): New function.
	(load_dw): Use it.
	* dwfl_module_register_names.c (dwfl_module_register_names): Likewise.
	* libdwflP.h: Declare it.

	* dwfl_module_register_names.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.
	* libdwfl.h: Declare dwfl_module_register_names.

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

	* linux-kernel-modules.c (dwfl_linux_kernel_module_section_address):
	Don't leak malloc'd file name.
	If a /sys/.../sections file is missing and starts with ".init",
	try the variant with "_init" too; catches PPC64 kernel braindamage.

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

	* libdwfl.h: Comment fixes.

	* dwfl_module_return_value_location.c: Add unlikely for error case.

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

	* dwfl_return_value_location.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.
	* libdwfl.h: Declare dwfl_module_return_value_location.
	* libdwflP.h (DWFL_ERRORS): Add DWFL_E_WEIRD_TYPE.

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

	* libdwflP.h (DWFL_ERRORS): New error UNKNOWN_MACHINE.
	* relocate.c (__libdwfl_relocate): Return DWFL_E_UNKNOWN_MACHINE
	instead of DWFL_E_BADRELTYPE if ebl_get_elfmachine yields EM_NONE.

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

	* linux-kernel-modules.c (report_kernel): Return ENOENT if we fail
	with errno 0.

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

	* linux-kernel-modules.c (dwfl_linux_kernel_report_modules): Use
	PRIx64 instead of PRIi64, lest addresses with high bits set overflow
	the signed integer reading; they will just have to be in hexadecimal.
	(dwfl_linux_kernel_module_section_address): Likewise.

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

	* Makefile.am (%.os): Use COMPILE.os.
	(COMPILE.os): Filter out gconv options.

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

	* cu.c (__libdwfl_nextcu): Return success when dwarf_nextcu hits end.
	* dwfl_nextcu.c (dwfl_nextcu): Skip modules with no dwarf info.

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

	* dwfl_lineinfo.c (dwfl_lineinfo): Add bias, don't subtract it.

	* argp-std.c [_MUDFLAP] (__libdwfl_argp_mudflap_options): New function,
	magic initializer to set -heur-stack-bound option.

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

	* dwfl_validate_address.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.
	* libdwfl.h: Declare dwfl_validate_address.

	* derelocate.c (dwfl_module_relocate_address): Add INTDEF.
	* libdwflP.h: Add INTDECL.

	* dwfl_module_getdwarf.c (find_symtab): Use elf_getdata instead of
	elf_rawdata for symbol-related sections.

	* offline.c (dwfl_report_offline): Move offline_next_address outside
	module's range, in case it's an ET_EXEC using fixed segment locations.
	* libdwfl.h: Update comment.

	* dwfl_report_elf.c (dwfl_report_elf): Align BASE to first segment's
	required alignment.

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

	* linux-kernel-modules.c (report_kernel): Take new argument PREDICATE,
	function to choose whether to report.
	(dwfl_linux_kernel_report_offline): Likewise.
	* libdwfl.h: Update decl.
	* argp-std.c (parse_opt): Update caller.

	* dwfl_getsrclines.c: New file.
	* dwfl_onesrcline.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add them.
	* libdwfl.h: Declare dwfl_getsrclines, dwfl_onesrcline.

	* linux-kernel-modules.c (dwfl_linux_kernel_find_elf): Don't leak
	MODULESDIR[0].  Call fts_close on failure.

	* dwfl_module_getdwarf.c (load_dw): Take dwfl_file * instead of Elf *.
	Close ET_REL file descriptors after relocation.
	(find_dw): Update caller.
	* offline.c (dwfl_report_offline): Get the file into memory and close
	the file descriptor.

	* dwfl_module_getdwarf.c (find_debuginfo): Do nothing when
	MOD->debug.elf is already set.

	* find-debuginfo.c (try_open): Use TEMP_FAILURE_RETRY.
	(dwfl_standard_find_debuginfo): Fail on errors not ENOENT or ENOTDIR.

	* argp-std.c (options, parse_opt): Grok -K/--offline-kernel, use
	dwfl_linux_kernel_report_offline with offline_callbacks.

	* linux-kernel-modules.c (report_kernel): New function, broken out of
	...
	(dwfl_linux_kernel_report_kernel): ... here.  Use it.
	(dwfl_linux_kernel_report_offline): New function.
	* libdwfl.h: Declare it.
	* libdwflP.h: Add INTDECL.

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

	Use standard debuginfo search path to look for vmlinux.
	* find-debuginfo.c (dwfl_standard_find_debuginfo): Don't check CRC if
	passed zero.
	* linux-kernel-modules.c (try_kernel_name): New function, broken out
	of ...
	(dwfl_linux_kernel_report_kernel): ... here.  Use it.

	* argp-std.c (offline_callbacks): New variable.
	(parse_opt): Use it for -e.  Allow multiple -e options.

	* offline.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.
	* libdwfl.h: Declare dwfl_offline_section_address, dwfl_report_offline.
	* libdwflP.h: Add INTDECLs.
	(OFFLINE_REDZONE): New macro.
	(struct Dwfl): New member `offline_next_address'.
	* dwfl_begin.c (dwfl_begin): Initialize it.
	* dwfl_module.c (dwfl_report_begin): Likewise.

	* dwfl_report_elf.c (dwfl_report_elf): Accept all types.  When ET_REL,
	do a nominal absolute section layout starting at BASE.
	* libdwfl.h: Update comment.

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

	* dwfl_module_getsrc_file.c (dwfl_module_getsrc_file): Do
	dwfl_module_getdwarf if necessary.

	* dwfl_report_elf.c (dwfl_report_elf): Permit ET_REL with BASE==0.
	* libdwfl.h: Update comment.

	* derelocate.c: New file.
	* Makefile.am (libdwfl_a_SOURCES): Add it.

	* libdwflP.h (struct Dwfl_Module): isrel -> e_type.
	* dwfl_report_elf.c (dwfl_report_elf): Initialize it.
	* dwfl_module_getdwarf.c (open_elf): Update initialization.
	(load_dw, dwfl_module_addrname): Update uses.
	* relocate.c (__libdwfl_relocate): Likewise.

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

	* libdwfl.h (Dwfl_Callbacks.section_address): Take additional
	arguments SHNDX, SHDR.
	(dwfl_linux_kernel_module_section_address): Update prototype.
	* relocate.c (__libdwfl_relocate_value): Update caller.
	* linux-kernel-modules.c (dwfl_linux_kernel_module_section_address):
	Take the new arguments.

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

	* relocate.c (__libdwfl_relocate): Take argument DEBUGFILE,
	use it instead of MOD->debug.file.
	* libdwflP.h: Update decl.
	* dwfl_module_getdwarf.c (load_dw): Update caller.
	Fixes bug #165598.

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

	* libdwflP.h: Include ../libdw/libdwP.h for its INTDECLs.
	* cu.c: Use INTUSE on dwarf_* calls.
	* dwfl_error.c: Likewise.
	* dwfl_module.c: Likewise.
	* dwfl_module_getdwarf.c: Likewise.
	* dwfl_module_getsrc_file.c: Likewise.
	* lines.c: Likewise.

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

	* linux-kernel-modules.c (dwfl_linux_kernel_find_elf): When module
	names contain '_' or '-', look for files named either "foo-bar.ko"
	or "foo_bar.ko".

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

	* loc2c.c: File removed.
	* loc2c.h: File removed.
	* loc2c-runtime.h: File removed.
	* test2.c: File removed.
	* Makefile.am (EXTRA_DIST): Variable removed.
	(noinst_HEADERS): Remove loc2c.h from here.

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

	* libdwfl.h: Add a few missing extern for function prototypes.

	* libdwfl_crc32.c: New file.
	* libdwfl_crc32_file.c: New file.
	* libdwflP.h: Declare the new functions.
	* Makefile.am (libdwfl_a_SOURCES): Add libdwfl_crc32.c and
	libdwfl_crc32_file.c.
	* libdwfl/find-debuginfo.c (check_crc): Use __libdwfl_crc32_file
	instead of crc32_file.

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

	* ptest.c: Moved to ../tests/dwflmodtest.c.

	* Makefile.am (noinst_PROGRAMS): Variable removed.
	(libdwfl_so_SOURCES, libdwfl_LIBS, libdwfl_so_LDADD): Likewise.
	(EXTRA_DIST, ptest_LDADD, test2_LDADD): Likewise.
	(libdwfl): Don't use libdwfl.so any more.
	(libdwfl.so, install, uninstall): Targets removed.
	(test2_SOURCES): Define EXTRA_DIST instead of this.
	* libdwfl.map: File removed.

	* libdwfl.h: Use "" for libdw.h #include.

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

	* libdwfl.map: Add dwfl_getmodules.

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

	* Makefile.am: Fix rules to allow building with mudflap.

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

	* Makefile.am (noinst_HEADERS): Add loc2c.c.

	* test2.c (main): Check sscanf result to quiet warning.

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

	* libdwfl-branch merged, creating this direcotry.
