shared/cryptsetup-util: build problematic code only in developer mode

This code doesn't link when gcc+lld is used:

$ LDFLAGS=-fuse-ld=lld meson setup build-lld && ninja -C build-lld udevadm
...
ld.lld: error: src/shared/libsystemd-shared-255.a(libsystemd-shared-255.a.p/cryptsetup-util.c.o):
  symbol crypt_token_external_path@@ has undefined version
collect2: error: ld returned 1 exit status

As a work-around, restrict it to developer mode.

Closes https://github.com/systemd/systemd/issues/30218.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2023-11-28 20:23:45 +00:00
committed by Luca Boccassi
parent 51219be992
commit 25757715fe
2 changed files with 3 additions and 4 deletions
+1 -3
View File
@@ -72,8 +72,7 @@ int (*sym_crypt_volume_key_keyring)(struct crypt_device *cd, int enable);
/* Do this only on new enough compilers that actually support the "symver" attribute. Given this is a debug
* feature, let's simply not bother on older compilers */
#if defined __has_attribute
#if __has_attribute(symver)
#if BUILD_MODE_DEVELOPER && defined(__has_attribute) && __has_attribute(symver)
const char *my_crypt_token_external_path(void); /* prototype for our own implementation */
/* We use the "symver" attribute to mark this implementation as the default implementation, and drop the
@@ -97,7 +96,6 @@ _public_ const char *my_crypt_token_external_path(void) {
return NULL;
}
#endif
#endif
static void cryptsetup_log_glue(int level, const char *msg, void *usrptr) {