]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
dlfcn-util: migrate to public SD_ELF_NOTE_DLOPEN() API
authorChristian Brauner <brauner@kernel.org>
Wed, 11 Mar 2026 14:55:02 +0000 (15:55 +0100)
committerLuca Boccassi <luca.boccassi@gmail.com>
Wed, 18 Mar 2026 10:28:11 +0000 (10:28 +0000)
Switch all internal callers from the private ELF_NOTE_DLOPEN() macro to
the new public SD_ELF_NOTE_DLOPEN() API from sd-dlopen.h, and remove
the now-redundant macro definitions from dlfcn-util.h.

Signed-off-by: Christian Brauner <brauner@kernel.org>
26 files changed:
src/basic/compress.c
src/basic/dlfcn-util.h
src/basic/gcrypt-util.c
src/locale/xkbcommon-util.c
src/shared/acl-util.c
src/shared/apparmor-util.c
src/shared/blkid-util.c
src/shared/bpf-dlopen.c
src/shared/cryptsetup-util.c
src/shared/elf-util.c
src/shared/idn-util.c
src/shared/libarchive-util.c
src/shared/libaudit-util.c
src/shared/libcrypt-util.c
src/shared/libfido2-util.c
src/shared/libmount-util.c
src/shared/module-util.c
src/shared/pam-util.c
src/shared/password-quality-util-passwdqc.c
src/shared/password-quality-util-pwquality.c
src/shared/pcre2-util.c
src/shared/pkcs11-util.c
src/shared/qrcode-util.c
src/shared/seccomp-util.c
src/shared/selinux-util.c
src/shared/tpm2-util.c

index c10448938e071c907eb6a6135033eab3a464c115..5c9ca829dfef369d94d9634d5a9ef8fae9bc78fd 100644 (file)
@@ -20,6 +20,8 @@
 #include <zstd_errors.h>
 #endif
 
+#include "sd-dlopen.h"
+
 #include "alloc-util.h"
 #include "bitfield.h"
 #include "compress.h"
@@ -148,7 +150,8 @@ bool compression_supported(Compression c) {
 
 int dlopen_lzma(void) {
 #if HAVE_XZ
-        ELF_NOTE_DLOPEN("lzma",
+        SD_ELF_NOTE_DLOPEN(
+                        "lzma",
                         "Support lzma compression in journal and coredump files",
                         COMPRESSION_PRIORITY_XZ,
                         "liblzma.so.5");
@@ -219,7 +222,8 @@ int compress_blob_xz(const void *src, uint64_t src_size,
 
 int dlopen_lz4(void) {
 #if HAVE_LZ4
-        ELF_NOTE_DLOPEN("lz4",
+        SD_ELF_NOTE_DLOPEN(
+                        "lz4",
                         "Support lz4 compression in journal and coredump files",
                         COMPRESSION_PRIORITY_LZ4,
                         "liblz4.so.1");
@@ -286,7 +290,8 @@ int compress_blob_lz4(const void *src, uint64_t src_size,
 
 int dlopen_zstd(void) {
 #if HAVE_ZSTD
-        ELF_NOTE_DLOPEN("zstd",
+        SD_ELF_NOTE_DLOPEN(
+                        "zstd",
                         "Support zstd compression in journal and coredump files",
                         COMPRESSION_PRIORITY_ZSTD,
                         "libzstd.so.1");
index 9760b31da4d059de94958ae1fa4f66c4a50b4ad8..40de1379055f2cfe9d6b96fc1896b49fde0114bf 100644 (file)
@@ -33,47 +33,6 @@ int dlopen_many_sym_or_warn_sentinel(void **dlp, const char *filename, int log_l
 #define DLSYM_ARG_FORCE(arg) \
         &sym_##arg, STRINGIFY(arg)
 
-#define ELF_NOTE_DLOPEN_VENDOR "FDO"
-#define ELF_NOTE_DLOPEN_TYPE UINT32_C(0x407c0c0a)
-#define ELF_NOTE_DLOPEN_PRIORITY_REQUIRED "required"
-#define ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED "recommended"
-#define ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED "suggested"
-
-/* Add an ".note.dlopen" ELF note to our binary that declares our weak dlopen() dependency. This
- * information can be read from an ELF file via "readelf -p .note.dlopen" or an equivalent command. */
-#define _ELF_NOTE_DLOPEN(json, variable_name)                              \
-        __attribute__((used, section(".note.dlopen"))) _Alignas(sizeof(uint32_t)) static const struct { \
-                struct {                                                   \
-                        uint32_t n_namesz, n_descsz, n_type;               \
-                } nhdr;                                                    \
-                char name[sizeof(ELF_NOTE_DLOPEN_VENDOR)];                 \
-                _Alignas(sizeof(uint32_t)) char dlopen_json[sizeof(json)]; \
-        } variable_name = {                                                \
-                .nhdr = {                                                  \
-                        .n_namesz = sizeof(ELF_NOTE_DLOPEN_VENDOR),        \
-                        .n_descsz = sizeof(json),                          \
-                        .n_type   = ELF_NOTE_DLOPEN_TYPE,                  \
-                },                                                         \
-                .name = ELF_NOTE_DLOPEN_VENDOR,                            \
-                .dlopen_json = json,                                       \
-        }
-
-#define _SONAME_ARRAY1(a) "[\""a"\"]"
-#define _SONAME_ARRAY2(a, b) "[\""a"\",\""b"\"]"
-#define _SONAME_ARRAY3(a, b, c) "[\""a"\",\""b"\",\""c"\"]"
-#define _SONAME_ARRAY4(a, b, c, d) "[\""a"\",\""b"\",\""c"\"",\""d"\"]"
-#define _SONAME_ARRAY5(a, b, c, d, e) "[\""a"\",\""b"\",\""c"\"",\""d"\",\""e"\"]"
-#define _SONAME_ARRAY_GET(_1,_2,_3,_4,_5,NAME,...) NAME
-#define _SONAME_ARRAY(...) _SONAME_ARRAY_GET(__VA_ARGS__, _SONAME_ARRAY5, _SONAME_ARRAY4, _SONAME_ARRAY3, _SONAME_ARRAY2, _SONAME_ARRAY1)(__VA_ARGS__)
-
-/* The 'priority' must be one of 'required', 'recommended' or 'suggested' as per specification, use the
- * macro defined above to specify it.
- * Multiple sonames can be passed and they will be automatically constructed into a json array (but note that
- * due to preprocessor language limitations if more than the limit defined above is used, a new
- * _SONAME_ARRAY<X+1> will need to be added). */
-#define ELF_NOTE_DLOPEN(feature, description, priority, ...) \
-        _ELF_NOTE_DLOPEN("[{\"feature\":\"" feature "\",\"description\":\"" description "\",\"priority\":\"" priority "\",\"soname\":" _SONAME_ARRAY(__VA_ARGS__) "}]", UNIQ_T(s, UNIQ))
-
 /* If called dlopen_many_sym_or_warn() will fail with EPERM. This can be used to block lazy loading of shared
  * libs, if we transfer a process into a different namespace. Note that this does not work for all calls of
  * dlopen(), just those through our dlopen_safe() wrapper (which we use comprehensively in our
index ebbc3e33bc736763792e66db778d095630316ff5..79cab18822ffa2a35ecc7efd4275d5d43936d9cb 100644 (file)
@@ -2,6 +2,8 @@
 
 #include <sys/syslog.h>
 
+#include "sd-dlopen.h"
+
 #include "gcrypt-util.h"
 
 #if HAVE_GCRYPT
@@ -44,9 +46,10 @@ DLSYM_PROTOTYPE(gcry_strerror) = NULL;
 
 int dlopen_gcrypt(void) {
 #if HAVE_GCRYPT
-        ELF_NOTE_DLOPEN("gcrypt",
+        SD_ELF_NOTE_DLOPEN(
+                        "gcrypt",
                         "Support for journald forward-sealing",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libgcrypt.so.20");
 
         return dlopen_many_sym_or_warn(
index 2334587e88ccd60f08a1f99513464e732763a6c1..c0810331a9e1f20546353a50f4a65d1d7c042729 100644 (file)
@@ -1,5 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include "sd-dlopen.h"
+
 #include "dlfcn-util.h"
 #include "log.h"
 #include "string-util.h"
@@ -15,9 +17,10 @@ DLSYM_PROTOTYPE(xkb_keymap_new_from_names) = NULL;
 DLSYM_PROTOTYPE(xkb_keymap_unref) = NULL;
 
 static int dlopen_xkbcommon(void) {
-        ELF_NOTE_DLOPEN("xkbcommon",
+        SD_ELF_NOTE_DLOPEN(
+                        "xkbcommon",
                         "Support for keyboard locale descriptions",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED, "libxkbcommon.so.0");
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED, "libxkbcommon.so.0");
 
         return dlopen_many_sym_or_warn(
                         &xkbcommon_dl, "libxkbcommon.so.0", LOG_DEBUG,
index ae4684414ca8e9c60e84209ae0a732fb5e329e07..07206bdb5f61cc06e6c4c2dba8d1a058d730228a 100644 (file)
@@ -3,6 +3,8 @@
 #include <sys/stat.h>
 #include <sys/syslog.h>
 
+#include "sd-dlopen.h"
+
 #include "acl-util.h"
 #include "alloc-util.h"
 #include "errno-util.h"
@@ -44,9 +46,10 @@ DLSYM_PROTOTYPE(acl_set_tag_type);
 DLSYM_PROTOTYPE(acl_to_any_text);
 
 int dlopen_libacl(void) {
-        ELF_NOTE_DLOPEN("acl",
+        SD_ELF_NOTE_DLOPEN(
+                        "acl",
                         "Support for file Access Control Lists (ACLs)",
-                        ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
                         "libacl.so.1");
 
         return dlopen_many_sym_or_warn(
index 10b57c60901d86f58db164cf6a1f986bcb2300b8..e24f4315a0246529e5ca748a6d7e0848eb5b76f4 100644 (file)
@@ -2,6 +2,8 @@
 
 #include <syslog.h>
 
+#include "sd-dlopen.h"
+
 #include "alloc-util.h"
 #include "apparmor-util.h"
 #include "fileio.h"
@@ -20,9 +22,10 @@ DLSYM_PROTOTYPE(aa_policy_cache_replace_all) = NULL;
 DLSYM_PROTOTYPE(aa_policy_cache_unref) = NULL;
 
 int dlopen_libapparmor(void) {
-        ELF_NOTE_DLOPEN("apparmor",
+        SD_ELF_NOTE_DLOPEN(
+                        "apparmor",
                         "Support for AppArmor policies",
-                        ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
                         "libapparmor.so.1");
 
         return dlopen_many_sym_or_warn(
index ae20b47d9ef122f9a3617cff5d19614e547b5b0e..f1b7ccdfeb93fd4c0a385410ca05a1588ceac6f7 100644 (file)
@@ -2,6 +2,7 @@
 
 #include <sys/syslog.h>
 
+#include "sd-dlopen.h"
 #include "sd-id128.h"
 
 #include "blkid-util.h"
@@ -49,9 +50,10 @@ DLSYM_PROTOTYPE(blkid_probe_set_superblocks_flags) = NULL;
 DLSYM_PROTOTYPE(blkid_safe_string) = NULL;
 
 int dlopen_libblkid(void) {
-        ELF_NOTE_DLOPEN("blkid",
+        SD_ELF_NOTE_DLOPEN(
+                        "blkid",
                         "Support for block device identification",
-                        ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
                         "libblkid.so.1");
 
         return dlopen_many_sym_or_warn(
index 940c25a7260af314e8eb36f113ea688a9e1ba98b..c8e2e7ce4d8127f2204a9462f2aa3a3423315613 100644 (file)
@@ -1,5 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include "sd-dlopen.h"
+
 #include "bpf-dlopen.h"
 #include "dlfcn-util.h"
 #include "errno-util.h"
@@ -81,9 +83,10 @@ int dlopen_bpf_full(int log_level) {
         if (cached != 0)
                 return cached;
 
-        ELF_NOTE_DLOPEN("bpf",
+        SD_ELF_NOTE_DLOPEN(
+                        "bpf",
                         "Support firewalling and sandboxing with BPF",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libbpf.so.1", "libbpf.so.0");
 
         DISABLE_WARNING_DEPRECATED_DECLARATIONS;
index a766a92b2037f1122915581e224d38c563b09f00..5058bca3fd83ef93a043e1c75b3b2aab3d877fa9 100644 (file)
@@ -2,6 +2,7 @@
 
 #include <stdlib.h>
 
+#include "sd-dlopen.h"
 #include "sd-json.h"
 
 #include "alloc-util.h"
@@ -270,9 +271,10 @@ int dlopen_cryptsetup(void) {
          * still available though, and given we want to support 2.2.0 for a while longer, we'll use the old
          * symbol if the new one is not available. */
 
-        ELF_NOTE_DLOPEN("cryptsetup",
+        SD_ELF_NOTE_DLOPEN(
+                        "cryptsetup",
                         "Support for disk encryption, integrity, and authentication",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libcryptsetup.so.12");
 
         r = dlopen_many_sym_or_warn(
index e199b42c82a24c1b32d0406dd445b58ad0a65bbb..be9e673a511d96a56700d55ae767f8d63c01e08b 100644 (file)
@@ -8,6 +8,7 @@
 #endif
 #include <unistd.h>
 
+#include "sd-dlopen.h"
 #include "sd-json.h"
 
 #include "alloc-util.h"
@@ -94,9 +95,10 @@ int dlopen_dw(void) {
 #if HAVE_ELFUTILS
         int r;
 
-        ELF_NOTE_DLOPEN("dw",
+        SD_ELF_NOTE_DLOPEN(
+                        "dw",
                         "Support for backtrace and ELF package metadata decoding from core files",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libdw.so.1");
 
         r = dlopen_many_sym_or_warn(
@@ -147,9 +149,10 @@ int dlopen_elf(void) {
 #if HAVE_ELFUTILS
         int r;
 
-        ELF_NOTE_DLOPEN("elf",
+        SD_ELF_NOTE_DLOPEN(
+                        "elf",
                         "Support for backtraces and reading ELF package metadata from core files",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libelf.so.1");
 
         r = dlopen_many_sym_or_warn(
@@ -406,7 +409,7 @@ static int parse_metadata(const char *name, sd_json_variant *id_json, Elf *elf,
 
                         /* Package metadata might have different owners, but the
                          * magic ID is always the same. */
-                        if (!IN_SET(note_header.n_type, ELF_PACKAGE_METADATA_ID, ELF_NOTE_DLOPEN_TYPE))
+                        if (!IN_SET(note_header.n_type, ELF_PACKAGE_METADATA_ID, SD_ELF_NOTE_DLOPEN_TYPE))
                                 continue;
 
                         _cleanup_free_ char *payload_0suffixed = NULL;
index aad0db1426c5329c33e0e30a62ba8348f34438fa..a1b4a6c49873cf6ca47a06310558d5055eb702da 100644 (file)
@@ -1,5 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include "sd-dlopen.h"
+
 #include "idn-util.h"
 #include "log.h"                /* IWYU pragma: keep */
 
@@ -10,9 +12,10 @@ const char *(*sym_idn2_strerror)(int rc) _const_ = NULL;
 DLSYM_PROTOTYPE(idn2_to_unicode_8z8z) = NULL;
 
 int dlopen_idn(void) {
-        ELF_NOTE_DLOPEN("idn",
+        SD_ELF_NOTE_DLOPEN(
+                        "idn",
                         "Support for internationalized domain names",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libidn2.so.0");
 
         return dlopen_many_sym_or_warn(
index d2714bd81c183d39e27525253003b7a50e808a3b..02b6b36b3c244a6b37f5f2372b26f8ada0892c45 100644 (file)
@@ -2,6 +2,8 @@
 
 #include <syslog.h>
 
+#include "sd-dlopen.h"
+
 #include "libarchive-util.h"
 #include "user-util.h"                  /* IWYU pragma: keep */
 
@@ -79,9 +81,10 @@ DLSYM_PROTOTYPE(archive_write_set_format_filter_by_ext) = NULL;
 DLSYM_PROTOTYPE(archive_write_set_format_pax) = NULL;
 
 int dlopen_libarchive(void) {
-        ELF_NOTE_DLOPEN("archive",
+        SD_ELF_NOTE_DLOPEN(
+                        "archive",
                         "Support for decompressing archive files",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libarchive.so.13");
 
         return dlopen_many_sym_or_warn(
index 4bdd4c1317edfa1d70f1c37e6396c883ef5560cc..bf5791955bbbaf6fd3e250a04f1f97f89284ad5f 100644 (file)
@@ -4,6 +4,8 @@
 #include <linux/netlink.h>
 #include <sys/socket.h>
 
+#include "sd-dlopen.h"
+
 #include "errno-util.h"
 #include "fd-util.h"
 #include "iovec-util.h"
@@ -23,9 +25,10 @@ static DLSYM_PROTOTYPE(audit_open) = NULL;
 
 int dlopen_libaudit(void) {
 #if HAVE_AUDIT
-        ELF_NOTE_DLOPEN("audit",
+        SD_ELF_NOTE_DLOPEN(
+                        "audit",
                         "Support for Audit logging",
-                        ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
                         "libaudit.so.1");
 
         return dlopen_many_sym_or_warn(
index 4760d66c92a939668953481bcc6dd2d6e76b2365..df3ba146f9ed47ac4ab5500be56d9636bd2380a1 100644 (file)
@@ -4,6 +4,8 @@
 #  include <crypt.h>
 #endif
 
+#include "sd-dlopen.h"
+
 #include "alloc-util.h"
 #include "dlfcn-util.h"
 #include "errno-util.h"
@@ -33,9 +35,10 @@ int dlopen_libcrypt(void) {
         /* Several distributions like Debian/Ubuntu and OpenSUSE provide libxcrypt as libcrypt.so.1
          * (libcrypt.so.1.1 on some architectures), while others like Fedora/CentOS and Arch provide it as
          * libcrypt.so.2. */
-        ELF_NOTE_DLOPEN("crypt",
+        SD_ELF_NOTE_DLOPEN(
+                        "crypt",
                         "Support for hashing passwords",
-                        ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
                         "libcrypt.so.2", "libcrypt.so.1", "libcrypt.so.1.1");
 
         _cleanup_(dlclosep) void *dl = NULL;
index b4aee235a9923cfdc3f7d1600db5c7756b95b153..f4c8ad5c8616ec7b467b08f3d3adeb38c5129b1b 100644 (file)
@@ -1,5 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include "sd-dlopen.h"
+
 #include "libfido2-util.h"
 #include "log.h"
 
@@ -82,9 +84,10 @@ int dlopen_libfido2(void) {
 #if HAVE_LIBFIDO2
         int r;
 
-        ELF_NOTE_DLOPEN("fido2",
+        SD_ELF_NOTE_DLOPEN(
+                        "fido2",
                         "Support fido2 for encryption and authentication",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libfido2.so.1");
 
         r = dlopen_many_sym_or_warn(
index c6c6074c2595335f4fe2b2691dbef63c47d3ab87..be4dd0712ee4cf174a57493a6bc385858b57f904 100644 (file)
@@ -2,6 +2,8 @@
 
 #include <stdio.h>
 
+#include "sd-dlopen.h"
+
 #include "fstab-util.h"
 #include "libmount-util.h"
 #include "log.h"
@@ -41,9 +43,10 @@ DLSYM_PROTOTYPE(mnt_table_parse_swaps) = NULL;
 DLSYM_PROTOTYPE(mnt_unref_monitor) = NULL;
 
 int dlopen_libmount(void) {
-        ELF_NOTE_DLOPEN("mount",
+        SD_ELF_NOTE_DLOPEN(
+                        "mount",
                         "Support for mount enumeration",
-                        ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
                         "libmount.so.1");
 
         return dlopen_many_sym_or_warn(
index a7f9e178e3c2a58c0104186967f2a3572bcdf506..8ad7dab180a6615bcd725df7679052897d339fe3 100644 (file)
@@ -2,6 +2,8 @@
 
 #include <syslog.h>
 
+#include "sd-dlopen.h"
+
 #include "log.h"
 #include "module-util.h"
 #include "proc-cmdline.h"
@@ -26,9 +28,10 @@ DLSYM_PROTOTYPE(kmod_unref) = NULL;
 DLSYM_PROTOTYPE(kmod_validate_resources) = NULL;
 
 int dlopen_libkmod(void) {
-        ELF_NOTE_DLOPEN("kmod",
+        SD_ELF_NOTE_DLOPEN(
+                        "kmod",
                         "Support for loading kernel modules",
-                        ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
                         "libkmod.so.2");
 
         return dlopen_many_sym_or_warn(
index d6158ec8caec497cf4ee927f7893e30eef1d1515..0f04e97377b3e759979597b735dc040b33cc552c 100644 (file)
@@ -4,6 +4,7 @@
 #include <syslog.h>
 
 #include "sd-bus.h"
+#include "sd-dlopen.h"
 
 #include "alloc-util.h"
 #include "bus-internal.h"
@@ -35,9 +36,10 @@ DLSYM_PROTOTYPE(pam_syslog) = NULL;
 DLSYM_PROTOTYPE(pam_vsyslog) = NULL;
 
 int dlopen_libpam(void) {
-        ELF_NOTE_DLOPEN("pam",
+        SD_ELF_NOTE_DLOPEN(
+                        "pam",
                         "Support for LinuxPAM",
-                        ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
                         "libpam.so.0");
 
         return dlopen_many_sym_or_warn(
index 5b0b22458bfb3fdd36191f373db66f3a7365d2e9..33c77b01a0cef8b76fa915e0bfa8605d89d1fa6e 100644 (file)
@@ -6,6 +6,8 @@
 
 #include <passwdqc.h>
 
+#include "sd-dlopen.h"
+
 #include "alloc-util.h"
 #include "dlfcn-util.h"
 #include "errno-util.h"
@@ -137,9 +139,10 @@ int check_password_quality(
 
 int dlopen_passwdqc(void) {
 #if HAVE_PASSWDQC
-        ELF_NOTE_DLOPEN("passwdqc",
+        SD_ELF_NOTE_DLOPEN(
+                        "passwdqc",
                         "Support for password quality checks",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libpasswdqc.so.1");
 
         return dlopen_many_sym_or_warn(
index 05d85bd69652bd6a33f96ed2d39c75365b295303..3eba9495b642c224da0aee7f37c7681df21fb5ed 100644 (file)
@@ -8,6 +8,8 @@
 #include <stdio.h>
 #include <unistd.h>
 
+#include "sd-dlopen.h"
+
 #include "alloc-util.h"
 #include "dlfcn-util.h"
 #include "errno-util.h"
@@ -153,9 +155,10 @@ int check_password_quality(const char *password, const char *old, const char *us
 
 int dlopen_pwquality(void) {
 #if HAVE_PWQUALITY
-        ELF_NOTE_DLOPEN("pwquality",
+        SD_ELF_NOTE_DLOPEN(
+                        "pwquality",
                         "Support for password quality checks",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libpwquality.so.1");
 
         return dlopen_many_sym_or_warn(
index 10a767442a4e4064f4c9797c0b9ebbb9ec81fb4d..22a7635170babaecd26f9fd1bc9b4d120a398994 100644 (file)
@@ -1,5 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include "sd-dlopen.h"
+
 #include "dlfcn-util.h"
 #include "hash-funcs.h"
 #include "log.h"
@@ -28,9 +30,10 @@ const struct hash_ops pcre2_code_hash_ops_free = {};
 
 int dlopen_pcre2(void) {
 #if HAVE_PCRE2
-        ELF_NOTE_DLOPEN("pcre2",
+        SD_ELF_NOTE_DLOPEN(
+                        "pcre2",
                         "Support for regular expressions",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libpcre2-8.so.0");
 
         /* So here's something weird: PCRE2 actually renames the symbols exported by the library via C
index 3062bcc5541960a41fae639f21970f19ffd1b8f5..1fa0d77d6d004b4573618f3f6a40b699440b5d70 100644 (file)
@@ -1,5 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include "sd-dlopen.h"
+
 #include "alloc-util.h"
 #include "ask-password-api.h"
 #include "dlfcn-util.h"
@@ -1766,9 +1768,10 @@ static int list_callback(
 
 int dlopen_p11kit(void) {
 #if HAVE_P11KIT
-        ELF_NOTE_DLOPEN("p11-kit",
+        SD_ELF_NOTE_DLOPEN(
+                        "p11-kit",
                         "Support for PKCS11 hardware tokens",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libp11-kit.so.0");
 
         return dlopen_many_sym_or_warn(
index 320b2353ff92fa0f0bbf99fa5fed5f70300a546c..ee6d3c40f93fa7c7fc450c49d0057d57dc439bfe 100644 (file)
@@ -7,6 +7,8 @@
 #endif
 #include <stdio.h>
 
+#include "sd-dlopen.h"
+
 #include "ansi-color.h"
 #include "dlfcn-util.h"
 #include "locale-util.h"
@@ -30,9 +32,10 @@ int dlopen_qrencode(void) {
 #if HAVE_QRENCODE
         int r;
 
-        ELF_NOTE_DLOPEN("qrencode",
+        SD_ELF_NOTE_DLOPEN(
+                        "qrencode",
                         "Support for generating QR codes",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libqrencode.so.4", "libqrencode.so.3");
 
         FOREACH_STRING(s, "libqrencode.so.4", "libqrencode.so.3") {
index 55e3c14e443fd70d9129327962d12880670a2d18..d2f7612a53de584b3ca4aba0d1e754bf04d0fe70 100644 (file)
@@ -16,6 +16,8 @@
 #include <asm/sgidefs.h>
 #endif
 
+#include "sd-dlopen.h"
+
 #include "af-list.h"
 #include "alloc-util.h"
 #include "env-util.h"
@@ -49,9 +51,10 @@ DLSYM_PROTOTYPE(seccomp_syscall_resolve_name) = NULL;
 DLSYM_PROTOTYPE(seccomp_syscall_resolve_num_arch) = NULL;
 
 int dlopen_libseccomp(void) {
-        ELF_NOTE_DLOPEN("seccomp",
+        SD_ELF_NOTE_DLOPEN(
+                        "seccomp",
                         "Support for Seccomp Sandboxes",
-                        ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
                         "libseccomp.so.2");
 
         return dlopen_many_sym_or_warn(
index 4fca62b66d32c4c6d3094a5782181c4fe94dd2df..f980ec83acb4f996fd13a97fca7f38350b6a16ac 100644 (file)
@@ -15,6 +15,8 @@
 #include <selinux/selinux.h>
 #endif
 
+#include "sd-dlopen.h"
+
 #include "alloc-util.h"
 #include "errno-util.h"
 #include "fd-util.h"
@@ -88,9 +90,10 @@ DLSYM_PROTOTYPE(setsockcreatecon_raw) = NULL;
 DLSYM_PROTOTYPE(string_to_security_class) = NULL;
 
 int dlopen_libselinux(void) {
-        ELF_NOTE_DLOPEN("selinux",
+        SD_ELF_NOTE_DLOPEN(
+                        "selinux",
                         "Support for SELinux",
-                        ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
                         "libselinux.so.1");
 
         return dlopen_many_sym_or_warn(
index 9e05c847edf02b2884de0ce30c270e32651477c1..c12ba2d28c778bb84cf299b99f926abce83822b6 100644 (file)
@@ -4,6 +4,7 @@
 #include <unistd.h>
 
 #include "sd-device.h"
+#include "sd-dlopen.h"
 
 #include "alloc-util.h"
 #include "ansi-color.h"
@@ -130,9 +131,10 @@ static DLSYM_PROTOTYPE(Tss2_RC_Decode) = NULL;
 static int dlopen_tpm2_esys(void) {
         int r;
 
-        ELF_NOTE_DLOPEN("tpm",
+        SD_ELF_NOTE_DLOPEN(
+                        "tpm",
                         "Support for TPM",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libtss2-esys.so.0");
 
         r = dlopen_many_sym_or_warn(
@@ -193,9 +195,10 @@ static int dlopen_tpm2_esys(void) {
 }
 
 static int dlopen_tpm2_rc(void) {
-        ELF_NOTE_DLOPEN("tpm",
+        SD_ELF_NOTE_DLOPEN(
+                        "tpm",
                         "Support for TPM",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libtss2-rc.so.0");
 
         return dlopen_many_sym_or_warn(
@@ -204,9 +207,10 @@ static int dlopen_tpm2_rc(void) {
 }
 
 static int dlopen_tpm2_mu(void) {
-        ELF_NOTE_DLOPEN("tpm",
+        SD_ELF_NOTE_DLOPEN(
+                        "tpm",
                         "Support for TPM",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libtss2-mu.so.0");
 
         return dlopen_many_sym_or_warn(
@@ -236,9 +240,10 @@ static int dlopen_tpm2_tcti_device(void) {
         /* The "device" TCTI is the most relevant one, let's also load it explicitly on dlopen_tpm2(), even
          * if we don't resolve any symbols here. */
 
-        ELF_NOTE_DLOPEN("tpm",
+        SD_ELF_NOTE_DLOPEN(
+                        "tpm",
                         "Support for TPM",
-                        ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+                        SD_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
                         "libtss2-tcti-device.so.0");
 
         return dlopen_verbose(