]> git.ipfire.org Git - thirdparty/elfutils.git/commit
Add helper function for basename
authorKhem Raj <raj.khem@gmail.com>
Sun, 10 Dec 2023 20:20:33 +0000 (12:20 -0800)
committerMark Wielaard <mark@klomp.org>
Thu, 21 Dec 2023 00:45:05 +0000 (01:45 +0100)
commita2194f6b305bf0d0b9dd49dccd0a5c21994c8eea
treeb53d3887a8036334f0ee8f355448b82a415fa42e
parent744e3ea84d756006c95a8c07382cfdbef5a3bf58
Add helper function for basename

musl does not provide GNU version of basename and lately have removed
the definiton from string.h [1] which exposes this problem. It can be
made to work by providing a local implementation of basename which
implements the GNU basename behavior, this makes it work across C
libraries which have POSIX implementation only.

[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7

    * lib/system.h (xbasename): New static inline functions.
    Poison basename.
    * libdw/dwarf_getsrc_file.c (dwarf_getsrc_file): Use xbasename.
    * libdwfl/core-file.c (dwfl_core_file_report): Likewise.
    * libdwfl/dwfl_module_getsrc_file.c (dwfl_module_getsrc_file):
    Likewise.
    * libdwfl/dwfl_segment_report_module.c (dwfl_segment_report_module):
    Likewise.
    * libdwfl/find-debuginfo.c (find_debuginfo_in_path): Likewise.
    * libdwfl/link_map.c (report_r_debug): Likewise.
    * libdwfl/linux-kernel-modules.c (try_kernel_name): Likewise.
    * src/addr2line.c (print_dwarf_function): Likewise.
    (print_src): Likewise.
    * src/ar.c (do_oper_insert): Likewise.
    And cast away const in entry.key assignment.
    * src/nm.c (show_symbols): Use xbasename.
    * src/stack.c (module_callback): Likewise.
    * src/strip.c (handle_elf): Likewise.
    * tests/show-die-info.c: Include system.h.
    (dwarf_tag_string): Use xbasename.
    * tests/varlocs.c: Likewise.
    * debuginfod/debuginfod.cxx: Move include system.h to the end.
    (register_file_name): Rename basename to filename.

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mark Wielaard <mark@klomp.org>
16 files changed:
debuginfod/debuginfod.cxx
lib/system.h
libdw/dwarf_getsrc_file.c
libdwfl/core-file.c
libdwfl/dwfl_module_getsrc_file.c
libdwfl/dwfl_segment_report_module.c
libdwfl/find-debuginfo.c
libdwfl/link_map.c
libdwfl/linux-kernel-modules.c
src/addr2line.c
src/ar.c
src/nm.c
src/stack.c
src/strip.c
tests/show-die-info.c
tests/varlocs.c