Skip to content

Commit

Permalink
shared/cryptsetup-util: build problematic code only in developer mode
Browse files Browse the repository at this point in the history
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 #30218.
  • Loading branch information
keszybz authored and bluca committed Nov 28, 2023
1 parent 51219be commit 2575771
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 4 deletions.
3 changes: 2 additions & 1 deletion docs/ENVIRONMENT.md
Expand Up @@ -472,7 +472,8 @@ disk images with `--image=` or similar:
* `$SYSTEMD_CRYPTSETUP_TOKEN_PATH` – takes a path to a directory in the file
system. If specified overrides where libcryptsetup will look for token
modules (.so). This is useful for debugging token modules: set this
environment variable to the build directory and you are set.
environment variable to the build directory and you are set. This variable
is only supported when systemd is compiled in developer mode.

Various tools that read passwords from the TTY, such as `systemd-cryptenroll`
and `homectl`:
Expand Down
4 changes: 1 addition & 3 deletions src/shared/cryptsetup-util.c
Expand Up @@ -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
Expand All @@ -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) {

Expand Down

0 comments on commit 2575771

Please sign in to comment.