On Sun, May 26, 2024 at 11:50 PM Max Filippov <jcmvb...@gmail.com> wrote: > > Instead of a single base address FDPIC ELF files use load map: a > structure with an array of mappings for individual segments. Change > libbacktrace functions and structures to support that.
Ping? > libbacktrace/ > > PR libbacktrace/114941 > * dwarf.c: Include <link.h> or <sys/link.h> if available. > (struct dwarf_data): Change base_address type to base_address_type. > (add_low_high_range): Change base_address argument type to > base_address_type. Use __RELOC_UINTPTR for lowpc and highpc > calculation. > (add_ranges_from_ranges): Change base_address argument type to > base_address_type. Use __RELOC_UINTPTR to calculate arguments > for add_range(). > (add_ranges_from_rnglists): Change base_address argument type to > base_address_type. Use __RELOC_UINTPTR to calculate arguments > for add_range(). Use __RELOC_UINTPTR for low calculation. > (add_ranges, find_address_ranges, build_address_map): Change > base_address argument type to base_address_type. > (add_line): Use __RELOC_UINTPTR for ln->pc calculation. > (build_dwarf_data, backtrace_dwarf_add): Change base_address > argument type to base_address_type. > * elf.c (elf_initialize_syminfo): Change base_address argument > type to base_address_type. Use __RELOC_UINTPTR for > elf_symbols[j].address calculation. > (elf_add): Change base_address argument type to > base_address_type. Do early return -1 in case of FDPIC > executable, update corresponding comment. > (backtrace_initialize): Change NULL base address parameter in > the add_elf() call to no_base_address. > * internal.h (base_address_type, __RELOC_POINTER) > (__RELOC_UINTPTR, no_base_address): New definitions. > (backtrace_dwarf_add): Change base_address argument type to > base_address_type. > --- > libbacktrace/dwarf.c | 60 ++++++++++++++++++++++++----------------- > libbacktrace/elf.c | 20 +++++++++----- > libbacktrace/internal.h | 14 +++++++++- > 3 files changed, 62 insertions(+), 32 deletions(-) -- Thanks. -- Max