• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

systemd / systemd / 26856653518
73%

Build:
DEFAULT BRANCH: main
Ran 03 Jun 2026 03:32AM UTC
Jobs 1
Files 2129
Run time 4min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

02 Jun 2026 04:05PM UTC coverage: 72.884% (-0.1%) from 72.979%
26856653518

push

github

web-flow
Add DLOPEN macros that stamp the caller's ELF and use it to ensure executables list their dlopen dependencies (#42398)

Currently almost all the dlopens happen in libbasic or libshared code,
so the ELF dlopen notes all end up in libsystemd-shared. Many
distributions split this library and various binaries in separate
packages, and the library ends up with soft-dependencies, even though
many binaries are either completely useless or do not work at all with
the dlopen dependency. This also makes it impossible to know which
executable uses which dlopen dependency without inspecting the source
code.

If someone only wants to add the soft dependencies from libshared they
can just avoid parsing the executable binaries. By design the code in
libbasic/libshared still does the stamping too, at lower priorities, so
that libsystemd-shared will always list all the optional dependencies,
and if one wants to build a minimal system by default, they can just
parse libsystemd-shared dlopen notes, and ignore the individual
executables. But for many distribution the current setup is insufficient
and requires adding a ton of manual library dependencies, as many
executables become effectively broken or useless without the dlopen
dependencies installed (eg: resolved fails to start without libssl,
repart can do basically nothing without blkid, etc).

Add a new set of DLOPEN_<LIB> macros that wrap the dlopen_lib and also
pull in the ELF note voodoo, so that the callers get their ELF binaries
stamped too. Convert a bunch of callers to use the macro, and use
`required` dependencies for the callers that do not work without the
dlopen library being available.

The one caveat is that, in order to avoid duplicating the exact same
note in a binary due to multiple call sites, some `asm` voodoo is done
instead of the previous bare-C section-creating macro. The drawback of
this approach is that if `--gc-sections` is used to link the binary (as
we do), then binutils >= 2.36 is required... (continued)

112 of 145 new or added lines in 78 files covered. (77.24%)

1126 existing lines in 53 files now uncovered.

336961 of 462328 relevant lines covered (72.88%)

1288046.12 hits per line

Uncovered Changes

Lines Coverage ∆ File
11
0.24
0.0% src/home/homework-luks.c
4
0.0
0.0% src/home/homework-fscrypt.c
4
49.41
0.0% src/home/pam_systemd_home.c
3
0.0
0.0% src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-fido2.c
2
6.44
0.0% src/core/bpf-restrict-fsaccess.c
1
70.03
0.06% src/core/exec-invoke.c
1
62.3
0.0% src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-pkcs11.c
1
56.07
0.0% src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c
1
45.41
0.0% src/cryptsetup/cryptsetup.c
1
38.46
0.0% src/growfs/growfs.c
1
57.51
0.0% src/home/homework.c
1
0.0
0.0% src/login/pam_systemd_loadkey.c
1
0.0
0.0% src/test/test-bpf-restrict-fsaccess.c
1
0.0
0.0% src/veritysetup/veritysetup.c

Coverage Regressions

Lines Coverage ∆ File
508
59.79
-0.16% src/core/main.c
152
53.28
-31.15% src/oom/oomd-util.c
132
56.11
-18.19% src/oom/oomd-manager.c
54
69.97
-1.69% src/core/service.c
43
81.05
-1.72% src/core/manager.c
30
33.63
-6.59% src/udev/udev-builtin-path_id.c
25
0.0
-78.13% src/analyze/analyze-dlopen-metadata.c
23
49.7
-0.76% src/core/load-fragment.c
16
74.53
-0.71% src/core/cgroup.c
16
79.03
-0.91% src/udev/udev-rules.c
15
77.63
-1.63% src/core/job.c
15
72.3
-1.1% src/systemctl/systemctl-show.c
14
70.38
-2.67% src/shared/elf-util.c
9
82.66
-0.14% src/core/unit.c
7
91.78
-0.81% src/basic/cgroup-util.c
4
75.21
-0.18% src/core/execute-serialize.c
4
82.26
-0.12% src/resolve/resolved-link.c
3
75.0
-2.68% src/coredump/coredump-vacuum.c
3
74.27
-0.25% src/core/mount.c
3
93.62
-6.38% src/core/unit.h
3
81.59
-1.08% src/libsystemd-network/sd-lldp-rx.c
3
56.19
-0.32% src/login/pam_systemd.c
3
53.47
-0.38% src/machine/machined-dbus.c
3
85.27
0.0% src/udev/udevadm-monitor.c
2
93.12
-0.19% src/basic/compress.c
2
82.22
-0.19% src/basic/process-util.c
2
76.89
-0.16% src/journal/journald-manager.c
2
80.23
0.76% src/journal-remote/journal-upload-journal.c
2
73.27
-0.25% src/libsystemd-network/sd-dhcp6-client.c
2
77.36
-0.09% src/libsystemd/sd-bus/sd-bus.c
2
78.07
-1.75% src/oom/oomd-conf.c
2
80.6
-0.75% src/shared/curl-util.c
2
86.54
-0.26% src/udev/udev-manager.c
1
72.71
5.82% src/bootctl/bootctl-link.c
1
75.33
-0.33% src/bootctl/bootctl-unlink.c
1
69.64
1.79% src/core/dbus-job.c
1
56.88
-0.07% src/core/dbus-manager.c
1
96.82
-0.45% src/libsystemd-network/dhcp-relay-downstream.c
1
92.69
0.0% src/libsystemd/sd-journal/journal-file.c
1
71.04
-0.12% src/machine/machine.c
1
83.33
-0.93% src/network/netdev/vlan.c
1
84.17
-0.06% src/network/networkd-link.c
1
79.17
-0.42% src/network/wait-online/wait-online-manager.c
1
95.0
-5.0% src/oom/oomd-util.h
1
79.18
-0.06% src/resolve/resolved-dns-transaction.c
1
44.72
-0.27% src/resolve/resolved-mdns.c
1
96.67
-0.13% src/shared/calendarspec.c
1
94.9
-0.08% src/shared/dns-rr.c
1
95.45
0.45% src/shared/pretty-print.h
1
55.41
-0.45% src/systemctl/systemctl-logind.c
1
94.09
-0.1% src/test/test-time-util.c
1
75.49
-0.49% src/udev/udev-spawn.c
1
66.85
-0.54% src/udev/udev-worker.c
Jobs
ID Job ID Ran Files Coverage
1 26856653518.1 03 Jun 2026 03:32AM UTC 2129
72.88
GitHub Action Run
Source Files on build 26856653518
  • Tree
  • List 2129
  • Changed 170
  • Source Changed 104
  • Coverage Changed 110
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26856653518
  • 112b5657 on github
  • Prev Build on main (#26790925949)
  • Next Build on main (#26922495997)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc