diff --git a/man/SD_ELF_NOTE_DLOPEN.xml b/man/SD_ELF_NOTE_DLOPEN.xml
new file mode 100644
index 00000000000..0e3eed84cfd
--- /dev/null
+++ b/man/SD_ELF_NOTE_DLOPEN.xml
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+ SD_ELF_NOTE_DLOPEN
+ systemd
+
+
+
+ SD_ELF_NOTE_DLOPEN
+ 3
+
+
+
+ SD_ELF_NOTE_DLOPEN
+ SD_ELF_NOTE_DLOPEN_VENDOR
+ SD_ELF_NOTE_DLOPEN_TYPE
+ SD_ELF_NOTE_DLOPEN_PRIORITY_REQUIRED
+ SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED
+ SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED
+
+ Embed ELF .note.dlopen metadata for shared library dependencies
+
+
+
+
+ #include <systemd/sd-dlopen.h>
+
+ SD_ELF_NOTE_DLOPEN(feature, description, priority, soname...)
+
+ #define SD_ELF_NOTE_DLOPEN_VENDOR "FDO"
+ #define SD_ELF_NOTE_DLOPEN_TYPE UINT32_C(0x407c0c0a)
+ #define SD_ELF_NOTE_DLOPEN_PRIORITY_REQUIRED "required"
+ #define SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED "recommended"
+ #define SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED "suggested"
+
+
+
+
+
+ Description
+
+ SD_ELF_NOTE_DLOPEN() is a macro that embeds a
+ .note.dlopen ELF note section in the compiled binary, declaring a weak dependency
+ on a shared library loaded via dlopen(). This implements the
+ ELF dlopen
+ metadata specification, allowing package managers and build systems to discover runtime
+ dependencies that are not visible through regular ELF DT_NEEDED entries.
+
+ The macro takes the following parameters:
+
+
+
+ feature
+ A short string identifying the feature this library provides (e.g.
+ XKB, PCRE2).
+
+
+
+
+ description
+ A human-readable description of what the library is used for.
+
+
+
+
+ priority
+ One of SD_ELF_NOTE_DLOPEN_PRIORITY_REQUIRED,
+ SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED, or
+ SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED, indicating how important the
+ dependency is.
+
+
+
+
+ soname...
+ One or more shared object names (sonames) for the library, e.g.
+ libfoo.so.1. Multiple sonames may be specified as separate arguments (up to 5)
+ for libraries that have changed soname across versions.
+
+
+
+
+ The embedded metadata can be read from a compiled ELF binary using:
+ systemd-analyze dlopen-metadata binary
+
+
+
+
+ Examples
+
+
+ Single soname
+ #include <systemd/sd-dlopen.h>
+
+SD_ELF_NOTE_DLOPEN("XKB", "Keyboard layout support",
+ SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
+ "libxkbcommon.so.0");
+
+
+
+ Multiple sonames for different library versions
+ SD_ELF_NOTE_DLOPEN("crypt", "Support for hashing passwords",
+ SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
+ "libcrypt.so.2", "libcrypt.so.1", "libcrypt.so.1.1");
+
+
+
+
+
+ Notes
+
+ The macros described here are header-only and do not require runtime linkage against
+ libsystemd3.
+ Only the installed header and include path (as provided by
+ pkg-config --cflags libsystemd) are needed.
+
+
+
+ History
+ SD_ELF_NOTE_DLOPEN(),
+ SD_ELF_NOTE_DLOPEN_VENDOR,
+ SD_ELF_NOTE_DLOPEN_TYPE,
+ SD_ELF_NOTE_DLOPEN_PRIORITY_REQUIRED,
+ SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED, and
+ SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED were added in version 261.
+
+
+
+ See Also
+
+
+ systemd1
+ sd-dlopen3
+ dlopen3
+
+
+
+
diff --git a/man/rules/meson.build b/man/rules/meson.build
index d69793150be..d7cbd5b6520 100644
--- a/man/rules/meson.build
+++ b/man/rules/meson.build
@@ -127,6 +127,7 @@ manpages = [
'SD_WARNING'],
''],
['sd-device', '3', [], ''],
+ ['sd-dlopen', '3', [], ''],
['sd-event', '3', [], ''],
['sd-hwdb', '3', [], ''],
['sd-id128',
@@ -154,6 +155,14 @@ manpages = [
['sd-login', '3', [], 'HAVE_PAM'],
['sd-path', '3', [], ''],
['sd-varlink', '3', [], ''],
+ ['SD_ELF_NOTE_DLOPEN',
+ '3',
+ ['SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED',
+ 'SD_ELF_NOTE_DLOPEN_PRIORITY_REQUIRED',
+ 'SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED',
+ 'SD_ELF_NOTE_DLOPEN_TYPE',
+ 'SD_ELF_NOTE_DLOPEN_VENDOR'],
+ ''],
['sd_booted', '3', [], ''],
['sd_bus_add_match',
'3',
diff --git a/man/sd-dlopen.xml b/man/sd-dlopen.xml
new file mode 100644
index 00000000000..ed43e396d69
--- /dev/null
+++ b/man/sd-dlopen.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+ sd-dlopen
+ systemd
+
+
+
+ sd-dlopen
+ 3
+
+
+
+ sd-dlopen
+ ELF dlopen metadata annotation macros
+
+
+
+
+ #include <systemd/sd-dlopen.h>
+
+
+
+ pkg-config --cflags libsystemd
+
+
+
+
+
+ Description
+
+ sd-dlopen.h provides macros for embedding
+ .note.dlopen metadata in ELF binaries, implementing the
+ ELF dlopen
+ metadata specification for declaring optional shared library dependencies that are loaded via
+ dlopen3
+ at runtime.
+
+ The header is self-contained and does not require runtime linkage against
+ libsystemd3.
+ Projects only need the installed header to use the macros.
+
+ Package managers and build systems can read the embedded ELF notes to discover runtime
+ dependencies that are not visible in ELF DT_NEEDED entries.
+
+ See
+ SD_ELF_NOTE_DLOPEN3
+ for details on the available macros and constants.
+
+
+
+ Notes
+
+ The macros described here are header-only and do not require runtime linkage against
+ libsystemd3.
+ Only the installed header and include path (as provided by
+ pkg-config --cflags libsystemd) are needed.
+
+
+
+ History
+ SD_ELF_NOTE_DLOPEN() and associated macros and constants were added in
+ version 261.
+
+
+
+ See Also
+
+ systemd1
+ SD_ELF_NOTE_DLOPEN3
+ dlopen3
+
+
+
+