summaryrefslogtreecommitdiffstats
path: root/src/libdwfl/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'src/libdwfl/ChangeLog')
-rw-r--r--src/libdwfl/ChangeLog927
1 files changed, 927 insertions, 0 deletions
diff --git a/src/libdwfl/ChangeLog b/src/libdwfl/ChangeLog
index 87a05550..69e59a6f 100644
--- a/src/libdwfl/ChangeLog
+++ b/src/libdwfl/ChangeLog
@@ -1,3 +1,930 @@
+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