[Bug debugedit/33823] New: debugedit fails to detect sources if DWARF contains relative, not absolute paths (empty debugsourcefiles.list)

david.abdurachmanov at gmail dot com sourceware-bugzilla@sourceware.org
Thu Jan 22 10:07:32 GMT 2026


https://sourceware.org/bugzilla/show_bug.cgi?id=33823

            Bug ID: 33823
           Summary: debugedit fails to detect sources if DWARF contains
                    relative, not absolute paths (empty
                    debugsourcefiles.list)
           Product: debugedit
           Version: unspecified
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: debugedit
          Assignee: unassigned at sourceware dot org
          Reporter: david.abdurachmanov at gmail dot com
                CC: debugedit at sourceware dot org
  Target Milestone: ---

This is a summary from Matrix discussion.

On Fedora/RISCV some of ours builds fail as debugsourcefiles.list is empty.

RPM build errors:
error: Empty %files file
/builddir/build/BUILD/catch-3.10.0-build/Catch2-3.10.0/debugsourcefiles.list
    Empty %files file
/builddir/build/BUILD/catch-3.10.0-build/Catch2-3.10.0/debugsourcefiles.list


On riscv64 the file is completely empty, but that's not the case on x86_64 and
aarch64 (I didn't check all, but I expect the same). The file contains empty
directories, and the source package produces just ships empty directories.

$ rpm2cpio
./results_catch/3.10.0/3.fc44/catch-debugsource-3.10.0-3.fc44.x86_64.rpm | cpio
-utv
drwxr-xr-x   1 root     root            0 Jan 16 01:00
./usr/src/debug/catch-3.10.0-3.fc44.x86_64
drwxr-xr-x   1 root     root            0 Jan 16 01:00
./usr/src/debug/catch-3.10.0-3.fc44.x86_64/redhat-linux-build
drwxr-xr-x   1 root     root            0 Jan 16 01:00
./usr/src/debug/catch-3.10.0-3.fc44.x86_64/redhat-linux-build/src

Looking at catch package and two shared libraries the DWARF contains relative
paths instead of absolute (I compared to tcl package).

    <17>   DW_AT_name        : (indirect line string, offset: 0x1f5):
src/catch2/internal/catch_main.cpp
    <1b>   DW_AT_comp_dir    : (indirect line string, offset: 0x2ba):
redhat-linux-build/src


    <17>   DW_AT_name        : (indirect line string, offset: 0xb9):
src/catch2/benchmark/catch_chronometer.cpp
    <859>   DW_AT_name        : (indirect line string, offset: 0x221):
src/catch2/benchmark/detail/catch_analyse.cpp
    <bbee>   DW_AT_name        : (indirect line string, offset: 0x53c):
src/catch2/benchmark/detail/catch_benchmark_function.cpp
    <d153>   DW_AT_name        : (indirect line string, offset: 0x593):
src/catch2/benchmark/detail/catch_run_for_at_least.cpp
    <f8f0>   DW_AT_name        : (indirect line string, offset: 0x6dc):
src/catch2/benchmark/detail/catch_stats.cpp
    <22fa7>   DW_AT_name        : (indirect line string, offset: 0x7ff):
src/catch2/generators/catch_generator_exception.cpp
    <234f3>   DW_AT_name        : (indirect line string, offset: 0x8e9):
src/catch2/generators/catch_generators.cpp
    <29ae3>   DW_AT_name        : (indirect line string, offset: 0x9a4):
src/catch2/generators/catch_generators_random.cpp
    <3130c>   DW_AT_name        : (indirect line string, offset: 0xbb3):
src/catch2/reporters/catch_reporter_automake.cpp
    <42b37>   DW_AT_name        : (indirect line string, offset: 0xc5b):
src/catch2/reporters/catch_reporter_common_base.cpp
    <5638e>   DW_AT_name        : (indirect line string, offset: 0xd1c):
src/catch2/reporters/catch_reporter_compact.cpp
    <70fb4>   DW_AT_name        : (indirect line string, offset: 0xd7a):
src/catch2/reporters/catch_reporter_console.cpp
[..]

The following works: debugedit -l a.list libCatch2.so.3.10.0

redhat-linux-build/src/redhat-linux-build/src/src/catch2/benchmark/catch_chronometer.cpp
redhat-linux-build/src/src/catch2/benchmark/catch_chronometer.cpp
redhat-linux-build/src/src/catch2/benchmark/catch_chronometer.cpp
/usr/include/c++/15/type_traits
/usr/include/c++/15/cstdint
/usr/include/c++/15/ctime
/usr/include/c++/15/bits/chrono.h
/usr/include/bits/types.h
/usr/include/bits/stdint-intn.h
/usr/include/bits/stdint-uintn.h
/usr/include/bits/stdint-least.h
/usr/include/stdint.h
/usr/include/bits/types/clock_t.h
/usr/include/bits/types/time_t.h
/usr/include/bits/types/struct_tm.h
/usr/include/bits/types/struct_timespec.h
/usr/include/time.h
/usr/include/c++/15/riscv64-redhat-linux/bits/c++config.h
redhat-linux-build/src/src/catch2/benchmark/catch_clock.hpp
redhat-linux-build/src/src/catch2/benchmark/catch_optimizer.hpp
[..]

What seems to cause the problem is these flags for debugedit:
-b /home/fedora/rpmbuild/BUILD/catch-3.10.0-build/Catch2-3.10.0 -d
/usr/src/debug/catch-3.10.0-1.fc43.riscv64

Other potentially affected packages:
error: Empty %files file
/builddir/build/BUILD/opensurge-0.6.1.2-build/opensurge-0.6.1.2/debugsourcefiles.list
error: Empty %files file
/builddir/build/BUILD/pgadmin4-9.3-build/pgadmin4-9.3/debugsourcefiles.list
error: Empty %files file
/builddir/build/BUILD/toolbox-0.3-build/toolbox-0.3/debugsourcefiles.list

This is not the final list, a quick scan of some build logs.

My theory is that debugedit doesn't handle relative paths in DWARF.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Debugedit mailing list