https://bugs.kde.org/show_bug.cgi?id=471807

Mark Wielaard <m...@klomp.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|CONFIRMED                   |RESOLVED

--- Comment #13 from Mark Wielaard <m...@klomp.org> ---
commit 60f7e89ba32b54d73b9e36d49e28d0f559ade0b9
Author: Aaron Merey <ame...@redhat.com>
Date:   Fri Jun 30 18:31:42 2023 -0400

    Support lazy reading and downloading of DWARF debuginfo

    Currently valgrind attempts to read DWARF .debug_* sections as well
    as separate debuginfo files for ELF binaries as soon as a shared library
    is loaded.  This might also result in the downloading of separate debuginfo
    files via debuginfod.

    This is inefficient when some of this debuginfo never ends up being used
    by valgrind while running the client process.

    This patch adds support for lazy reading and downloading of DWARF
    debuginfo.  When an ELF shared library is loaded, the reading of .debug_*
    sections as well as separate or alternate debuginfo is deferred until
    valgrind handles an instruction pointer corresponding to a text segment
    of the shared library.  At this point the deferred sections and separate
    debug files are loaded.

    This feature is only supported on ELF platforms.

    https://bugs.kde.org/show_bug.cgi?id=471807

    ChangeLog
            * debuginfo.c (di_notify_ACHIEVE_ACCEPT_STATE): Replace
            read_elf_debug_info with read_elf_object.
            (addr_load_di): New function.  Attempts to load deferred debuginfo
            associated with a given address.
            (load_di): New function.  Attempts to load a given deferred
            debuginfo associated with a given address.
            (describe_IP): Add calls to load_di and addr_load_di.
            (find_DiCfSI): Add call to load_di.

            * priv_readelf.h (read_elf_object): New declaration.
            (read_elf_debug): Ditto.

            * priv_storage.h (struct _DebugInfo): New field 'bool deferred'.

            * readelf.c (read_elf_debug_info): Split into read_elf_object and
            read_elf_debug.
            (read_elf_object): Read non .debug_* section from an ELF binary.
            (read_elf_debug): Read .debug_* sections from an ELF binary as
            as well any separate/alternate debuginfo files.

            * storage.c (canonicaliseSymtab): Remove assert in order to support
            canonicalization of deferred _DebugInfo.
            (finish_CFSI_arrays): Add early return if _DebugInfo is
            deferred in order to avoid freeing memory that will be needed
            when reading debuginfo at a later time.
            (canonicaliseTables): Ditto.

            * pub_core_debuginfo.h (addr_load_di): New declaration.
            (load_di): New declaration.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to