1 2014-12-19 Mark Wielaard <mjw (a] redhat.com> 2 3 * dwfl_module_getdwarf.c (find_symtab): Always try find_dynsym last. 4 5 2014-12-19 Mark Wielaard <mjw (a] redhat.com> 6 7 * elf-from-memory.c (handle_segment): Remove palign sanity check. 8 9 2014-12-18 Mark Wielaard <mjw (a] redhat.com> 10 11 * relocate.c (resolve_symbol): Make sure symstrdata->d_buf != NULL. 12 13 2014-12-13 Mark Wielaard <mjw (a] redhat.com> 14 15 * dwfl_module_getdwarf.c (find_dynsym): elf_getdata_rawchunk takes 16 a size_t, make sure it doesn't overflow. 17 18 2014-12-13 Mark Wielaard <mjw (a] redhat.com> 19 20 * cu.c (cudie_offset): Make sure Dwarf_Off difference doesn't 21 wrap around before returning as int. 22 23 2014-12-11 Josh Stone <jistone (a] redhat.com> 24 25 * dwfl_module_getsrc.c (dwfl_module_getsrc): Return the *last* line 26 record <= addr, rather than returning immediately on matches. 27 28 2014-12-09 Mark Wielaard <mjw (a] redhat.com> 29 30 * dwfl_segment_report_module.c (handle_file_note): Check count doesn't 31 overflow. 32 33 2014-12-07 Mark Wielaard <mjw (a] redhat.com> 34 35 * relocate.c (relocate_section): Sanity check section overlap against 36 actually used ehsize, shentsize and phentsize. 37 38 2014-12-07 Mark Wielaard <mjw (a] redhat.com> 39 40 * offline.c (dwfl_offline_section_address): Assert shndx is not zero. 41 * relocate.c (__libdwfl_relocate_value): Don't relocate against 42 section zero. 43 44 2014-11-29 Mark Wielaard <mjw (a] redhat.com> 45 46 * relocate.c (relocate_section): Check relocation section and target 47 section data don't overlap any of the ELF headers. 48 (relocate): Check for offset + size overflow. 49 50 2014-11-22 Mark Wielaard <mjw (a] redhat.com> 51 52 * link_map.c (consider_executable): Use elf_getphdrnum. 53 (dwfl_link_map_report): Likewise. 54 55 2014-11-18 Mark Wielaard <mjw (a] redhat.com> 56 57 * dwfl_module_getdwarf.c (find_symtab): Sanity check the data buffer, 58 number of symbols and first_global before use. 59 60 2014-11-14 Mark Wielaard <mjw (a] redhat.com> 61 62 * dwfl_module_getdwarf.c (load_symtab): Don't use tables which have 63 a zero sh_entsize. 64 65 2014-11-10 Mark Wielaard <mjw (a] redhat.com> 66 67 * dwfl_module_getdwarf.c (find_dynsym): New inner function 68 translate_offs that takes an adjust argument. Try finding 69 the symbol table with and without adjusting to main_bias. 70 71 2014-09-26 Jan Kratochvil <jan.kratochvil (a] redhat.com> 72 73 Support NT_FILE for locating files. 74 * core-file.c (dwfl_core_file_report): New variables note_file and 75 note_file_size, set them and pass them to dwfl_segment_report_module. 76 * dwfl_segment_report_module.c: Include common.h and fcntl.h. 77 (buf_has_data, buf_read_ulong, handle_file_note): New functions. 78 (invalid_elf): New function from code of dwfl_segment_report_module. 79 (dwfl_segment_report_module): Add parameters note_file and 80 note_file_size. New variables elf and fd, clean them up in finish. 81 Move some code to invalid_elf. Call handle_file_note, if it found 82 a name verify the file by invalid_elf. Protect elf and fd against 83 cleanup by finish if we found the file for new Dwfl_Module. 84 * libdwflP.h (dwfl_segment_report_module): Add parameters note_file and 85 note_file_size. 86 87 2014-09-23 Mark Wielaard <mjw (a] redhat.com> 88 89 * dwfl_segment_report_module.c (dwfl_segment_report_module): 90 Extract ei_class, ei_data and e_type early and use the result. 91 92 2014-09-18 Jan Kratochvil <jan.kratochvil (a] redhat.com> 93 94 * dwfl_build_id_find_elf.c (dwfl_build_id_find_elf): Use IS_EXECUTABLE. 95 * dwfl_segment_report_module.c (dwfl_segment_report_module): Set 96 IS_EXECUTABLE. 97 * libdwflP.h (struct Dwfl_Module): New field is_executable. 98 99 2014-08-28 Jan Kratochvil <jan.kratochvil (a] redhat.com> 100 101 * dwfl_module_getdwarf.c (find_offsets): Add parameter main_bias, use 102 it. 103 (find_dynsym): Pass the new parameter main_bias. 104 105 2014-08-14 Mark Wielaard <mjw (a] redhat.com> 106 107 * linux-kernel-modules.c (check-suffix): Also TRY .ko.xz. 108 109 2014-07-24 Jan Kratochvil <jan.kratochvil (a] redhat.com> 110 111 Fix report_r_debug for prelinked libraries. 112 * link_map.c (report_r_debug): Comment out variable l_addr. 113 Use instead new variable base recalculated from l_ld. 114 115 2014-06-24 Kurt Roeckx <kurt (a] roeckx.be> 116 117 * linux-pid-attach.c: Make it build on non linux hosts. 118 119 2014-06-17 Mark Wielaard <mjw (a] redhat.com> 120 121 * frame_unwind.c (handle_cfi): Use ebl_func_addr_mask. 122 * dwfl_module_getsym.c (__libdwfl_getsym): Likewise. 123 124 2014-06-15 Mark Wielaard <mjw (a] redhat.com> 125 126 * linux-core-attach.c (core_memory_read): Use libdw/memory-access.h 127 macros read_4ubyte_unaligned_noncvt and read_8ubyte_unaligned_noncvt 128 to read possibly unaligned data. 129 (core_next_thread): Likewise. 130 (core_set_initial_registers): Likewise. 131 (dwfl_core_file_attach): Likewise. 132 133 2014-06-11 Mark Wielaard <mjw (a] redhat.com> 134 135 * dwfl_frame.c (__libdwfl_process_free): Reset dwfl->attacherr. 136 (dwfl_attach_state): Set dwfl->attacherr. 137 (dwfl_pid): Check and return dwfl->attacherr if set. 138 (dwfl_getthreads): Likewise. 139 (getthread): Likewise. 140 * libdwflP.h: Add DWFL_E_NO_CORE_FILE. 141 (struct Dwfl): Add attacherr field. 142 * linux-core-attach.c (dwfl_core_file_attach): Set dwfl->attacherr. 143 Don't assert if ELF file is not ET_CORE, just return error. 144 * linux-pid-attach.c (dwfl_linux_proc_attach): Set dwfl->attacherr. 145 146 2014-06-10 Mark Wielaard <mjw (a] redhat.com> 147 148 * argp-std.c (parse_opt): Ignore errors from dwfl_core_file_attach 149 or dwfl_linux_proc_attach. 150 151 2014-05-15 Mark Wielaard <mjw (a] redhat.com> 152 153 * linux-proc-maps.c (grovel_auxv): Close fd on error. 154 155 2014-05-02 Mark Wielaard <mjw (a] redhat.com> 156 157 * dwfl_module_getdwarf: Remove ENABLE_DWZ ifdefs so find_debug_altlink 158 is always called. 159 160 2014-05-01 Mark Wielaard <mjw (a] redhat.com> 161 162 * libdwflP.h (struct Dwfl_Module): Add alt, alt_fd and alt_elf fields. 163 (__libdwfl_open_mod_by_build_id): Renamed __libdwfl_open_by_build_id. 164 (__libdwfl_open_by_build_id): New declaration that takes an explicit 165 build-id. 166 * dwfl_build_id_find_debuginfo.c (dwfl_build_id_find_debuginfo): If 167 we already have the Dwarf then look for the alt dwz multi file by 168 build-id. 169 * dwfl_build_id_find_elf.c (__libdwfl_open_by_build_id): Add the 170 build-id we are looking for as argument. 171 (__libdwfl_open_mod_by_build_id): New function, calls 172 __libdwfl_open_by_build_id. 173 (dwfl_build_id_find_elf): Call __libdwfl_open_mod_by_build_id. 174 * dwfl_module.c (__libdwfl_module_free): Release alt, alt_elf and 175 close alt_fd if necessary. 176 * dwfl_module_getdwarf.c (__check_build_id): Removed. 177 (try_debugaltlink): Removed. 178 (open_debugaltlink): Removed. 179 (open_elf_file): First half of open_elf that just opens the elf 180 file but doesn't setup the load address. 181 (open_elf): Call open_elf_file. 182 (find_debug_altlink): New function. 183 (load_dw): Remove loading of dwz multifile. 184 (find_dw): Call find_debug_altlink. 185 * find-debuginfo.c (validate): Handle alt debug case using 186 dwelf_dwarf_gnu_debugaltlink and mod->alt_elf. 187 (find_debuginfo_in_path): Handle alt debug files possibly in .dwz 188 subdirs. 189 * linux-kernel-modules.c (try_kernel_name): Use fakemod.debug.name 190 to store name to find by dwfl_standard_find_debuginfo instead of 191 allocating an extra variable on stack. 192 193 2014-04-30 Mark Wielaard <mjw (a] redhat.com> 194 195 * dwfl_module_build_id.c (__libdwfl_find_elf_build_id): Moved to 196 dwelf_elf_gnu_build_id.c. 197 (__libdwfl_find_build_id): Add assert to make sure mod is never NULL. 198 * dwfl_segment_report_module.c (dwfl_segment_report_module): Call 199 dwelf_elf_gnu_build_id directly instead of __libdwfl_find_build_id. 200 * dwfl_module_getdwarf.c (__check_build_id): Implement using 201 dwelf_elf_gnu_build_id. 202 203 2014-04-15 Florian Weimer <fweimer (a] redhat.com> 204 205 * dwfl_module_getdwarf.c (__check_build_id): Moved from libdw. 206 (try_debugaltlink): Likewise. 207 (open_debugaltlink): Likewise. 208 (load_dw): Locate alternate debug information using 209 dwelf_dwarf_gnu_debugaltlink and call open_debugaltlink. 210 211 2014-04-11 Mark Wielaard <mjw (a] redhat.com> 212 213 * Makefile.am (AM_CPPFLAGS): Add libdwelf. 214 * libdwflP.h: Include libdwelfP.h. 215 * dwfl_module_getdwarf.c (find_debuglink): Moved to libdwelf. 216 (find_debuginfo): Use dwelf_elf_gnu_debuglink. 217 218 2014-04-22 Mark Wielaard <mjw (a] redhat.com> 219 220 * frame_unwind.c (__libdwfl_frame_reg_get): Use uint64_t when 221 checking bits. 222 (__libdwfl_frame_reg_set): Likewise. 223 224 2014-04-22 Kurt Roeckx <kurt (a] roeckx.be> 225 226 * linux-pid-attach.c: Make linux only. 227 228 2014-03-14 Mark Wielaard <mjw (a] redhat.com> 229 230 * Makefile.am: Remove !MUDFLAP and MUDFLAP conditions. 231 Remove libelf and libdw definitions when MUDFLAP is defined. 232 * argp-std.c (__libdwfl_argp_mudflap_options): Removed. 233 234 2014-03-03 Mark Wielaard <mjw (a] redhat.com> 235 236 * elf-from-memory.c (elf_from_remote_memory): Keep track of 237 segments_end_mem. Pass memsz to first handle_segment pass. Only 238 extend contents_size and use shdrs if only file bits are in 239 segment. 240 241 2014-03-11 Josh Stone <jistone (a] redhat.com> 242 243 * dwfl_module_getdwarf.c (open_elf): Only explicitly set 244 mod->e_type when processing the main ELF file. 245 246 2014-03-04 Mark Wielaard <mjw (a] redhat.com> 247 248 * libdwflP.h (struct __libdwfl_pid_arg): Moved here and renamed from 249 linux-pid-attach.c (struct pid_arg). 250 (__libdwfl_get_pid_arg): New internal function declaration. 251 (__libdwfl_ptrace_attach): Likewise. 252 (__libdwfl_ptrace_detach): Likewise. 253 * dwfl_frame.c (dwfl_attach_state): Add "(deleted)" files to the 254 special exception modules that cannot be checked at this point. 255 * linux-pid-attach.c (struct pid_arg): Moved to libdwflP.h 256 (ptrace_attach): Renamed to... 257 (__libdwfl_ptrace_attach): New internal function. 258 (__libdwfl_ptrace_detach): Likewise. Extracted from ... 259 (pid_thread_detach): Call __libdwfl_ptrace_detach now. 260 (__libdwfl_get_pid_arg): New internal function. 261 * linux-proc-maps.c (dwfl_linux_proc_find_elf): Check if special 262 module name contains "(deleted)" and dwfl_pid gives an attached 263 pid. If pid is set and try to (re)use ptrace attach state of 264 process before reading memory. 265 266 2014-03-03 Mark Wielaard <mjw (a] redhat.com> 267 268 * elf-from-memory.c (elf_from_remote_memory): Take pagesize as 269 argument. Free buffer when detecting bad elf. Check PT_LOAD 270 alignment requirements on first handle_segment pass. Calculate 271 loadbase, start and end of segment using pagesize, not p_align. 272 * linux-proc-maps.c (dwfl_linux_proc_find_elf): Provide pagesize 273 to elf_from_remote_memory. 274 275 2014-02-26 Mark Wielaard <mjw (a] redhat.com> 276 277 * linux-proc-maps.c (proc_maps_report): Don't assert on bad input. 278 279 2014-02-26 Mark Wielaard <mjw (a] redhat.com> 280 281 * elf-from-memory.c (elf_from_remote_memory): Check against p64 282 p_type in case ELFCLASS64, not against p32 p_type. 283 284 2014-01-17 Petr Machata <pmachata (a] redhat.com> 285 286 * relocate.c (relocate_section): Use gelf_fsize instead of relying 287 on shdr->sh_entsize. 288 289 2014-01-05 Mark Wielaard <mjw (a] redhat.com> 290 291 * frame_unwind.c (handle_cfi): Only skip resetting return register 292 if the regno is not the actual CIE return address register. 293 294 2014-01-02 Mark Wielaard <mjw (a] redhat.com> 295 296 * linux-pid-attach.c (dwfl_linux_proc_attach): Use strtol, not atoi. 297 298 2013-12-30 Mark Wielaard <mjw (a] redhat.com> 299 300 * argp-std.c (parse_opt): Call dwfl_linux_proc_attach and 301 dwfl_core_file_attach explicitly. 302 * core-file.c (dwfl_core_file_report): Don't call 303 __libdwfl_attach_state_for_core implicitly. 304 * dwfl_begin.c (dwfl_begin): Remove setting of process_attach_error. 305 * dwfl_frame.c (dwfl_pid): Set errno to DWFL_E_NO_ATTACH_STATE, not 306 process_attach_error. 307 (dwfl_getthreads): Likewise. 308 (getthread): Likewise. 309 * libdwfl.h (dwfl_core_file_report): Update documentation. 310 (dwfl_linux_proc_report): Likewise. 311 (dwfl_core_file_attach): New function declaration. 312 (dwfl_linux_proc_attach): Likewise. 313 * libdwflP.h (struct Dwfl): Remove process_attach_error. 314 (__libdwfl_attach_state_for_pid): Removed declaration. 315 (__libdwfl_attach_state_for_core): Likewise. 316 (dwfl_core_file_attach): New internal declaration. 317 (dwfl_linux_proc_attach): Likewise. 318 (attach_state_for_core): Renamed to... 319 (dwfl_core_file_attach): ...this. Change return type. 320 (__libdwfl_attach_state_for_core): Removed. 321 * linux-pid-attach.c (struct pid_arg): Add assume_ptrace_stopped. 322 (pid_set_initial_registers): Check assume_ptrace_stopped before 323 calling ptrace. 324 (pid_thread_detach): Likewise. 325 (__libdwfl_attach_state_for_pid): Renamed to... 326 (dwfl_linux_proc_attach): ...this. Adjust return type. 327 * linux-proc-maps.c (dwfl_linux_proc_report): Don't call 328 __libdwfl_attach_state_for_pid implicitly. 329 330 2013-12-28 Mark Wielaard <mjw (a] redhat.com> 331 332 * linux-proc-maps.c (dwfl_linux_proc_find_elf): Don't return special 333 character device files, only regular files. 334 335 2013-12-24 Mark Wielaard <mjw (a] redhat.com> 336 337 * linux-core-attach.c (core_next_thread): Check whether thread_argp 338 is NULL. Reset core_arg->thread_note_offset and malloc a thread_arg 339 in that case. Free thread_arg if there are no more threads. 340 341 2013-12-23 Mark Wielaard <mjw (a] redhat.com> 342 343 * dwfl_segment_report_module.c (dwfl_segment_report_module): Free 344 build_id before returning early. 345 346 2013-12-23 Mark Wielaard <mjw (a] redhat.com> 347 348 * linux-pid-attach.c (__libdwfl_attach_state_for_pid): Report actual 349 pid (thread group leader) to dwfl_attach_state. 350 351 2013-12-21 Mark Wielaard <mjw (a] redhat.com> 352 353 * frame_unwind.c (handle_cfi): Track whether the return register 354 has been set and only allow it to be set once. 355 356 2013-12-20 Mark Wielaard <mjw (a] redhat.com> 357 358 * dwfl_frame.c (one_arg): New struct. 359 (get_one_thread_cb): New function. 360 (dwfl_getthread): Likewise. 361 (one_thread): New struct. 362 (get_one_thread_frames_cb): New function. 363 (dwfl_getthread_frames): Likewise. 364 * libdwfl.h (Dwfl_Thread_Callbacks): Add get_thread function. 365 (dwfl_getthread_frames): Likewise. 366 * libdwflP.h (dwfl_getthread_frames): New internal function declaration. 367 * linux-core-attach.c (core_thread_callbacks): Initialize get_thread 368 to NULL. 369 * linux-pid-attach.c (pid_getthread): New function. 370 (pid_thread_callbacks): Initialize get_thread to pid_getthread. 371 372 2013-12-20 Mark Wielaard <mjw (a] redhat.com> 373 374 * linux-kernel-modules.c (report_kernel_archive): Correct nested 375 asprintf result check for debug.a. 376 377 2013-12-18 Mark Wielaard <mjw (a] redhat.com> 378 379 * derelocate.c (__libdwfl_find_section_ndx): New internal function. 380 * dwfl_module_addrname.c (dwfl_module_addrname): Use 381 dwfl_module_addrinfo. 382 * dwfl_module_addrsym.c (dwfl_module_addrsym_elf): Replace with... 383 (__libdwfl_addrsym): ...this. Use __libdwfl_getsym, use value 384 for comparisons, not st_value. Fill in off. Search for both value 385 and the (adjusted) sym.st_value when different. 386 (dwfl_module_addrsym): Implement using __libdwfl_addrsym. 387 (dwfl_module_addrinfo): New function. 388 * dwfl_module_getsym.c (dwfl_module_getsym_elf): Replace with... 389 (__libdwfl_getsym): ...this. Use ebl_resolve_sym_value if requested 390 and possible. Adjust sym->st_value only when requested. Fill in addr 391 if available. 392 (dwfl_module_getsym_info): New function. 393 (dwfl_module_getsym): Use __libdwfl_getsym. 394 * libdwfl.h (dwfl_module_getsym_elf): Removed. 395 (dwfl_module_getsym_info): New function declaration. 396 (dwfl_module_addrinfo): Likewise. 397 (dwfl_module_addrsym): Add documentation describing differences 398 with addrinfo variants. 399 (dwfl_module_addrsym_elf): Removed. 400 * libdwflP.h (__libdwfl_getsym): New internal function declaration. 401 (__libdwfl_addrsym): Likewise. 402 (__libdwfl_find_section_ndx): Likewise. 403 (dwfl_module_addrinfo): New internal declaration. 404 (dwfl_module_getsym_info): Likewise. 405 (dwfl_module_addrsym_elf): Removed. 406 (dwfl_module_getsym_elf): Likewise. 407 408 2013-12-18 Jan Kratochvil <jan.kratochvil (a] redhat.com> 409 410 * argp-std.c (offline_find_elf): Remove. 411 (offline_callbacks): Use dwfl_build_id_find_elf instead. 412 * dwfl_build_id_find_elf.c (dwfl_build_id_find_elf): Move here the code 413 removed above. 414 415 2013-12-18 Jan Kratochvil <jan.kratochvil (a] redhat.com> 416 417 unwinder: s390 and s390x 418 * dwfl_frame_pc.c (dwfl_frame_pc): Call ebl_normalize_pc. 419 * frame_unwind.c (new_unwound): New function from ... 420 (handle_cfi): ... here. Call it. 421 (setfunc, getfunc, readfunc): New functions. 422 (__libdwfl_frame_unwind): Call ebl_unwind with those functions. 423 * linux-core-attach.c (core_set_initial_registers): Always iterate 424 through the Ebl_Register_Location loop. Call 425 dwfl_thread_state_register_pc there. 426 427 2013-12-17 Jan Kratochvil <jan.kratochvil (a] redhat.com> 428 429 * frame_unwind.c (handle_cfi): Call ebl_dwarf_to_regno for RA. 430 431 2013-12-17 Mark Wielaard <mjw (a] redhat.com> 432 433 * linux-pid-attach.c (pid_next_thread): Call rewinddir on first 434 traversal. 435 436 2013-12-16 Mark Wielaard <mjw (a] redhat.com> 437 438 * libdwfl.h (dwfl_module_getsymtab_first_global): New function 439 definition. 440 * dwfl_module_getdwarf.c (dwfl_module_getsymtab_first_global): New 441 function. 442 * libdwflP.h (dwfl_module_getsymtab_first_global): New internal 443 function definition. 444 * dwfl_module_addrsym.c (dwfl_module_addrsym_elf): Use new function. 445 446 2013-12-14 Mark Wielaard <mjw (a] redhat.com> 447 448 * dwfl_module.c (__libdwfl_module_free): Free mod->reloc_info if 449 allocated. Call dwarf_cfi_end on mod->eh_cfi if necessary. 450 * frame_unwind.c (handle_cfi): Free frame result from 451 dwarf_cfi_addrframe when done. 452 453 2013-12-15 Jan Kratochvil <jan.kratochvil (a] redhat.com> 454 455 unwinder: ppc and ppc64 456 * frame_unwind.c (__libdwfl_frame_reg_get, __libdwfl_frame_reg_set): 457 Call ebl_dwarf_to_regno. 458 * linux-core-attach.c (core_set_initial_registers): Implement 459 pc_register support. 460 * linux-pid-attach.c (pid_thread_state_registers_cb): Implement 461 FIRSTREG -1. 462 463 2013-11-30 Jan Kratochvil <jan.kratochvil (a] redhat.com> 464 465 Introduce process_attach_error. 466 * dwfl_begin.c (dwfl_begin): Initialize process_attach_error. 467 * dwfl_frame.c (dwfl_pid, dwfl_getthreads): Use PROCESS_ATTACH_ERROR if 468 PROCESS is NULL. 469 * libdwflP.h (struct Dwfl): New field process_attach_error. 470 * linux-core-attach.c (__libdwfl_attach_state_for_core): Rename to ... 471 (attach_state_for_core): ... here, make it static, change return type, 472 no longer use __libdwfl_seterrno. 473 (__libdwfl_attach_state_for_core): New wrapper for it. 474 475 2013-11-27 Mark Wielaard <mjw (a] redhat.com> 476 477 * dwfl_module_addrsym.c (dwfl_module_addrsym): Rename to and call... 478 (dwfl_module_addrsym_elf): this. Add elfp and biasp arguments, 479 keep track of symelf, addr_symelf, closest_elf and sizeless_elf 480 instead of tracking dwfl_files. 481 * dwfl_module_getsym.c (__libdwfl_module_getsym): Renamed to... 482 (dwfl_module_getsym_elf): ...this. Remove dwfl_file argument, add 483 new elfp and biasp arguments. Track elf instead of file. 484 (dwfl_module_getsym): Call dwfl_module_getsym_elf. 485 dwfl_module_info.c (dwfl_module_info): Pass elf to 486 dwfl_adjusted_st_value. 487 * libdwfl.h (dwfl_module_getsym): Document limitations of shndx. 488 (dwfl_module_getsym_elf): New function declaration. 489 (dwfl_module_addrsym_elf): Likewise. 490 * libdwflP.h (dwfl_module_addrsym_elf): INTDECL. 491 (dwfl_module_getsym_elf): Likewise. 492 (dwfl_adjusted_st_value): Take and check elf not dwfl_file. 493 (dwfl_deadjust_st_value): Likewise. 494 (__libdwfl_module_getsym): Removed. 495 * relocate.c (resolve_symbol): Pass elf to dwfl_adjusted_st_value. 496 497 2013-11-21 Jan Kratochvil <jan.kratochvil (a] redhat.com> 498 499 Fix non-build-id core files on build-id system. 500 * link_map.c (report_r_debug): Remove valid clearing if build-id cannot 501 be read from memory. 502 503 2013-11-21 Jan Kratochvil <jan.kratochvil (a] redhat.com> 504 505 * dwfl_segment_report_module.c (dwfl_segment_report_module): New 506 variable close_elf. Call __libdwfl_find_elf_build_id and compare the 507 content, if possible. 508 509 2013-11-21 Jan Kratochvil <jan.kratochvil (a] redhat.com> 510 511 link_map: Use proper bias, not l_addr. 512 * core-file.c (dynamic_vaddr_get): Rename to ... 513 (__libdwfl_dynamic_vaddr_get): ... here, make it global, 514 internal_function. 515 (dwfl_core_file_report): Update name in the caller. 516 * libdwflP.h (__libdwfl_dynamic_vaddr_get): New declaration. 517 * link_map.c (report_r_debug): New variable elf_dynamic_vaddr. Call 518 __libdwfl_dynamic_vaddr_get for it. Remove L_ADDR FIXME comment. 519 Use ELF_DYNAMIC_VADDR instead of L_ADDR. 520 521 2013-11-19 Jan Kratochvil <jan.kratochvil (a] redhat.com> 522 523 Compatibility with older kernels such as RHEL-6. 524 * linux-pid-attach.c (struct pid_arg): New field tid_was_stopped. 525 (ptrace_attach): New parameter tid_was_stoppedp. Set it. 526 (pid_set_initial_registers): Pass tid_was_stopped. 527 (pid_thread_detach): Use tid_was_stopped. 528 529 2013-11-18 Josh Stone <jistone (a] redhat.com> 530 531 * dwfl_module_getdwarf.c (find_aux_address_sync): New function. 532 (find_aux_sym): Use it. 533 534 2013-11-14 Jan Kratochvil <jan.kratochvil (a] redhat.com> 535 536 Code cleanup: Remove const in prototype 537 * dwfl_frame_regs.c (dwfl_thread_state_registers): Remove const from 538 firstreg. 539 * libdwfl.h (dwfl_thread_state_registers): Likewise. 540 * linux-pid-attach.c (pid_thread_state_registers_cb): Likewise. 541 542 2013-11-14 Jan Kratochvil <jan.kratochvil (a] redhat.com> 543 544 Fix dwfl_attach_state machine->elf. 545 * dwfl_frame.c (dwfl_attach_state): Change parameter machine to elf. 546 Call ebl_openbackend instead of ebl_openbackend_machine. 547 * libdwfl.h (dwfl_attach_state): Change parameter machine to elf. 548 Update the function description. 549 * linux-core-attach.c (__libdwfl_attach_state_for_core): Pass CORE to 550 dwfl_attach_state. 551 * linux-pid-attach.c (__libdwfl_attach_state_for_pid): Pass NULL to 552 dwfl_attach_state. 553 554 2013-11-06 Jan Kratochvil <jan.kratochvil (a] redhat.com> 555 556 Provide __libdwfl_module_getsym to get dwfl_file *. 557 * dwfl_module_addrsym.c (dwfl_module_addrsym) (i_to_symfile): Remove. 558 (dwfl_module_addrsym) (search_table): New variable file. Use 559 __libdwfl_module_getsym. Use file. 560 * dwfl_module_getsym.c (dwfl_module_getsym): Rename to ... 561 (__libdwfl_module_getsym): ... here. Add parameter filep. Set it. 562 (dwfl_module_getsym): New wrapper. 563 * libdwflP.h (__libdwfl_module_getsym): New declaration. 564 565 2013-11-13 Jan Kratochvil <jan.kratochvil (a] redhat.com> 566 567 Fix dwfl_module_addrsym for minidebuginfo. 568 * dwfl_module_addrsym.c (dwfl_module_addrsym): New variable 569 addr_symfile. 570 (dwfl_module_addrsym) (same_section): Use it. 571 (dwfl_module_addrsym) (i_to_symfile): New function. 572 (dwfl_module_addrsym) (search_table): Use it. 573 574 2013-11-07 Jan Kratochvil <jan.kratochvil (a] redhat.com> 575 Mark Wielaard <mjw (a] redhat.com> 576 577 * Makefile.am (libdwfl_a_SOURCES): Add dwfl_frame.c, frame_unwind.c, 578 dwfl_frame_pc.c, linux-pid-attach.c, linux-core-attach.c and 579 dwfl_frame_regs.c. 580 * core-file.c (dwfl_core_file_report): Call 581 __libdwfl_attach_state_for_core. 582 * dwfl_end.c (dwfl_end): Call __libdwfl_process_free. 583 * dwfl_frame.c: New file. 584 * frame_unwind.c: New file. 585 * dwfl_frame_pc.c: New file. 586 * linux-pid-attach.c: New file. 587 * linux-core-attach.c: New file. 588 * dwfl_frame_regs.c: New file. 589 * libdwfl.h (Dwfl_Thread, Dwfl_Frame): New typedefs. 590 (dwfl_core_file_report, dwfl_linux_proc_report): Extend comments. 591 (Dwfl_Thread_Callbacks): New definition. 592 (struct ebl, dwfl_attach_state, dwfl_pid, dwfl_thread_dwfl) 593 (dwfl_thread_tid, dwfl_frame_thread, dwfl_thread_state_registers) 594 (dwfl_thread_state_register_pc, dwfl_getthreads, dwfl_thread_getframes) 595 (dwfl_frame_pc): New declarations. 596 * libdwflP.h (Dwfl_Process): New typedef. 597 (LIBEBL_BAD, CORE_MISSING, INVALID_REGISTER, PROCESS_MEMORY_READ) 598 (PROCESS_NO_ARCH, PARSE_PROC, INVALID_DWARF, UNSUPPORTED_DWARF) 599 (NEXT_THREAD_FAIL, ATTACH_STATE_CONFLICT, NO_ATTACH_STATE, NO_UNWIND) 600 (INVALID_ARGUMENT): New DWFL_ERROR entries. 601 (struct Dwfl): New entry process. 602 (struct Dwfl_Process, struct Dwfl_Thread, struct Dwfl_Frame) 603 (__libdwfl_frame_reg_get, __libdwfl_frame_reg_set) 604 (__libdwfl_process_free, __libdwfl_frame_unwind) 605 (__libdwfl_attach_state_for_pid, __libdwfl_attach_state_for_core) 606 (__libdwfl_segment_start, __libdwfl_segment_end): New declarations. 607 (dwfl_attach_state, dwfl_pid, dwfl_thread_dwfl, dwfl_thread_tid) 608 (dwfl_frame_thread, dwfl_thread_state_registers) 609 (dwfl_thread_state_register_pc, dwfl_getthreads, dwfl_thread_getframes) 610 (dwfl_frame_pc): New INTDECL entries. 611 * linux-proc-maps.c (dwfl_linux_proc_report): Call 612 __libdwfl_attach_state_for_pid. 613 * segment.c (segment_start): Rename to ... 614 (__libdwfl_segment_start): ... here and make it internal_function. 615 (segment_end): Rename to ... 616 (__libdwfl_segment_end): ... here and make it internal_function. 617 (reify_segments, dwfl_report_segment): Rename them at the callers. 618 619 2013-11-07 Jan Kratochvil <jan.kratochvil (a] redhat.com> 620 621 * core-file.c (dwfl_core_file_report): Remove the use of MAX. 622 623 2013-11-07 Jan Kratochvil <jan.kratochvil (a] redhat.com> 624 625 * core-file.c (dwfl_core_file_report): Replaced variable sniffed by 626 retval. Fix one forgotten LISTED increase. 627 628 2013-11-07 Jan Kratochvil <jan.kratochvil (a] redhat.com> 629 630 Fix core files for re-prelink-ed files. 631 * core-file.c (dynamic_vaddr_get): New function. 632 (dwfl_core_file_report): New variable file_dynamic_vaddr. Call 633 dynamic_vaddr_get instead of using L_ADDR. 634 * libdwflP.h (struct r_debug_info_module): Remove field l_addr. 635 * link_map.c (report_r_debug): Do not initialize l_addr. 636 637 2013-11-07 Jan Kratochvil <jan.kratochvil (a] redhat.com> 638 639 Code cleanup. 640 * core-file.c (dwfl_core_file_report): Reindent block of code by 641 continue keyword. 642 643 2013-10-30 Jan Kratochvil <jan.kratochvil (a] redhat.com> 644 645 * argp-std.c (parse_opt): Use executable parameter of 646 dwfl_core_file_report. 647 * core-file.c (dwfl_core_file_report): Add parameter executable. Set 648 it to DWFL. Add NEW_VERSION for it. 649 (_compat_without_executable_dwfl_core_file_report): New. Twice. 650 * libdwfl.h (dwfl_core_file_report): Add parameter executable, update 651 the function comment. 652 653 2013-10-15 Mark Wielaard <mjw (a] redhat.com> 654 655 * linux-proc-maps.c (proc_maps_report): Ignore non-absolute file 656 mappings. 657 (dwfl_linux_proc_find_elf): Don't abort, just return failure. 658 659 2013-09-12 Mark Wielaard <mjw (a] redhat.com> 660 661 * cu.c (intern_cu): If dwarf_offdie fails free cu. 662 663 2013-09-12 Mark Wielaard <mjw (a] redhat.com> 664 665 * linux-proc-maps.c (proc_maps_report): Don't fclose FILE in 666 bad_report. 667 668 2013-09-12 Mark Wielaard <mjw (a] redhat.com> 669 670 * dwfl_module_getdwarf.c (find_symtab): Call elf_getdata with 671 aux_xndxscn, not xndxscn, for aux_symxndxdata. 672 673 2013-08-25 Mark Wielaard <mjw (a] redhat.com> 674 675 * linux-kernel-modules.c (report_kernel): Pass add_p_vaddr as true 676 to dwfl_report_elf. 677 678 2013-07-25 Jan Kratochvil <jan.kratochvil (a] redhat.com> 679 680 * dwfl_segment_report_module.c (dwfl_segment_report_module): Check for 681 conflicts all the modules, not just the first one. Compare L_LD if it 682 is equal, not if it is in a module address range. 683 684 2013-07-23 Jan Kratochvil <jan.kratochvil (a] redhat.com> 685 686 * libdwflP.h (__libdwfl_elf_address_range): Add internal_function. 687 688 2013-07-23 Jan Kratochvil <jan.kratochvil (a] redhat.com> 689 690 * core-file.c (clear_r_debug_info): Close also ELF and FD. 691 (dwfl_core_file_report): Call __libdwfl_report_elf for 692 R_DEBUG_INFO.MODULE. 693 * dwfl_report_elf.c (__libdwfl_elf_address_range): New function from 694 code of ... 695 (__libdwfl_report_elf): ... this function. Call it. 696 * dwfl_segment_report_module.c: Include unistd.h. 697 (dwfl_segment_report_module): Use basename for MODULE->NAME. 698 Clear MODULE if it has no build-id and we have segment with build-id. 699 Ignore this segment only if MODULE still contains valid ELF. 700 * libdwflP.h (__libdwfl_elf_address_range): New declaration. 701 (struct r_debug_info_module): New fields fd, elf, l_addr, start, end 702 and disk_file_has_build_id. 703 (dwfl_link_map_report): Extend the comment. 704 * link_map.c (report_r_debug): Extend the comment. Always fill in new 705 r_debug_info_module. Initialize also the new r_debug_info_module 706 fields. Remove one FIXME comment. Call __libdwfl_elf_address_range 707 instead of __libdwfl_report_elf when R_DEBUG_INFO is not NULL. 708 709 2013-07-19 Jan Kratochvil <jan.kratochvil (a] redhat.com> 710 711 * libdwflP.h (__libdwfl_find_elf_build_id): Add internal_function. 712 713 2013-07-02 Mark Wielaard <mjw (a] redhat.com> 714 715 * relocate.c (__libdwfl_relocate_value): Remove mod->e_type assert. 716 717 2013-06-05 Mark Wielaard <mjw (a] redhat.com> 718 719 * link_map.c (report_r_debug): Always call release_buffer after 720 memory_callback succeeded reading build_id. 721 722 2013-05-30 Jan Kratochvil <jan.kratochvil (a] redhat.com> 723 724 * argp-std.c (parse_opt) <ARGP_KEY_SUCCESS> <opt->core> <opt->e>: Set 725 executable_for_core before calling dwfl_core_file_report. 726 * core-file.c (clear_r_debug_info): New function. 727 (dwfl_core_file_report): Move raw segments reporting lower. New 728 variable r_debug_info, pass it to dwfl_segment_report_module. Call 729 clear_r_debug_info in the end. Return sum of LISTED and SNIFFED. 730 * dwfl_module_build_id.c (check_notes): Move into 731 __libdwfl_find_elf_build_id. 732 (__libdwfl_find_build_id): Rename to ... 733 (__libdwfl_find_elf_build_id): ... here. Add parameters build_id_bits, 734 build_id_elfaddr and build_id_len. Verify MOD vs. ELF. 735 (__libdwfl_find_elf_build_id) (check_notes): Remove parameters mod and 736 set, rename data_vaddr to data_elfaddr. Do not call found_build_id. 737 (__libdwfl_find_elf_build_id): Update the check_notes caller, do not 738 adjust its data_elfaddr parameter. 739 (__libdwfl_find_build_id): New wrapper of __libdwfl_find_elf_build_id. 740 * dwfl_segment_report_module.c (dwfl_segment_report_module): New 741 parameter r_debug_info. New variable name_is_final. Adjust addresses 742 according to R_DEBUG_INFO->MODULE. Check conflicts against DWFL. 743 Do not overwrite NAME by SONAME if NAME_IS_FINAL. 744 * libdwflP.h (__libdwfl_find_elf_build_id): New declaration. 745 (struct r_debug_info_module, struct r_debug_info): New definitions. 746 (dwfl_segment_report_module, dwfl_link_map_report): Add parameter 747 r_debug_info. 748 * link_map.c: Include fcntl.h. 749 (report_r_debug): Add parameter r_debug_info, describe it in the 750 function comment. Delete dwfl_addrmodule call and its dependent code. 751 Verify build-id before calling dwfl_report_elf, also supply 752 executable_for_core to it. Store r_debug_info->module info when 753 appropriate. 754 (dwfl_link_map_report): Add parameter r_debug_info. New variable 755 in_ok. Try to read IN from EXECUTABLE_FOR_CORE. Update report_r_debug 756 caller parameters. 757 758 2013-04-30 Jan Kratochvil <jan.kratochvil (a] redhat.com> 759 760 * dwfl_report_elf.c (__libdwfl_report_elf): Add parameter add_p_vaddr. 761 Set it to true for ET_EXEC and ET_CORE. Provide alternative 762 setup of START and BIAS if !ADD_P_VADDR. Set END from BIAS, not BASE. 763 (dwfl_report_elf): Add parameter add_p_vaddr. Pass it down. Add 764 NEW_VERSION. 765 (_compat_without_add_p_vaddr_dwfl_report_elf) <SHARED>: New, with 766 COMPAT_VERSION. 767 * libdwfl.h (dwfl_report_elf): Add parameter add_p_vaddr. Describe it. 768 * libdwflP.h (__libdwfl_report_elf): Add parameter add_p_vaddr. 769 * link_map.c (report_r_debug): Use true add_p_vaddr for dwfl_report_elf. 770 * linux-kernel-modules.c (report_kernel): Use false add_p_vaddr for 771 dwfl_report_elf. 772 * offline.c (process_elf): Use true add_p_vaddr for dwfl_report_elf. 773 774 2013-04-27 Mark Wielaard <mjw (a] redhat.com> 775 776 * link_map.c: #include system.h. 777 778 2013-04-26 Jan Kratochvil <jan.kratochvil (a] redhat.com> 779 780 * link_map.c (BE32, BE64, LE32, LE64): Delete the definitions, move 781 them to lib/system.h. 782 783 2013-04-24 Mark Wielaard <mjw (a] redhat.com> 784 785 * Makefile.am: Use AM_CPPFLAGS instead of INCLUDES. 786 787 2013-03-20 Jan Kratochvil <jan.kratochvil (a] redhat.com> 788 789 * dwfl_report_elf.c (__libdwfl_report_elf): Remove BASE aligning. 790 791 2013-03-12 Mark Wielaard <mjw (a] redhat.com> 792 793 * dwfl_getsrclines.c (dwfl_getsrclines): Return 0 on success. 794 795 2013-02-22 Mark Wielaard <mjw (a] redhat.com> 796 797 * open.c (__libdw_gunzip,__libdw_bunzip2,__libdw_unlzma): Define 798 as DWFL_E_BADELF when not used. 799 800 2013-02-10 Mark Wielaard <mjw (a] redhat.com> 801 802 * argp-std.c (parse_opt): Use opt->core and opt->e explicitly in 803 failure messages When handling ARGP_KEY_SUCCESS because arg will 804 not have been set. 805 806 2013-01-30 Jan Kratochvil <jan.kratochvil (a] redhat.com> 807 808 * linux-proc-maps.c: Include system.h. 809 (PROCEXEFMT, get_pid_class): New. 810 (grovel_auxv): Detect 32-bit vs. 64-bit auxv, possibly call 811 get_pid_class. 812 813 2013-01-23 Mark Wielaard <mjw (a] redhat.com> 814 815 * dwfl_module_getdwarf.c (find_aux_sym): Don't substract one 816 from aux_syments by default. 817 (find_symtab): Also succeed when only aux_symdata is found. 818 When no symtab is found always try to load auxiliary table. 819 (dwfl_module_getsymtab): Substract one from result when both 820 tables have symbols. 821 * dwfl_module_getsym.c (dwfl_module_getsym): Only skip auxiliary 822 zero entry when both tables have symbols. 823 * dwfl_module_addrsym.c (dwfl_module_addrsym): Only substract 824 one from first_global when both tables have symbols. 825 826 2013-01-16 Mark Wielaard <mjw (a] redhat.com> 827 828 * libdwflP.h (struct Dwfl_Module): Add aux_sym, aux_symdata, 829 aux_syments, aux_symstrdata, aux_symxndxdata and aux_first_global. 830 (dwfl_adjusted_aux_sym_addr): New function. 831 (dwfl_deadjust_aux_sym_addr): Likewise. 832 (dwfl_adjusted_st_value): Take and check symfile argument. 833 (dwfl_deadjust_st_value): Likewise. 834 * dwfl_module_getdwarf.c (find_prelink_address_sync): Take and 835 use dwfl_file as argument to set address_sync. 836 (find_debuginfo): Call find_prelink_address_sync with debug file. 837 (find_aux_sym): New function. 838 (find_symtab): Use find_aux_sym if all we have is the dynsym table 839 and fill in aux DwflModule fields. 840 (dwfl_module_getsymtab): Return syments plus aux_syments. 841 (load_symtab): Always set first_global. 842 * dwfl_module_addrsym.c (dwfl_module_addrsym): Check symfile 843 when using same_section. Calculate first_global based on both 844 mod->first_global and mod->aux_first_global. 845 * dwfl_module.c (__libdwfl_module_free): Free aux_sym. 846 * dwfl_module_getsym.c (dwfl_module_getsym): Use auxsym table 847 to retrieve symbol and name if necessary, making sure all locals 848 from any table come before any globals. 849 * dwfl_module_info.c (dwfl_module_info): Call dwfl_adjusted_st_value 850 with symfile. 851 * relocate.c (resolve_symbol): Likewise. 852 853 2013-01-07 Roland McGrath <roland (a] hack.frob.com> 854 855 * link_map.c (auxv_format_probe): Handle unaligned 64-bit data, but 856 still assume the data is at least 32-bit aligned anyway. 857 (dwfl_link_map_report): Handle unaligned auxv data. 858 859 2012-12-11 Mark Wielaard <mjw (a] redhat.com> 860 861 * linux-kernel-modules.c (report_kernel): Only free fname if 862 find_kernel_elf succeeds and allocates it. 863 (report_kernel_archive): Fix brackets around unlikely expression. 864 865 2012-11-29 Jan Kratochvil <jan.kratochvil (a] redhat.com> 866 867 * argp-std.c: Update Copyright year. 868 (offline_find_elf): New function. 869 (offline_callbacks): Use it for find_elf. 870 (struct parse_opt): New. 871 (parse_opt): New key ARGP_KEY_INIT. In other make hook struct 872 parse_opt pointer from former Dwfl pointer. Delay 'e and OPT_COREFILE 873 processing till ARGP_KEY_SUCCESS. Initialize state->input already from 874 ARGP_KEY_SUCCESS. Modify the cleanup in ARGP_KEY_ERROR. Make the 875 final state->input initialization optional. 876 * dwfl_end.c: Update Copyright year. 877 (dwfl_end): Free executable_for_core. 878 * libdwflP.h: Update Copyright year. 879 (struct Dwfl): New field executable_for_core. 880 881 2012-11-20 Jan Kratochvil <jan.kratochvil (a] redhat.com> 882 883 * dwfl_report_elf.c (__libdwfl_report_elf): Simplify START and BIAS 884 calculation. 885 886 2012-10-17 Jan Kratochvil <jan.kratochvil (a] redhat.com> 887 888 * dwfl_module_getdwarf.c (mod_verify_build_id): New function with code 889 from ... 890 (__libdwfl_getelf): ... here. Call it. 891 892 2012-10-17 Jan Kratochvil <jan.kratochvil (a] redhat.com> 893 894 * libdwfl.h (dwfl_module_getelf): Add __nonnull_attribute__. 895 896 2012-10-10 Jan Kratochvil <jan.kratochvil (a] redhat.com> 897 898 * dwfl_segment_report_module.c (dwfl_segment_report_module): 899 Initialize mod->MAIN_BIAS. 900 901 2012-10-10 Jan Kratochvil <jan.kratochvil (a] redhat.com> 902 903 * dwfl_module_addrsym.c (dwfl_module_addrsym): New function 904 binding_value. Use it for both zero and non-zero size symbols 905 comparisons. 906 907 2012-10-01 Mark Wielaard <mjw (a] redhat.com> 908 909 * cu.c (cudie_offset): Don't use type_sig8, it might not be 910 initialized and these are always real CUs, never TUs. 911 912 2012-10-01 Mark Wielaard <mjw (a] redhat.com> 913 914 * derelocate.c (find_section): Check next section exists before 915 accessing it. 916 917 2012-08-01 Petr Machata <pmachata (a] redhat.com> 918 919 * offline.c (process_archive_member): Ignore entry "/SYM64/". 920 921 2012-03-28 Roland McGrath <roland (a] hack.frob.com> 922 923 * dwfl_segment_report_module.c 924 (dwfl_segment_report_module: read_portion): Don't use existing buffer 925 when FILESZ is zero (string mode) and available portion doesn't hold 926 a terminated string. 927 928 2011-12-02 Roland McGrath <roland (a] hack.frob.com> 929 930 * elf-from-memory.c (elf_from_remote_memory): Fix ELFCLASS64 case 931 to use elf64_xlatetom and PHDRS.p64. 932 Reported by Serge Pavlov <serge.pavlov.at.gnu (a] gmail.com>. 933 934 2011-11-31 Mark Wielaard <mjw (a] redhat.com> 935 936 * dwfl_module_addrsym.c (dwfl_module_addrsym): First search all 937 global symbols. Then only when that doesn't provide a match search 938 all local symbols too. 939 * dwfl_module_getdwarf.c (load_symtab): Take first_global int arg 940 and fill it in. 941 (find_symtab): Initialize mod->first_global and pass it to load_symtab. 942 * libdwfl/libdwflP.h (Dwfl_Module): Add first_global field. 943 944 2011-11-31 Mark Wielaard <mjw (a] redhat.com> 945 946 * dwfl_module_addrsym.c (dwfl_module_addrsym): Only update 947 sizeless_sym if needed and closer to desired addr. 948 949 2011-10-20 Mark Wielaard <mjw (a] redhat.com> 950 951 * derelocate.c (cache_sections): Intern mod->reloc_info check. 952 (dwfl_module_relocations): Don't check mod->reloc_info. 953 (dwfl_module_relocation_info): Likewise. 954 (find_section): Likewise. 955 956 2011-07-09 Roland McGrath <roland (a] hack.frob.com> 957 958 * image-header.c (LE32): Macro removed (now in lib/system.h). 959 960 2011-04-11 Mark Wielaard <mjw (a] redhat.com> 961 962 * linux-kernel-modules.c (vmlinux_suffixes): Guard definition 963 by check for zlib, bzlib or lzma defines to check it isn't empty. 964 (try_kernel_name): Use same guard for use of vmlinux_suffixes. 965 966 2011-03-08 Roland McGrath <roland (a] redhat.com> 967 968 * dwfl_module_getdwarf.c (open_elf): Clear errno before CBFAIL. 969 Reported by Kurt Roeckx <kurt (a] roeckx.be>. 970 971 2011-02-11 Roland McGrath <roland (a] redhat.com> 972 973 * linux-kernel-modules.c (try_kernel_name): Try .gz, .bz2, .xz 974 suffixes if corresponding decompression support is enabled. 975 976 2011-02-01 Roland McGrath <roland (a] redhat.com> 977 978 * dwfl_module_getdwarf.c (find_prelink_address_sync): Use the 979 section-end address as the synchronization point, rather than sh_addr. 980 981 * dwfl_module_getdwarf.c (find_prelink_address_sync): Discover 982 PT_INTERP p_vaddr separately from main phdrs and undo phdrs. 983 984 * dwfl_module_getdwarf.c (find_prelink_address_sync): Fix pasto in 985 last change, so we recognize PT_INTERP in ELFCLASS64 correctly. 986 987 2011-01-11 Roland McGrath <roland (a] redhat.com> 988 989 * dwfl_module_getdwarf.c (open_elf): Remove section-based 990 address_sync fixup from here. 991 (find_prelink_address_sync): New function. 992 (find_debuginfo): Call it. 993 * libdwflP.h (DWFL_ERRORS): Add BAD_PRELINK error. 994 995 2011-01-04 Roland McGrath <roland (a] redhat.com> 996 997 * dwfl_module_getdwarf.c (open_elf): Enhance address_sync calculation 998 logic to consider section addresses, the better to survive all the 999 possible prelink machinations. 1000 * libdwflP.h (struct dwfl_file): Comment change. 1001 1002 2010-11-30 Roland McGrath <roland (a] redhat.com> 1003 1004 * derelocate.c (dwfl_module_relocations): Remove over-eager assert. 1005 1006 2010-11-12 Roland McGrath <roland (a] redhat.com> 1007 1008 * libdwflP.h (struct Dwfl_Module): New member main_bias. 1009 (dwfl_adjusted_address, dwfl_deadjust_address): Use it. 1010 * dwfl_module_getdwarf.c (__libdwfl_getelf): Initialize it. 1011 1012 * libdwflP.h (dwfl_deadjust_address): New function. 1013 (dwfl_deadjust_dwarf_addr, dwfl_deadjust_st_value): New functions. 1014 * cu.c (addrarange): Use dwfl_deadjust_dwarf_addr. 1015 * dwfl_module_addrsym.c: Use dwfl_deadjust_st_value. 1016 1017 2010-11-11 Roland McGrath <roland (a] redhat.com> 1018 1019 * libdwflP.h (struct dwfl_file): Remove bias member. 1020 Add vaddr and address_sync members instead. 1021 (dwfl_adjusted_address): Calculate using vaddr. 1022 (dwfl_adjusted_dwarf_addr): Calculate using address_sync and call that. 1023 (dwfl_adjusted_st_value): Use one of those calls. 1024 * dwfl_module_getdwarf.c (open_elf): Initialize vaddr and address_sync. 1025 * dwfl_segment_report_module.c (dwfl_segment_report_module): Likewise. 1026 * derelocate.c (dwfl_module_relocations): Update ET_EXEC assertions. 1027 * link_map.c (consider_executable): Adjust only MOD->low_addr for 1028 detected PIE bias change. 1029 1030 * libdwflP.h (dwfl_adjusted_dwarf_addr): New function. 1031 * dwfl_module_info.c: Use it. 1032 * cu.c (addrarange): Likewise. 1033 * dwfl_dwarf_line.c: Likewise. 1034 * dwfl_module_dwarf_cfi.c: Likewise. 1035 * dwfl_lineinfo.c: Likewise. 1036 * dwfl_nextcu.c: Likewise. 1037 * dwfl_module_getdwarf.c (dwfl_module_getdwarf): Likewise. 1038 1039 * libdwflP.h (dwfl_adjusted_st_value): New function. 1040 * relocate.c (resolve_symbol): Use it. 1041 * dwfl_module_getsym.c: Likewise. 1042 * dwfl_module_addrsym.c: Likewise. 1043 * dwfl_module_info.c: Likewise. 1044 1045 * libdwflP.h (dwfl_adjusted_address): New function. 1046 * dwfl_module_build_id.c (__libdwfl_find_build_id): Use it. 1047 * relocate.c (__libdwfl_relocate_value): Likewise. 1048 * derelocate.c (cache_sections): Likewise. 1049 (dwfl_module_address_section): Likewise. 1050 * dwfl_module_getelf.c: Likewise. 1051 * dwfl_module_eh_cfi.c: Likewise. 1052 * link_map.c (consider_executable): Likewise. 1053 1054 2010-08-24 Roland McGrath <roland (a] redhat.com> 1055 1056 * dwfl_dwarf_line.c: New file. 1057 * Makefile.am (libdwfl_a_SOURCES): Add it. 1058 1059 2010-08-18 Roland McGrath <roland (a] redhat.com> 1060 1061 * link_map.c (report_r_debug): Use found name if we have no name, 1062 even if we already have an Elf handle. 1063 1064 2010-06-30 Roland McGrath <roland (a] redhat.com> 1065 1066 * linux-kernel-modules.c (dwfl_linux_kernel_find_elf): Don't be 1067 confused by -1 return from dwfl_build_id_find_elf after it opened 1068 the Elf handle. 1069 * find-debuginfo.c (dwfl_standard_find_debuginfo): Likewise for 1070 dwfl_build_id_find_debuginfo. 1071 1072 2010-06-16 Roland McGrath <roland (a] redhat.com> 1073 1074 * cu.c (cudie_offset): Use DIE_OFFSET_FROM_CU_OFFSET macro. 1075 1076 2010-06-14 Roland McGrath <roland (a] redhat.com> 1077 1078 * find-debuginfo.c (try_open): Take new arg MAIN_STAT. Compare 1079 candidate file to that st_dev/st_ino and pretend it didn't exist 1080 if they match. 1081 (find_debuginfo_in_path): Update caller, pass main file's info. 1082 1083 2010-05-20 Roland McGrath <roland (a] redhat.com> 1084 1085 * linux-proc-maps.c (find_sysinfo_ehdr): Renamed to ... 1086 (grovel_auxv): ... this. Take DWFL argument. 1087 (dwfl_linux_proc_report): Update caller. 1088 1089 * dwfl_module_getdwarf.c (open_elf): Calculate alignment for bias 1090 based on dwfl->segment_align or manifest alignment of MOD->low_addr. 1091 1092 2010-05-19 Roland McGrath <roland (a] redhat.com> 1093 1094 * linux-kernel-modules.c (intuit_kernel_bounds): Rewritten. 1095 1096 2010-05-06 Roland McGrath <roland (a] redhat.com> 1097 1098 * segment.c (insert): Clear inserted elements of DWFL->lookup_module. 1099 1100 * libdwflP.h (DWFL_ERRORS): Add WRONG_ID_ELF. 1101 * dwfl_build_id_find_elf.c: Set MOD->main.valid when there is a build 1102 ID but we didn't find a file. 1103 * dwfl_module_getdwarf.c (__libdwfl_getelf): When that's set, check 1104 and refuse any fallback file-by-name if it lacks the matching ID. 1105 1106 * dwfl_error.c (dwfl_errno): Add INTDEF. 1107 * libdwflP.h: Add INTDECL. 1108 1109 * dwfl_module_getdwarf.c (open_elf): Do elf_end and clear FILE->elf in 1110 failure cases. 1111 1112 2010-05-04 Roland McGrath <roland (a] redhat.com> 1113 1114 * dwfl_segment_report_module.c: Use "[pie]" rather than "[dso]" for an 1115 ET_DYN that has a DT_DEBUG. 1116 1117 * dwfl_segment_report_module.c: Fix jump-start of NDX-finding loop. 1118 1119 * segment.c (insert): Fix moving of values following insertion. 1120 (reify_segments): Fix up MOD->segment backpointer indices after 1121 later insertions in the main loop invalidate them. 1122 1123 * link_map.c (dwfl_link_map_report): Detect bias of embedded phdrs and 1124 apply it to PT_DYNAMIC p_vaddr so we handle a PIE correctly. 1125 1126 * core-file.c (dwfl_core_file_report): Return any nonzero count of 1127 modules reported, even if link_map grovelling failed and only sniffing 1128 found anything. 1129 1130 2010-04-26 Roland McGrath <roland (a] redhat.com> 1131 1132 * relocate.c (relocate_section): Treat R_*_NONE reloc as no reloc. 1133 Works around probably-wrong ld -r behavior for case of a DWARF address 1134 constant that refers to a discarded SHF_ALLOC section. 1135 1136 2010-04-14 Roland McGrath <roland (a] redhat.com> 1137 1138 * link_map.c (report_r_debug): Limit iterations on the l_next chain to 1139 an upper bound on sane possible number of elements. 1140 1141 2010-03-11 Roland McGrath <roland (a] redhat.com> 1142 1143 * link_map.c (auxv_format_probe): Fix scanning loop, so we really scan 1144 the second half for 32-bit matches. 1145 1146 2010-03-10 Roland McGrath <roland (a] redhat.com> 1147 1148 * core-file.c (dwfl_core_file_report): Punt EHDR argument. 1149 * argp-std.c (parse_opt): Update caller. 1150 * libdwfl.h: Declare dwfl_core_file_report. 1151 * libdwflP.h: Don't. 1152 1153 2010-02-17 Roland McGrath <roland (a] redhat.com> 1154 1155 * dwfl_segment_report_module.c (addr_segndx): Take new flag argument. 1156 If set, find the first index not below ADDR. 1157 (dwfl_segment_report_module): Update callers. 1158 Pass true when calculating return value. 1159 1160 2010-02-15 Roland McGrath <roland (a] redhat.com> 1161 1162 * Makefile.am: Use config/eu.am for common stuff. 1163 1164 * find-debuginfo.c (find_debuginfo_in_path): Fix uninitialized 1165 variable in failure path. 1166 1167 2010-02-02 Mark Wielaard <mjw (a] redhat.com> 1168 1169 * dwfl_module_dwarf_cfi.c (dwfl_module_dwarf_cfi): Always set bias. 1170 * dwfl_module_eh_cfi.c (dwfl_module_eh_cfi): Likewise 1171 1172 2010-01-07 Roland McGrath <roland (a] redhat.com> 1173 1174 * core-file.c (dwfl_core_file_report): Use elf_getphdrnum. 1175 * dwfl_module_build_id.c (__libdwfl_find_build_id): Likewise. 1176 * dwfl_module_getdwarf.c (open_elf, find_dynsym): Likewise. 1177 * dwfl_report_elf.c (__libdwfl_report_elf): Likewise. 1178 1179 2010-01-06 Roland McGrath <roland (a] redhat.com> 1180 1181 * relocate.c (relocate_getsym): For SHN_COMMON, zero st_value. 1182 (relocate_section): Let unresolved SHN_COMMON symbol stay 0. 1183 1184 2009-11-16 Roland McGrath <roland (a] redhat.com> 1185 1186 * relocate.c (relocate_section): Skip SHT_NOBITS or empty target scn. 1187 1188 2009-11-12 Petr Machata <pmachata (a] redhat.com> 1189 1190 * core-file.c (dwfl_elf_phdr_memory_callback): Only load ahead if 1191 the chunk is both offset-contiguous and vaddr-contiguous. 1192 1193 2009-11-05 Roland McGrath <roland (a] redhat.com> 1194 1195 * link_map.c (report_r_debug): Skip entries with l_ld==0. 1196 Use dwfl_addrmodule for l_ld lookup, don't bail on lookup failure. 1197 1198 2009-09-04 Roland McGrath <roland (a] redhat.com> 1199 1200 * image-header.c (__libdw_image_header): Fix tranposed comparison. 1201 1202 2009-08-27 Roland McGrath <roland (a] redhat.com> 1203 1204 * image-header.c: New file. 1205 * Makefile.am (libdwfl_a_SOURCES): Add it. 1206 * libdwflP.h: Declare __libdw_image_header. 1207 * open.c (decompress): Don't consume ELF on failure. 1208 (what_kind): New function, broken out of ... 1209 (__libdw_open_file): ... here. Call it. 1210 If it fails, try __libdw_image_header and then try what_kind again. 1211 1212 * gzip.c (unzip): Reuse *WHOLE as first INPUT_BUFFER, 1213 leave it behind for next decompressor. 1214 * open.c (decompress): Free BUFFER on failure. 1215 1216 2009-08-26 Roland McGrath <roland (a] redhat.com> 1217 1218 * gzip.c (find_zImage_payload): New function, broken out of ... 1219 (mapped_zImage): ... here. Call it. 1220 (find_zImage_payload) [LZMA]: Match LZMA-compressed kernels with 1221 stupid method of just trying the decoder. 1222 1223 * open.c [USE_LZMA]: Try __libdw_unlzma. 1224 * libdwflP.h: Declare it. 1225 (DWFL_ERRORS): Add DWFL_E_LZMA. 1226 * gzip.c [LZMA]: Implement liblzma version for XZ file format. 1227 * lzma.c: New file. 1228 * Makefile.am [LZMA] (libdwfl_a_SOURCES): Add it. 1229 1230 * gzip.c (mapped_zImage): Limit scan to 32kb. 1231 Make this unconditional, support bzip2 kernel images too. 1232 (unzip): Use direct inflate method for non-mmap case too. 1233 Only zlib uses the stream method. 1234 1235 2009-08-09 Roland McGrath <roland (a] redhat.com> 1236 1237 * dwfl_module_build_id.c: Use new macros for versioned definitions. 1238 1239 2009-07-08 Roland McGrath <roland (a] redhat.com> 1240 1241 * dwfl_module_dwarf_cfi.c: New file. 1242 * dwfl_module_eh_cfi.c: New file. 1243 * Makefile.am (libdwfl_a_SOURCES): Add them. 1244 * libdwflP.h (struct Dwfl_Module): New members `dwarf_cfi', `eh_cfi. 1245 Add INTDECL for dwfl_module_eh_cfi, dwfl_module_dwarf_cfi. 1246 1247 2009-07-08 Roland McGrath <roland (a] redhat.com> 1248 1249 * libdwflP.h (struct Dwfl_Module): Reorder members to pack better. 1250 1251 2009-06-18 Mark Wielaard <mjw (a] redhat.com> 1252 1253 * dwfl_report_elf.c (__libdwfl_report_elf): Return NULL on overlap. 1254 1255 2009-06-13 Ulrich Drepper <drepper (a] redhat.com> 1256 1257 * derelocate.c: Don't use deprecated libelf functions. 1258 * dwfl_module_getdwarf.c: Likewise. 1259 * relocate.c: Likewise. 1260 1261 2009-04-23 Ulrich Drepper <drepper (a] redhat.com> 1262 1263 * dwfl_module_build_id.c: Define versioned symbols only if SHARED is 1264 defined. Otherwise just define the latest version. 1265 1266 2009-04-22 Roland McGrath <roland (a] redhat.com> 1267 1268 * relocate.c (resolve_symbol): Apply correct bias to st_value found in 1269 a non-ET_REL module. 1270 1271 * dwfl_module_build_id.c (__libdwfl_find_build_id): Fix last change to 1272 adjust properly for non-ET_REL. 1273 1274 2009-04-21 Roland McGrath <roland (a] redhat.com> 1275 1276 * dwfl_module_getsym.c: Apply non-ET_REL bias only if SHF_ALLOC. 1277 1278 * relocate.c (__libdwfl_relocate_value): Assert that MOD is ET_REL. 1279 * derelocate.c (cache_sections): Call __libdwfl_relocate_value only 1280 for ET_REL. 1281 * dwfl_module_build_id.c (__libdwfl_find_build_id): Likewise. 1282 1283 2009-04-20 Roland McGrath <roland (a] redhat.com> 1284 1285 * dwfl_module_getdwarf.c (__libdwfl_getelf): Add internal_function. 1286 1287 2009-04-19 Roland McGrath <roland (a] redhat.com> 1288 1289 * dwfl_module_getdwarf.c (find_file): Renamed to ... 1290 (__libdwfl_getelf): ... this. Make it global. 1291 (find_symtab, find_dw): Update callers. 1292 (dwfl_module_getelf): Functions moved ... 1293 * dwfl_module_getelf.c: ... here, new file. 1294 * Makefile.am (libdwfl_a_SOURCES): Add it. 1295 * libdwflP.h: Declare __libdwfl_getelf. 1296 1297 2009-04-14 Roland McGrath <roland (a] redhat.com> 1298 1299 * dwfl_segment_report_module.c: Handle DT_STRTAB value being either 1300 absolute (already adjusted in place) or needing load bias adjustment. 1301 1302 * core-file.c (dwfl_elf_phdr_memory_callback): Fix return value for 1303 gelf_getphdr failure. Fix file size limit checks. 1304 1305 * dwfl_segment_report_module.c: Fix underflow in DYNSTRSZ check. 1306 1307 2009-04-08 Roland McGrath <roland (a] redhat.com> 1308 1309 * dwfl_module_getsym.c: Don't adjust for bias again after 1310 __libdwfl_relocate_value. 1311 1312 * relocate.c (__libdwfl_relocate_value): Don't adjust a value from 1313 a non-SHF_ALLOC section. 1314 (relocate_getsym): Test st_shndx for SHN_* values, not *SHNDX. 1315 * dwfl_module_getsym.c (dwfl_module_getsym): Likewise. 1316 1317 2009-03-09 Roland McGrath <roland (a] redhat.com> 1318 1319 * dwfl_module_build_id.c (__libdwfl_find_build_id): Move SHSTRNDX 1320 variable to outer scope, so we cache it for the loop. 1321 1322 * relocate.c (__libdwfl_relocate_value): Add MOD->main.bias to sh_addr. 1323 1324 2009-02-12 Roland McGrath <roland (a] redhat.com> 1325 1326 * dwfl_module_build_id.c (__libdwfl_find_build_id): Use 1327 __libdwfl_relocate_value to find correct sh_addr value. 1328 1329 2009-02-10 Roland McGrath <roland (a] redhat.com> 1330 1331 * dwfl_report_elf.c (__libdwfl_report_elf): Take new arg SANITY. 1332 If false, don't fail for NO_PHDR. 1333 (dwfl_report_elf): Update caller. 1334 * libdwflP.h: Update decl. 1335 * offline.c (process_elf): Call it with false, so we don't refuse 1336 dubiously-formed objects here. 1337 1338 * link_map.c (consider_executable): Don't assert dwfl_addrsegment 1339 finds our module. We shouldn't crash when we confuse some guesses. 1340 1341 2009-02-10 Ulrich Drepper <drepper (a] redhat.com> 1342 1343 * open.c (decompress): Avoid crash with empty input file. 1344 1345 2009-01-27 Roland McGrath <roland (a] redhat.com> 1346 1347 * dwfl_report_elf.c (__libdwfl_report_elf): Ignore trailing PT_LOAD 1348 with zero vaddr and memsz. 1349 1350 2009-01-22 Roland McGrath <roland (a] redhat.com> 1351 1352 * open.c (decompress): Move BUFFER, SIZE decls outside #if. 1353 1354 * dwfl_segment_report_module.c (addr_segndx): Remove bogus adjustments 1355 after address-matching loop. 1356 1357 * segment.c (lookup): Fix fencepost in checking for HINT match. 1358 1359 2009-01-14 Roland McGrath <roland (a] redhat.com> 1360 1361 * gzip.c [!BZLIB] (mapped_zImage): New function. 1362 (unzip) [!BZLIB]: Grok Linux kernel zImage format. 1363 1364 2009-01-10 Ulrich Drepper <drepper (a] redhat.com> 1365 1366 * dwfl_error.c: Always use __thread. Remove all !USE_TLS code. 1367 1368 2009-01-08 Roland McGrath <roland (a] redhat.com> 1369 1370 * linux-kernel-modules.c (dwfl_linux_kernel_report_offline): 1371 Skip subdirectory named "source". 1372 (dwfl_linux_kernel_find_elf): Likewise. 1373 1374 2009-01-06 Roland McGrath <roland (a] redhat.com> 1375 1376 * linux-kernel-modules.c (check_suffix): New function. 1377 Match ".ko", ".ko.gz", and ".ko.bz2" suffixes. 1378 (dwfl_linux_kernel_report_offline): Use it. 1379 (dwfl_linux_kernel_find_elf): Likewise. 1380 1381 2009-01-05 Roland McGrath <roland (a] redhat.com> 1382 1383 * argp-std.c (parse_opt): Use __libdw_open_file for core file. 1384 * dwfl_build_id_find_debuginfo.c: Use it to open the file. 1385 * dwfl_build_id_find_elf.c: Likewise. 1386 * dwfl_module_getdwarf.c (open_elf): Likewise. 1387 * dwfl_report_elf.c: Likewise. 1388 * find-debuginfo.c (validate): Likewise. 1389 * offline.c (__libdwfl_report_offline): Likewise. 1390 1391 * libdwflP.h: Declare __libdw_open_file. 1392 * open.c: New file. 1393 * Makefile.am (libdwfl_a_SOURCES): Add it. 1394 1395 * gzip.c: New file. 1396 * Makefile.am [ZLIB] (libdwfl_a_SOURCES): Add it. 1397 * bzip2.c: New file. 1398 * Makefile.am [BZLIB] (libdwfl_a_SOURCES): Add it. 1399 * libdwflP.h: Declare __libdw_gunzip, __libdw_bunzip2. 1400 1401 2008-12-16 Roland McGrath <roland (a] redhat.com> 1402 1403 * dwfl_module_build_id.c (dwfl_module_build_id): Define with alias and 1404 symver magic to bind to ELFUTILS_0.138. 1405 (_BUG_COMPAT_dwfl_module_build_id): New function, bug compatible 1406 wrapper for ELFUTILS_0.130 version set. 1407 1408 2008-12-18 Roland McGrath <roland (a] redhat.com> 1409 1410 * derelocate.c (dwfl_module_relocate_address): Fix last fix: ET_DYN 1411 addresses are taken as relative to MOD->low_addr. 1412 1413 2008-12-15 Roland McGrath <roland (a] redhat.com> 1414 1415 * derelocate.c (dwfl_module_relocate_address): Apply main.bias, not 1416 debug.bias. 1417 1418 2008-12-11 Roland McGrath <roland (a] redhat.com> 1419 1420 * offline.c (process_archive): Don't call elf_end and close if 1421 returning NULL. Check first elf_begin call and set error code 1422 specially for empty archive. 1423 Fixes RHBZ#465878. 1424 1425 2008-12-02 Roland McGrath <roland (a] redhat.com> 1426 1427 * dwfl_getmodules.c (dwfl_getmodules): Typo fix in last change. 1428 1429 2008-11-26 Roland McGrath <roland (a] redhat.com> 1430 1431 * dwfl_getmodules.c (dwfl_getmodules): Encode iteration style in 1432 return value, and interpret encoded OFFSET argument. 1433 1434 2008-10-07 Roland McGrath <roland (a] redhat.com> 1435 1436 * dwfl_module_build_id.c (check_notes): Fix typo in vaddr calculation. 1437 1438 2008-09-29 Roland McGrath <roland (a] redhat.com> 1439 1440 * segment.c (insert): Must realloc DWFL->lookup_module here too. 1441 (dwfl_report_segment): Clear DWFL->lookup_module before insert calls. 1442 1443 2008-08-28 Roland McGrath <roland (a] redhat.com> 1444 1445 * segment.c (reify_segments): Fix last change. 1446 1447 2008-08-27 Roland McGrath <roland (a] redhat.com> 1448 1449 * linux-proc-maps.c (read_proc_memory): Return 0 for EINVAL or EPERM 1450 failure from pread64. 1451 1452 2008-08-26 Roland McGrath <roland (a] redhat.com> 1453 1454 * segment.c (reify_segments): Insert a trailing segment for a module 1455 end that is above the highest current segment. 1456 1457 2008-08-25 Roland McGrath <roland (a] redhat.com> 1458 1459 * dwfl_module_getdwarf.c (open_elf): Extract elf_errno () for 1460 coded return value, not plain DWFL_E_LIBELF. Return DWFL_E_BADELF 1461 if FILE->elf is not ELF_K_ELF. 1462 1463 * dwfl_segment_report_module.c: Add a cast. 1464 1465 2008-08-21 Denys Vlasenko <dvlasenk (a] redhat.com> 1466 1467 * dwfl_module_addrsym.c (dwfl_module_addrsym): Improve logic 1468 which decides which symbol is "closest" to a given address. 1469 1470 2008-08-15 Roland McGrath <roland (a] redhat.com> 1471 1472 * argp-std.c (offline_callbacks): Use dwfl_build_id_find_elf. 1473 (options, parse_opt): Handle --core. 1474 1475 * core-file.c: New file. 1476 * Makefile.am (libdwfl_a_SOURCES): Add it. 1477 * libdwflP.h (dwfl_core_file_report): Declare it. 1478 1479 * link_map.c: New file. 1480 * Makefile.am (libdwfl_a_SOURCES): Add it. 1481 * libdwflP.h (dwfl_link_map_report): Declare it. 1482 1483 * libdwflP.h (MIN, MAX): New macros. 1484 (Dwfl_Memory_Callback): New typedef. 1485 (Dwfl_Module_Callback): New typedef. 1486 (dwfl_segment_report_module): Declare it. 1487 * dwfl_segment_report_module.c: New file. 1488 * Makefile.am (libdwfl_a_SOURCES): Add it. 1489 1490 * derelocate.c (dwfl_module_address_section): Add INTDEF. 1491 * libdwflP.h: Add INTDECL. 1492 1493 * segment.c: New file. 1494 * Makefile.am (libdwfl_a_SOURCES): Add it. 1495 * libdwfl.h: Declare dwfl_addrsegment, dwfl_report_segment. 1496 * libdwflP.h (struct Dwfl): New members lookup_elts, lookup_alloc, 1497 lookup_addr, lookup_module, lookup_segndx, replace removed members 1498 modules, nmodules. 1499 (struct Dwfl_Module): New member segment. 1500 * dwfl_end.c (dwfl_end): Free the new ones. Iterate via modulelist 1501 to each free module. 1502 * dwfl_module.c (dwfl_report_begin_add): Do nothing. 1503 (dwfl_report_begin): Don't call it. Truncate the segment table instead. 1504 (dwfl_report_module): Don't touch DWFL->nmodules. 1505 (dwfl_report_end): Don't touch DWFL->modules and DWFL->nmodules. 1506 (compare_modules): Function removed. 1507 * dwfl_getmodules.c: Rewritten. 1508 Add INTDEF. 1509 * libdwflP.h: Add INTDECLs. 1510 * dwfl_getdwarf.c: Rewritten to call dwfl_getmodules. 1511 * dwfl_addrmodule.c: Rewritten to just call dwfl_addrsegment. 1512 1513 2008-08-03 Roland McGrath <roland (a] redhat.com> 1514 1515 * linux-kernel-modules.c: Include <fts.h> before <config.h>. 1516 1517 2008-07-17 Roland McGrath <roland (a] redhat.com> 1518 1519 * dwfl_build_id_find_elf.c (__libdwfl_open_by_build_id): Set errno to 1520 zero if the failure was only ENOENT. 1521 1522 2008-06-03 Roland McGrath <roland (a] redhat.com> 1523 1524 * dwfl_module_addrsym.c (dwfl_module_addrsym): Exclude undefined 1525 symbols. 1526 1527 2008-05-22 Petr Machata <pmachata (a] redhat.com> 1528 1529 * dwfl_module_getdwarf.c (open_elf): Bias of ET_EXEC files is always 0. 1530 1531 2008-05-06 Roland McGrath <roland (a] frob.com> 1532 1533 * linux-kernel-modules.c (dwfl_linux_kernel_report_offline): Use 1534 FTS_LOGICAL here too. 1535 (dwfl_linux_kernel_find_elf): Likewise. 1536 1537 2008-04-29 Roland McGrath <roland (a] redhat.com> 1538 1539 * find-debuginfo.c (dwfl_standard_find_debuginfo): Try path search 1540 based on canonicalize_file_name if it differs from the supplied name. 1541 1542 * linux-kernel-modules.c (check_module_notes): Use FTS_LOGICAL so 1543 we accept symlinks. 1544 1545 2008-04-27 Roland McGrath <roland (a] redhat.com> 1546 1547 * linux-kernel-modules.c (report_kernel): Fix crash when 1548 dwfl_report_elf fails. 1549 1550 2008-04-05 Roland McGrath <roland (a] redhat.com> 1551 1552 * linux-proc-maps.c (proc_maps_report): Don't leak LAST_FILE. 1553 1554 * dwfl_module_getdwarf.c (find_file): Always free build_id_bits. 1555 Clear it after freeing. 1556 * dwfl_module_report_build_id.c (dwfl_module_report_build_id): Likewise. 1557 1558 2008-03-26 Roland McGrath <roland (a] redhat.com> 1559 1560 * dwfl_module_getdwarf.c (load_symtab): Don't return success for 1561 SHT_DYNSYM, just set *SYMSCN like the comment says. 1562 1563 * dwfl_end.c (dwfl_end): Iterate on modulelist chain, not modules array. 1564 1565 * argp-std.c (parse_opt): On failure, call dwfl_end before argp_failure. 1566 1567 2008-03-19 Roland McGrath <roland (a] redhat.com> 1568 1569 * dwfl_module_getsrc.c: Adjust address for module bias before search. 1570 1571 2008-03-01 Roland McGrath <roland (a] redhat.com> 1572 1573 * libdwflP.h (__libdwfl_seterrno): Remove parameter name from 1574 prototype to avoid older compiler's complaint about reuse of the name. 1575 (__libdwfl_canon_error): Likewise. 1576 1577 2008-02-19 Roland McGrath <roland (a] redhat.com> 1578 1579 * relocate.c (relocate_section): Check for an unhandled relocation 1580 type before resolving a reloc's symbol. Lift DWFL_E_BADRELTYPE -> 1581 DWFL_E_UNKNOWN_MACHINE check out of loops. 1582 1583 * dwfl_module_getdwarf.c (load_dw): Skip relocation if 1584 DEBUGFILE->relocated is already set. 1585 1586 2008-01-26 Roland McGrath <roland (a] redhat.com> 1587 1588 * dwfl_module_getdwarf.c (open_elf): Open FILE->name if it's non-null. 1589 1590 * dwfl_build_id_find_elf.c (__libdwfl_open_by_build_id): Don't clear 1591 incoming *FILE_NAME at the start. 1592 1593 2008-01-08 Roland McGrath <roland (a] redhat.com> 1594 1595 * Makefile.am (euinclude): Variable removed. 1596 (pkginclude_HEADERS): Set this instead of euinclude_HEADERS. 1597 1598 2007-10-23 Roland McGrath <roland (a] redhat.com> 1599 1600 * linux-kernel-modules.c (report_kernel_archive): Reorder the kernel 1601 module to appear first. 1602 1603 2007-10-20 Roland McGrath <roland (a] redhat.com> 1604 1605 * offline.c (process_archive_member): Take FD argument, pass it down 1606 to process_file. Return Elf_Cmd, not bool. 1607 Call elf_next here, always before elf_end. 1608 (process_archive): Update caller. Don't close FD here unless there 1609 are no member refs. 1610 1611 * dwfl_module.c (free_file): Close fd only when elf_end returns zero. 1612 1613 * libdwflP.h (struct dwfl_file): New bool member `relocated'. 1614 * dwfl_module_getdwarf.c (dwfl_module_getelf): For ET_REL, apply 1615 partial relocation to one or both files. 1616 (dwfl_module_getdwarf): For ET_REL, make sure extra sections' 1617 relocations have been applied to the debug file if dwfl_module_getelf 1618 has been used before. 1619 1620 * relocate.c (resolve_symbol): New function. 1621 (relocate_section): Call it. 1622 1623 * relocate.c (relocate_getsym): Handle null MOD->symfile. 1624 (relocate_section): Take new bool arg, PARTIAL. If true, 1625 no error for BADRELTYPE/RELUNDEF, instead just skip them 1626 and leave only those skipped relocs behind the reloc section. 1627 (__libdwfl_relocate_section): Take new arg, pass it down. 1628 (__libdwfl_relocate): Take new bool arg, DEBUG. If false, 1629 do partial relocation on all sections. 1630 * dwfl_module_getdwarf.c (load_dw): Update caller. 1631 * libdwflP.h: Update decls. 1632 * derelocate.c (dwfl_module_address_section): Pass new argument 1633 to __libdwfl_relocate_section, true. 1634 1635 * derelocate.c (cache_sections): Don't cache reloc sections when 1636 section_address callback is null. 1637 1638 2007-10-19 Roland McGrath <roland (a] redhat.com> 1639 1640 * relocate.c (relocate_section): Fix fencepost error in r_offset check. 1641 1642 * derelocate.c (struct dwfl_relocation): Add member `relocs'. 1643 (struct secref): Likewise. 1644 (cache_sections): Cache the relocation section referring to each 1645 section we cache, if any. 1646 (dwfl_module_address_section): Use __libdwfl_relocate_section as 1647 necessary. 1648 1649 * relocate.c (struct reloc_symtab_cache): New type. 1650 (relocate_getsym): Use it instead of four arguments. 1651 (__libdwfl_relocate): Update caller. 1652 (relocate_section): New function, broken out of ... 1653 (__libdwfl_relocate): ... here. 1654 (__libdwfl_relocate_section): New function. 1655 * libdwflP.h: Declare it. 1656 1657 2007-10-17 Roland McGrath <roland (a] redhat.com> 1658 1659 * dwfl_module_getsym.c (dwfl_module_getsym): Apply MOD->symfile->bias 1660 to relocated st_value. 1661 1662 * dwfl_report_elf.c (__libdwfl_report_elf): Align initial BASE for 1663 ET_REL to 0x100. 1664 1665 2007-10-16 Roland McGrath <roland (a] redhat.com> 1666 1667 * dwfl_report_elf.c (__libdwfl_report_elf): Readjust BASE when a later 1668 section has larger alignment requirements not met by the original BASE, 1669 rather than padding more between sections. 1670 1671 * dwfl_report_elf.c (__libdwfl_report_elf): Fix bias calculation. 1672 1673 * dwfl_module_build_id.c (__libdwfl_find_build_id): Apply module bias 1674 to sh_addr value. 1675 1676 * dwfl_report_elf.c (__libdwfl_report_elf): Don't be confused by BASE 1677 at zero in ET_REL case. Adjust BASE to necessary alignment. 1678 1679 * dwfl_module_build_id.c (check_notes): Take -1, not 0, as stub value 1680 for DATA_VADDR. 1681 (__libdwfl_find_build_id): Update caller. 1682 1683 * relocate.c (__libdwfl_relocate_value): Don't use sh_offset. 1684 * dwfl_report_elf.c (__libdwfl_report_elf): Likewise. 1685 * offline.c (dwfl_offline_section_address): Bail early if there is 1686 separate debug file. 1687 1688 * relocate.c (__libdwfl_relocate): Don't return DWFL_E_NO_DWARF. 1689 1690 2007-10-09 Roland McGrath <roland (a] redhat.com> 1691 1692 * dwfl_report_elf.c (__libdwfl_report_elf): Clear SHDR->sh_offset when 1693 caching SHDR->sh_addr = 0. 1694 * offline.c (dwfl_offline_section_address): Never called for sh_addr 1695 really at 0, don't check for it. Use MOD->debug directly, not symfile. 1696 1697 * dwfl_module_getdwarf.c (load_symtab): Return success properly when 1698 we've found SHT_SYMTAB. 1699 1700 * relocate.c (relocate_getsym): New function. 1701 (__libdwfl_relocate): Use it. 1702 (__libdwfl_relocate_value): Take new Elf * argument. Make SYMSHSTRNDX 1703 be a pointer instead of value; cache getshstrndx result there. 1704 * libdwflP.h: Update decl. 1705 * derelocate.c (cache_sections): Update caller. 1706 Always work on the main file, not the symfile. 1707 (dwfl_module_address_section): Likewise. 1708 * dwfl_module_getsym.c (dwfl_module_getsym): Update caller. 1709 1710 2007-10-07 Roland McGrath <roland (a] redhat.com> 1711 1712 * offline.c (process_archive): Initialize MOD. 1713 1714 * linux-kernel-modules.c (get_release): New function, broken out of ... 1715 (report_kernel): ... here. Call it. 1716 (try_kernel_name): Take new arg TRY_DEBUG, only try ".debug" if set. 1717 (find_kernel_elf): Update caller. 1718 (report_kernel_archive): New function. 1719 (dwfl_linux_kernel_report_offline): Call it. 1720 1721 * offline.c (process_file): Take new arg PREDICATE, pass it down. 1722 (process_archive): Likewise. 1723 (process_archive_member): Likewise. When nonnull, let the predicate 1724 decide whether to use this member. 1725 (__libdwfl_report_offline): New function, broken out of ... 1726 (dwfl_report_offline): ... here. Call it. 1727 * libdwflP.h: Declare it. 1728 1729 * offline.c (process_archive, process_archive_member): New functions. 1730 (process_elf, process_file): New functions, broken out of ... 1731 (dwfl_report_offline): ... here. Call process_file, which recurses on 1732 ELF_K_AR files. 1733 1734 * dwfl_report_elf.c (__libdwfl_report_elf): New, broken out of ... 1735 (dwfl_report_elf): ... here. Call it. 1736 * libdwflP.h: Declare it. 1737 1738 2007-10-06 Roland McGrath <roland (a] redhat.com> 1739 1740 * derelocate.c (dwfl_module_relocations): Don't call 1741 dwfl_module_getdwarf. 1742 1743 * derelocate.c (find_section): Use __libdwfl_seterrno, not 1744 __libdw_seterrno. 1745 1746 * relocate.c (__libdwfl_relocate_value): Abuse sh_offset, not 1747 SHF_ALLOC, to cache sh_addr resolved to 0. 1748 1749 * dwfl_report_elf.c (dwfl_report_elf): When an ET_REL file has sh_addr 1750 values nonzero already, just use its existing layout. 1751 1752 * relocate.c (__libdwfl_relocate): Clear size of reloc section in its 1753 in-core shdr after applying it. 1754 1755 2007-10-04 Ulrich Drepper <drepper (a] redhat.com> 1756 1757 * linux-kernel-modules.c (dwfl_linux_kernel_report_kernel): Fake 1758 initialization of notes variable. 1759 1760 2007-10-04 Roland McGrath <roland (a] redhat.com> 1761 1762 * linux-kernel-modules.c (intuit_kernel_bounds): Take new arg NOTES, 1763 fill in with vaddr of "__start_notes" symbol if found. 1764 (check_notes): New function. 1765 (check_kernel_notes): New function. 1766 (dwfl_linux_kernel_report_kernel): Call it. 1767 (check_module_notes): New function. 1768 (dwfl_linux_kernel_report_modules): Call it. 1769 1770 * linux-kernel-modules.c (dwfl_linux_kernel_find_elf): 1771 Try dwfl_build_id_find_elf first. 1772 1773 * linux-kernel-modules.c (report_kernel): Don't leak FD if !REPORT. 1774 Set kernel module e_type to ET_DYN. 1775 1776 2007-10-03 Roland McGrath <roland (a] redhat.com> 1777 1778 * find-debuginfo.c (validate): New function, broken out of ... 1779 (find_debuginfo_in_path): ... here. New function, broken out of ... 1780 (dwfl_standard_find_debuginfo): ... here. Call it, after trying 1781 dwfl_build_id_find_debuginfo first. 1782 1783 * dwfl_build_id_find_elf.c: New file. 1784 * dwfl_build_id_find_debuginfo.c: New file. 1785 * Makefile.am (libdwfl_a_SOURCES): Add them. 1786 * libdwfl.h: Declare them. 1787 * libdwflP.h: Add INTDECLs. 1788 1789 * dwfl_module_build_id.c: New file. 1790 * dwfl_module_report_build_id.c: New file. 1791 * Makefile.am (libdwfl_a_SOURCES): Add them. 1792 * libdwfl.h: Declare them. 1793 * libdwflP.h (struct Dwfl_Module): New members build_id_bits, 1794 build_id_len, build_id_vaddr. Declare __libdwfl_find_build_id. 1795 * dwfl_module.c (__libdwfl_module_free): Free MOD->build_id_bits. 1796 1797 * dwfl_module_getdwarf.c (find_offsets): New function. 1798 (find_dynsym): New function, calls that. 1799 (find_symtab): Call it. 1800 1801 2007-09-11 Roland McGrath <roland (a] redhat.com> 1802 1803 * dwfl_module_addrsym.c: Prefer a later global symbol at the same 1804 address if its st_size is smaller. 1805 1806 2007-08-13 Roland McGrath <roland (a] redhat.com> 1807 1808 * dwfl_module_addrsym.c: Add dead initializer for stupid compiler. 1809 1810 2007-08-12 Roland McGrath <roland (a] redhat.com> 1811 1812 * linux-kernel-modules.c (dwfl_linux_kernel_report_offline): Don't use 1813 FTS_LOGICAL. 1814 1815 * elf-from-memory.c (elf_from_remote_memory): Don't reset LOADBASE on 1816 a second phdr if it happens to match EHDR_VMA exactly. 1817 1818 2007-08-08 Roland McGrath <roland (a] redhat.com> 1819 1820 * dwfl_module_addrsym.c: Don't use STT_SECTION, STT_FILE symbols and 1821 those with no names. Rewrite best symbol algorithm not to assume a 1822 sorted table and to be smarter handling sizeless symbols. 1823 1824 2007-07-16 Roland McGrath <roland (a] redhat.com> 1825 1826 * dwfl_module.c (dwfl_report_module): Increment DWFL->nmodules when 1827 reviving an existing module. 1828 1829 2007-06-08 Roland McGrath <roland (a] redhat.com> 1830 1831 * libdwflP.h: Fix #ifndef for config.h to use PACKAGE_NAME. 1832 1833 2007-05-17 Roland McGrath <roland (a] redhat.com> 1834 1835 * linux-kernel-modules.c (dwfl_linux_kernel_report_offline): Look at 1836 whole /lib/modules/VERSION tree, not just /lib/modules/VERSION/kernel. 1837 (dwfl_linux_kernel_find_elf): Likewise. 1838 1839 * linux-kernel-modules.c (dwfl_linux_kernel_report_modules): Use 1840 getline and sscanf instead of fscanf. 1841 1842 2007-05-08 Roland McGrath <roland (a] redhat.com> 1843 1844 * offline.c (dwfl_offline_section_address): Don't assume section 1845 numbers match between stripped and debuginfo files. Instead, assume 1846 only that the ordering among SHF_ALLOC sections matches. 1847 1848 * linux-kernel-modules.c (report_kernel): Change RELEASE argument to 1849 pointer to string. 1850 (dwfl_linux_kernel_report_offline): Update caller. 1851 (dwfl_linux_kernel_report_kernel): Likewise. 1852 1853 2007-04-23 Roland McGrath <roland (a] redhat.com> 1854 1855 * argp-std.c (options): Fix group title string. 1856 1857 * argp-std.c (parse_opt): Handle ARGP_KEY_ERROR, free the Dwfl. 1858 Update via STATE->input every time we set STATE->hook, not only at 1859 ARGP_KEY_SUCCESS. 1860 1861 * dwfl_module.c (free_file): Free FILE->name. 1862 1863 2007-04-16 Roland McGrath <roland (a] redhat.com> 1864 1865 * derelocate.c (cache_sections): Apply bias to sh_addr. 1866 (compare_secrefs): Fix address comparison to avoid signed overflow. 1867 (find_section): New function, broken out of ... 1868 (dwfl_module_relocate_address): ... here, call it. 1869 (check_module): New function, broken out of ... 1870 (dwfl_module_relocate_address): ... here, call it. 1871 (dwfl_module_address_section): New function. 1872 * libdwfl.h: Declare it. 1873 1874 2007-03-26 Roland McGrath <roland (a] redhat.com> 1875 1876 * dwfl_module.c (__libdwfl_module_free): Free MOD itself. 1877 1878 2007-03-18 Roland McGrath <roland (a] redhat.com> 1879 1880 * dwfl_module_getdwarf.c (find_debuglink): New function, broken out of 1881 (find_debuginfo): ... here. Call it. 1882 Don't return error for libelf errors finding .gnu_debuglink section. 1883 1884 2007-03-12 Roland McGrath <roland (a] redhat.com> 1885 1886 * dwfl_module.c (dwfl_report_begin_add): New function broken out of ... 1887 (dwfl_report_begin): ... here. Call it. 1888 * libdwfl.h: Declare it. 1889 * libdwflP.h: Add INTDECL. 1890 1891 * elf-from-memory.c (elf_from_remote_memory): Fix 32/64 typo. 1892 1893 * offline.c: Comment typo fix. 1894 1895 2007-03-04 Roland McGrath <roland (a] redhat.com> 1896 1897 * linux-kernel-modules.c (KERNEL_MODNAME): New macro for "kernel". 1898 (find_kernel_elf): New function, broken out of ... 1899 (report_kernel): ... here. Call it. 1900 (dwfl_linux_kernel_find_elf): Use it for module named KERNEL_MODNAME. 1901 (intuit_kernel_bounds): New function, grovel /proc/kallsyms to guess 1902 virtual address bounds of kernel from symbols rounded to page size. 1903 (dwfl_linux_kernel_report_kernel): Use that if it works, before 1904 resorting to report_kernel. 1905 1906 * dwfl_module_getdwarf.c (open_elf): Set MOD->e_type to ET_DYN for an 1907 ET_EXEC file with nonzero bias. 1908 1909 * dwfl_module_addrname.c (dwfl_module_addrname): Just call 1910 dwfl_module_addrsym. Guts moved to ... 1911 * dwfl_module_addrsym.c: ... here; new file. 1912 * Makefile.am (libdwfl_a_SOURCES): Add it. 1913 * libdwfl.h: Declare dwfl_module_addrsym. 1914 * libdwflP.h: Add INTDECL. 1915 1916 2007-03-03 Roland McGrath <roland (a] redhat.com> 1917 1918 * dwfl_module.c (free_file): New function, broken out of ... 1919 (__libdwfl_module_free): ... here. In it, close fd after elf_end. 1920 1921 * dwfl_module_getdwarf.c (open_elf): Close fd and reset to -1 1922 on libelf failure. 1923 1924 2007-03-02 Roland McGrath <roland (a] redhat.com> 1925 1926 * linux-kernel-modules.c: Fix bogus error test for asprintf call. 1927 1928 2007-02-02 Roland McGrath <roland (a] redhat.com> 1929 1930 * dwfl_addrmodule.c (dwfl_addrmodule): Match a module's high boundary 1931 address exactly if it's no other module's low boundary. 1932 1933 * dwfl_module_addrname.c (dwfl_module_addrname): If no symbol's value 1934 and size cover the address, select the closest symbol with st_size==0 1935 that lies in the same section. 1936 1937 2007-01-29 Roland McGrath <roland (a] redhat.com> 1938 1939 * dwfl_version.c (dwfl_version): Return PACKAGE_VERSION, 1940 not PACKAGE_STRING. 1941 1942 2007-01-20 Roland McGrath <roland (a] redhat.com> 1943 1944 * relocate.c (__libdwfl_relocate_value): Treat section_address of -1 1945 as omitted, not 0. 1946 * libdwfl.h (Dwfl_Callbacks): Update comment. 1947 * derelocate.c (cache_sections): Don't ignore sh_addr == 0 sections. 1948 * linux-kernel-modules.c (dwfl_linux_kernel_module_section_address): 1949 For ignored missing section, use -1 instead of 0. 1950 * offline.c (dwfl_offline_section_address): Expect a call for 0. 1951 1952 2007-01-19 Roland McGrath <roland (a] redhat.com> 1953 1954 * argp-std.c (parse_opt): For -e, reset DWFL->offline_next_address to 1955 zero so a lone -e foo.so is shown without address bias. 1956 1957 2007-01-10 Roland McGrath <roland (a] redhat.com> 1958 1959 * linux-kernel-modules.c (report_kernel): Check asprintf return value 1960 directly instead of via side effect, to silence warn_unused_result. 1961 (dwfl_linux_kernel_report_offline): Likewise. 1962 (dwfl_linux_kernel_find_elf): Likewise. 1963 (dwfl_linux_kernel_module_section_address): Likewise. 1964 * find-debuginfo.c (try_open): Likewise. 1965 * linux-proc-maps.c (find_sysinfo_ehdr): Likewise. 1966 (dwfl_linux_proc_report): Likewise. 1967 1968 * libdwfl.h (dwfl_begin): Require nonnull argument. 1969 1970 2006-12-27 Roland McGrath <roland (a] redhat.com> 1971 1972 * dwfl_module.c (compare_modules): Fix address comparison to avoid 1973 signed overflow. Patch by Frank Ch. Eigler <fche (a] redhat.com>. 1974 1975 2006-10-30 Roland McGrath <roland (a] redhat.com> 1976 1977 * dwfl_module.c (dwfl_report_module): Comment typo fix. 1978 1979 2006-09-05 Roland McGrath <roland (a] redhat.com> 1980 1981 * derelocate.c (cache_sections): Use alloca instead of variable-sized 1982 auto array, in function already using alloca. 1983 1984 2006-08-14 Roland McGrath <roland (a] redhat.com> 1985 1986 * linux-kernel-modules.c (try_kernel_name): If the call to 1987 dwfl_standard_find_debuginfo produces no results, try it again 1988 with NULL as DEBUGLINK_FILE to try *FNAME with .debug suffix. 1989 1990 * find-debuginfo.c (DEFAULT_DEBUGINFO_PATH): Macro moved ... 1991 * libdwflP.h: ... to here. 1992 * linux-kernel-modules.c (try_kernel_name): Skip manual open if it 1993 repeats the first thing dwfl_standard_find_debuginfo will try. 1994 1995 * linux-kernel-modules.c (MODULE_SECT_NAME_LEN): New macro. 1996 (dwfl_linux_kernel_module_section_address): If a /sys file is missing 1997 and the section name is >= MODULE_SECT_NAME_LEN, try truncating the 1998 section name. 1999 2000 2006-07-12 Ulrich Drepper <drepper (a] redhat.com> 2001 2002 * cu.c: Adjust for internal_function_def removal. 2003 * dwfl_error.c: Likewise. 2004 * dwfl_module.c: Likewise. 2005 * dwfl_module_getdwarf.c: Likewise. 2006 * lines.c: Likewise. 2007 * relocate.c: Likewise. 2008 2009 2006-07-11 Ulrich Drepper <drepper (a] redhat.com> 2010 2011 * dwfl_module.c (compare_modules): Don't return GElf_Sxword value, 2012 it can overflow the return value type. 2013 Patch by Tim Moore <timoore (a] redhat.com>. 2014 2015 2006-06-28 Roland McGrath <roland (a] redhat.com> 2016 2017 * libdwfl.h: Cosmetic changes. 2018 2019 * dwfl_line_comp_dir.c: New file. 2020 * Makefile.am (libdwfl_a_SOURCES): Add it. 2021 * libdwfl.h: Declare dwfl_line_comp_dir. 2022 2023 * dwfl_lineinfo.c (dwfl_lineinfo): Remove stray extern in defn. 2024 2025 * dwfl_linecu.c: New file. 2026 * Makefile.am (libdwfl_a_SOURCES): Add it. 2027 * libdwfl.h: Declare dwfl_linecu. 2028 2029 * libdwflP.h (dwfl_linecu_inline): Function renamed from dwfl_linecu. 2030 (dwfl_linecu): Define as macro. 2031 2032 * relocate.c (__libdwfl_relocate): Use dwfl_module_getsym. 2033 2034 * dwfl_module_getdwarf.c (dwfl_module_getsymtab): New function. 2035 (dwfl_module_addrname): Function moved ... 2036 * dwfl_module_addrname.c: ... here, new file. 2037 * dwfl_module_getsym.c: New file. 2038 * Makefile.am (libdwfl_a_SOURCES): Add them. 2039 * libdwfl.h: Declare dwfl_module_getsymtab, dwfl_module_getsym. 2040 * libdwflP.h: Add INTDECLs. 2041 2042 2006-06-27 Roland McGrath <roland (a] redhat.com> 2043 2044 * dwfl_module.c (dwfl_report_end): Whitespace fix. 2045 2046 2006-06-13 Roland McGrath <roland (a] redhat.com> 2047 2048 * elf-from-memory.c (elf_from_remote_memory): Fix 32/64 typo. 2049 Use __libdwfl_seterrno for elf_memory failure. 2050 2051 2006-05-22 Roland McGrath <roland (a] redhat.com> 2052 2053 * dwfl_module_return_value_location.c 2054 (dwfl_module_return_value_location): Use __libdwfl_module_getebl. 2055 2056 2006-05-27 Ulrich Drepper <drepper (a] redhat.com> 2057 2058 * libdwfl.h: Add extern "C". 2059 2060 2006-05-22 Ulrich Drepper <drepper (a] redhat.com> 2061 2062 * cu.c (addrarange): Handle files without aranges information. 2063 2064 2006-05-16 Ulrich Drepper <drepper (a] redhat.com> 2065 2066 * dwfl_addrmodule.c (dwfl_addrmodule): Also return NULL of 2067 ->modules is NULL. 2068 2069 2006-02-26 Roland McGrath <roland (a] redhat.com> 2070 2071 * dwfl_version.c: New file. 2072 * Makefile.am (libdwfl_a_SOURCES): Add it. 2073 * libdwfl.h: Declare dwfl_version. 2074 2075 * offline.c (dwfl_report_offline): Account for dwfl_report_elf having 2076 aligned up from DWFL->offline_next_address when checking for overlap. 2077 2078 2005-12-22 Roland McGrath <roland (a] redhat.com> 2079 2080 * argp-std.c (parse_opt): Call dwfl_end in failure cases. 2081 2082 * linux-proc-maps.c (proc_maps_report): New function, broken out of ... 2083 (dwfl_linux_proc_report): ... here. Call it. 2084 (dwfl_linux_proc_maps_report): New function. 2085 * libdwfl.h: Declare it. 2086 * libdwflP.h: Add INTDECL. 2087 * argp-std.c (options, parse_opt): Grok -M/--linux-process-map. 2088 2089 * dwfl_nextcu.c (dwfl_nextcu): Don't fail when dwfl_module_getdwarf 2090 failed with DWFL_E_NO_DWARF. 2091 2092 2005-11-26 Roland McGrath <roland (a] redhat.com> 2093 2094 * dwfl_end.c (dwfl_end): Free the DWFL itself. 2095 2096 2005-11-25 Roland McGrath <roland (a] redhat.com> 2097 2098 * dwfl_module_getdwarf.c (__libdwfl_module_getebl): New function. 2099 (load_dw): Use it. 2100 * dwfl_module_register_names.c (dwfl_module_register_names): Likewise. 2101 * libdwflP.h: Declare it. 2102 2103 * dwfl_module_register_names.c: New file. 2104 * Makefile.am (libdwfl_a_SOURCES): Add it. 2105 * libdwfl.h: Declare dwfl_module_register_names. 2106 2107 2005-11-21 Roland McGrath <roland (a] redhat.com> 2108 2109 * linux-kernel-modules.c (dwfl_linux_kernel_module_section_address): 2110 Don't leak malloc'd file name. 2111 If a /sys/.../sections file is missing and starts with ".init", 2112 try the variant with "_init" too; catches PPC64 kernel braindamage. 2113 2114 2005-11-15 Roland McGrath <roland (a] redhat.com> 2115 2116 * libdwfl.h: Comment fixes. 2117 2118 * dwfl_module_return_value_location.c: Add unlikely for error case. 2119 2120 2005-11-13 Roland McGrath <roland (a] redhat.com> 2121 2122 * dwfl_return_value_location.c: New file. 2123 * Makefile.am (libdwfl_a_SOURCES): Add it. 2124 * libdwfl.h: Declare dwfl_module_return_value_location. 2125 * libdwflP.h (DWFL_ERRORS): Add DWFL_E_WEIRD_TYPE. 2126 2127 2005-10-20 Roland McGrath <roland (a] redhat.com> 2128 2129 * libdwflP.h (DWFL_ERRORS): New error UNKNOWN_MACHINE. 2130 * relocate.c (__libdwfl_relocate): Return DWFL_E_UNKNOWN_MACHINE 2131 instead of DWFL_E_BADRELTYPE if ebl_get_elfmachine yields EM_NONE. 2132 2133 2005-10-01 Roland McGrath <roland (a] redhat.com> 2134 2135 * linux-kernel-modules.c (report_kernel): Return ENOENT if we fail 2136 with errno 0. 2137 2138 2005-09-19 Roland McGrath <roland (a] redhat.com> 2139 2140 * linux-kernel-modules.c (dwfl_linux_kernel_report_modules): Use 2141 PRIx64 instead of PRIi64, lest addresses with high bits set overflow 2142 the signed integer reading; they will just have to be in hexadecimal. 2143 (dwfl_linux_kernel_module_section_address): Likewise. 2144 2145 2005-08-28 Ulrich Drepper <drepper (a] redhat.com> 2146 2147 * Makefile.am (%.os): Use COMPILE.os. 2148 (COMPILE.os): Filter out gconv options. 2149 2150 2005-08-25 Roland McGrath <roland (a] redhat.com> 2151 2152 * cu.c (__libdwfl_nextcu): Return success when dwarf_nextcu hits end. 2153 * dwfl_nextcu.c (dwfl_nextcu): Skip modules with no dwarf info. 2154 2155 2005-08-24 Roland McGrath <roland (a] redhat.com> 2156 2157 * dwfl_lineinfo.c (dwfl_lineinfo): Add bias, don't subtract it. 2158 2159 * argp-std.c [_MUDFLAP] (__libdwfl_argp_mudflap_options): New function, 2160 magic initializer to set -heur-stack-bound option. 2161 2162 2005-08-22 Roland McGrath <roland (a] redhat.com> 2163 2164 * dwfl_validate_address.c: New file. 2165 * Makefile.am (libdwfl_a_SOURCES): Add it. 2166 * libdwfl.h: Declare dwfl_validate_address. 2167 2168 * derelocate.c (dwfl_module_relocate_address): Add INTDEF. 2169 * libdwflP.h: Add INTDECL. 2170 2171 * dwfl_module_getdwarf.c (find_symtab): Use elf_getdata instead of 2172 elf_rawdata for symbol-related sections. 2173 2174 * offline.c (dwfl_report_offline): Move offline_next_address outside 2175 module's range, in case it's an ET_EXEC using fixed segment locations. 2176 * libdwfl.h: Update comment. 2177 2178 * dwfl_report_elf.c (dwfl_report_elf): Align BASE to first segment's 2179 required alignment. 2180 2181 2005-08-20 Roland McGrath <roland (a] redhat.com> 2182 2183 * linux-kernel-modules.c (report_kernel): Take new argument PREDICATE, 2184 function to choose whether to report. 2185 (dwfl_linux_kernel_report_offline): Likewise. 2186 * libdwfl.h: Update decl. 2187 * argp-std.c (parse_opt): Update caller. 2188 2189 * dwfl_getsrclines.c: New file. 2190 * dwfl_onesrcline.c: New file. 2191 * Makefile.am (libdwfl_a_SOURCES): Add them. 2192 * libdwfl.h: Declare dwfl_getsrclines, dwfl_onesrcline. 2193 2194 * linux-kernel-modules.c (dwfl_linux_kernel_find_elf): Don't leak 2195 MODULESDIR[0]. Call fts_close on failure. 2196 2197 * dwfl_module_getdwarf.c (load_dw): Take dwfl_file * instead of Elf *. 2198 Close ET_REL file descriptors after relocation. 2199 (find_dw): Update caller. 2200 * offline.c (dwfl_report_offline): Get the file into memory and close 2201 the file descriptor. 2202 2203 * dwfl_module_getdwarf.c (find_debuginfo): Do nothing when 2204 MOD->debug.elf is already set. 2205 2206 * find-debuginfo.c (try_open): Use TEMP_FAILURE_RETRY. 2207 (dwfl_standard_find_debuginfo): Fail on errors not ENOENT or ENOTDIR. 2208 2209 * argp-std.c (options, parse_opt): Grok -K/--offline-kernel, use 2210 dwfl_linux_kernel_report_offline with offline_callbacks. 2211 2212 * linux-kernel-modules.c (report_kernel): New function, broken out of 2213 ... 2214 (dwfl_linux_kernel_report_kernel): ... here. Use it. 2215 (dwfl_linux_kernel_report_offline): New function. 2216 * libdwfl.h: Declare it. 2217 * libdwflP.h: Add INTDECL. 2218 2219 2005-08-19 Roland McGrath <roland (a] redhat.com> 2220 2221 Use standard debuginfo search path to look for vmlinux. 2222 * find-debuginfo.c (dwfl_standard_find_debuginfo): Don't check CRC if 2223 passed zero. 2224 * linux-kernel-modules.c (try_kernel_name): New function, broken out 2225 of ... 2226 (dwfl_linux_kernel_report_kernel): ... here. Use it. 2227 2228 * argp-std.c (offline_callbacks): New variable. 2229 (parse_opt): Use it for -e. Allow multiple -e options. 2230 2231 * offline.c: New file. 2232 * Makefile.am (libdwfl_a_SOURCES): Add it. 2233 * libdwfl.h: Declare dwfl_offline_section_address, dwfl_report_offline. 2234 * libdwflP.h: Add INTDECLs. 2235 (OFFLINE_REDZONE): New macro. 2236 (struct Dwfl): New member `offline_next_address'. 2237 * dwfl_begin.c (dwfl_begin): Initialize it. 2238 * dwfl_module.c (dwfl_report_begin): Likewise. 2239 2240 * dwfl_report_elf.c (dwfl_report_elf): Accept all types. When ET_REL, 2241 do a nominal absolute section layout starting at BASE. 2242 * libdwfl.h: Update comment. 2243 2244 2005-08-18 Roland McGrath <roland (a] redhat.com> 2245 2246 * dwfl_module_getsrc_file.c (dwfl_module_getsrc_file): Do 2247 dwfl_module_getdwarf if necessary. 2248 2249 * dwfl_report_elf.c (dwfl_report_elf): Permit ET_REL with BASE==0. 2250 * libdwfl.h: Update comment. 2251 2252 * derelocate.c: New file. 2253 * Makefile.am (libdwfl_a_SOURCES): Add it. 2254 2255 * libdwflP.h (struct Dwfl_Module): isrel -> e_type. 2256 * dwfl_report_elf.c (dwfl_report_elf): Initialize it. 2257 * dwfl_module_getdwarf.c (open_elf): Update initialization. 2258 (load_dw, dwfl_module_addrname): Update uses. 2259 * relocate.c (__libdwfl_relocate): Likewise. 2260 2261 2005-08-04 Roland McGrath <roland (a] redhat.com> 2262 2263 * libdwfl.h (Dwfl_Callbacks.section_address): Take additional 2264 arguments SHNDX, SHDR. 2265 (dwfl_linux_kernel_module_section_address): Update prototype. 2266 * relocate.c (__libdwfl_relocate_value): Update caller. 2267 * linux-kernel-modules.c (dwfl_linux_kernel_module_section_address): 2268 Take the new arguments. 2269 2270 2005-08-10 Roland McGrath <roland (a] redhat.com> 2271 2272 * relocate.c (__libdwfl_relocate): Take argument DEBUGFILE, 2273 use it instead of MOD->debug.file. 2274 * libdwflP.h: Update decl. 2275 * dwfl_module_getdwarf.c (load_dw): Update caller. 2276 Fixes bug #165598. 2277 2278 2005-08-09 Roland McGrath <roland (a] redhat.com> 2279 2280 * libdwflP.h: Include ../libdw/libdwP.h for its INTDECLs. 2281 * cu.c: Use INTUSE on dwarf_* calls. 2282 * dwfl_error.c: Likewise. 2283 * dwfl_module.c: Likewise. 2284 * dwfl_module_getdwarf.c: Likewise. 2285 * dwfl_module_getsrc_file.c: Likewise. 2286 * lines.c: Likewise. 2287 2288 2005-08-07 Roland McGrath <roland (a] redhat.com> 2289 2290 * linux-kernel-modules.c (dwfl_linux_kernel_find_elf): When module 2291 names contain '_' or '-', look for files named either "foo-bar.ko" 2292 or "foo_bar.ko". 2293 2294 2005-07-29 Roland McGrath <roland (a] redhat.com> 2295 2296 * loc2c.c: File removed. 2297 * loc2c.h: File removed. 2298 * loc2c-runtime.h: File removed. 2299 * test2.c: File removed. 2300 * Makefile.am (EXTRA_DIST): Variable removed. 2301 (noinst_HEADERS): Remove loc2c.h from here. 2302 2303 2005-07-28 Ulrich Drepper <drepper (a] redhat.com> 2304 2305 * libdwfl.h: Add a few missing extern for function prototypes. 2306 2307 * libdwfl_crc32.c: New file. 2308 * libdwfl_crc32_file.c: New file. 2309 * libdwflP.h: Declare the new functions. 2310 * Makefile.am (libdwfl_a_SOURCES): Add libdwfl_crc32.c and 2311 libdwfl_crc32_file.c. 2312 * libdwfl/find-debuginfo.c (check_crc): Use __libdwfl_crc32_file 2313 instead of crc32_file. 2314 2315 2005-07-28 Roland McGrath <roland (a] redhat.com> 2316 2317 * ptest.c: Moved to ../tests/dwflmodtest.c. 2318 2319 * Makefile.am (noinst_PROGRAMS): Variable removed. 2320 (libdwfl_so_SOURCES, libdwfl_LIBS, libdwfl_so_LDADD): Likewise. 2321 (EXTRA_DIST, ptest_LDADD, test2_LDADD): Likewise. 2322 (libdwfl): Don't use libdwfl.so any more. 2323 (libdwfl.so, install, uninstall): Targets removed. 2324 (test2_SOURCES): Define EXTRA_DIST instead of this. 2325 * libdwfl.map: File removed. 2326 2327 * libdwfl.h: Use "" for libdw.h #include. 2328 2329 2005-07-27 Roland McGrath <roland (a] redhat.com> 2330 2331 * libdwfl.map: Add dwfl_getmodules. 2332 2333 2005-07-23 Ulrich Drepper <drepper (a] redhat.com> 2334 2335 * Makefile.am: Fix rules to allow building with mudflap. 2336 2337 2005-07-21 Roland McGrath <roland (a] redhat.com> 2338 2339 * Makefile.am (noinst_HEADERS): Add loc2c.c. 2340 2341 * test2.c (main): Check sscanf result to quiet warning. 2342 2343 2005-07-20 Roland McGrath <roland (a] redhat.com> 2344 2345 * libdwfl-branch merged, creating this direcotry. 2346