diff mbox series

systemd: restore libdw/libelf to elfutils PACKAGECONFIG RRECOMMENDS

Message ID 20260806111717.4060900-1-daniel.turull@ericsson.com
State Under Review
Headers show
Series systemd: restore libdw/libelf to elfutils PACKAGECONFIG RRECOMMENDS | expand

Commit Message

Daniel Turull Aug. 6, 2026, 11:17 a.m. UTC
From: Daniel Turull <daniel.turull@ericsson.com>

systemd-coredump dlopen()s libdw to symbolicate backtraces. These
libraries are marked as "suggested" in libsystemd-shared's .note.dlopen
metadata, causing them to land in RSUGGESTS rather than RRECOMMENDS.
RSUGGESTS packages are not installed into the rootfs, breaking
symbolication and causing test_systemd_coredump_minidebuginfo to fail.

Restore explicit RRECOMMENDS for libdw and libelf when elfutils
PACKAGECONFIG is enabled to ensure backtrace symbolication works.

Fixes regression from bb9c619174 ("systemd: drop redundant runtime
dependencies").

To recreate the issue in qemux86-64:

DISTRO_FEATURES:append = "minidebuginfo"
TEST_SUITES = "ping ssh systemd"

bitbake core-image-minimal
bitbake core-image-minimal -c testimage

Before:

RESULTS - systemd.SystemdServiceTests.test_systemd_coredump_minidebuginfo: FAILED (2.71s)

After:

RESULTS - systemd.SystemdServiceTests.test_systemd_coredump_minidebuginfo: PASSED (2.71s)

AI-Generated: Kiro with Claude Opus 5

Signed-off-by: Daniel Turull <daniel.turull@ericsson.com>
---
builds on top of the systemd: update to 261.2
---
 meta/recipes-core/systemd/systemd_261.2.bb | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Ross Burton Aug. 6, 2026, 11:22 a.m. UTC | #1
On 6 Aug 2026, at 12:17, daniel.turull@ericsson.com wrote:
> 
> From: Daniel Turull <daniel.turull@ericsson.com>
> 
> systemd-coredump dlopen()s libdw to symbolicate backtraces. These
> libraries are marked as "suggested" in libsystemd-shared's .note.dlopen
> metadata, causing them to land in RSUGGESTS rather than RRECOMMENDS.
> RSUGGESTS packages are not installed into the rootfs, breaking
> symbolication and causing test_systemd_coredump_minidebuginfo to fail.

If RSUGGESTS are not respected anywhere then would it be better to just change the logic to use RRECOMMENDS?

Ross
Daniel Turull Aug. 6, 2026, 11:32 a.m. UTC | #2
On Thu, 2026-08-06 at 11:22 +0000, Ross Burton wrote:
> On 6 Aug 2026, at 12:17, daniel.turull@ericsson.com wrote:
> > 
> > From: Daniel Turull <daniel.turull@ericsson.com>
> > 
> > systemd-coredump dlopen()s libdw to symbolicate backtraces. These
> > libraries are marked as "suggested" in libsystemd-shared's .note.dlopen
> > metadata, causing them to land in RSUGGESTS rather than RRECOMMENDS.
> > RSUGGESTS packages are not installed into the rootfs, breaking
> > symbolication and causing test_systemd_coredump_minidebuginfo to fail.
> 
> If RSUGGESTS are not respected anywhere then would it be better to just change the logic to use
> RRECOMMENDS?

I don't know if this is the exception or they are not respected. Changing to all RRECOMMENDS will be
safer but it will increase the dependencies?

There are some recommends as well in the so file for systemd-shared-261.so

|@FDO
[{"feature":"acl","description":"Support for file Access Control Lists
(ACLs)","priority":"recommended","soname":["libacl.so.1"]}]
|@FDO
[{"feature":"blkid","description":"Support for block device
identification","priority":"recommended","soname":["libblkid.so.1"]}]
|@FDO
[{"feature":"dw","description":"Support for backtrace and ELF package metadata decoding from core
files","priority":"suggested","soname":["libdw.so.1"]}]
|@FDO
[{"feature":"elf","description":"Support for backtraces and reading ELF package metadata from core
files","priority":"suggested","soname":["libelf.so.1"]}]
|@FDO
[{"feature":"fdisk","description":"Support for reading and writing partition
tables","priority":"suggested","soname":["libfdisk.so.1"]}]
|@FDO
[{"feature":"gnutls","description":"Support for TLS via
GnuTLS","priority":"suggested","soname":["libgnutls.so.30"]}]
|@FDO
[{"feature":"archive","description":"Support for decompressing archive
files","priority":"suggested","soname":["libarchive.so.13"]}]
|@FDO
[{"feature":"crypt","description":"Support for hashing
passwords","priority":"recommended","soname":["libcrypt.so.2","libcrypt.so.1","libcrypt.so.1.1"]}]
|@FDO
[{"feature":"mount","description":"Support for mount
enumeration","priority":"recommended","soname":["libmount.so.1"]}]
|@FDO
[{"feature":"kmod","description":"Support for loading kernel
modules","priority":"recommended","soname":["libkmod.so.2"]}]
|@FDO
[{"feature":"seccomp","description":"Support for Seccomp
Sandboxes","priority":"recommended","soname":["libseccomp.so.2"]}]
|@FDO
[{"feature":"zstd","description":"Support zstd compression in journal and coredump
files","priority":"recommended","soname":["libzstd.so.1"]}]
|@FDO
[{"feature":"gcrypt","description":"Support for journald forward-
sealing","priority":"suggested","soname":["libgcrypt.so.20"]}]

I noticed it when testing systemd.

Daniel

> 
> Ross
diff mbox series

Patch

diff --git a/meta/recipes-core/systemd/systemd_261.2.bb b/meta/recipes-core/systemd/systemd_261.2.bb
index b295a69548..56c33ef157 100644
--- a/meta/recipes-core/systemd/systemd_261.2.bb
+++ b/meta/recipes-core/systemd/systemd_261.2.bb
@@ -126,7 +126,11 @@  PACKAGECONFIG[default-compression-lz4] = "-Dlz4=true -Ddefault-compression=lz4,,
 PACKAGECONFIG[default-compression-xz] = "-Dxz=true -Ddefault-compression=xz,,xz"
 PACKAGECONFIG[default-compression-zstd] = "-Dzstd=true -Ddefault-compression=zstd,,zstd"
 PACKAGECONFIG[efi] = "-Defi=true -Dbootloader=enabled,-Defi=false -Dbootloader=disabled,python3-pyelftools-native"
-PACKAGECONFIG[elfutils] = "-Delfutils=enabled,-Delfutils=disabled,elfutils"
+# libdw/libelf are dlopen()ed, but upstream marks them as "suggested" in the
+# .note.dlopen metadata so they end up in RSUGGESTS, which is not installed.
+# systemd-coredump cannot symbolicate backtraces without libdw, so promote
+# these to RRECOMMENDS explicitly.
+PACKAGECONFIG[elfutils] = "-Delfutils=enabled,-Delfutils=disabled,elfutils,,libdw libelf"
 PACKAGECONFIG[fido] = "-Dlibfido2=enabled,-Dlibfido2=disabled,libfido2-initial"
 PACKAGECONFIG[firstboot] = "-Dfirstboot=true,-Dfirstboot=false"
 PACKAGECONFIG[repart] = "-Drepart=enabled,-Drepart=disabled"