From 6153c37e38e999634404c86d03e2ae1f111fb869 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sat, 12 Oct 2024 18:03:44 +0200 Subject: [PATCH] Avoid static linking conflicts with libblkid When static linking, it's not possible to have two functions with the same name in different libraries: = note: /nix/store/s2cjhni3s6shh0n35ay1hpj8d85k44qk-x86_64-unknown-linux-musl-binutils-2.43.1/bin/x86_64-unknown-linux-musl-ld: /nix/store/zwid05lzfy46k32xljb2alh0gq7ys58a-util-linux-minimal-static-x86_64-unknown-linux-musl-2.39.4-lib/lib/libblkid.a(libcommon_la-crc32c.o): in function `crc32c': (.text+0x0): multiple definition of `crc32c'; ./libbcachefs.a(tools-util.o):/build/source/c_src/tools-util.c:484: first defined here collect2: error: ld returned 1 exit status Work around this by avoiding a known name collision with a function in libblkid. Closes: https://github.com/koverstreet/bcachefs-tools/issues/311 Signed-off-by: Alyssa Ross Signed-off-by: Kent Overstreet --- c_src/tools-util.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/c_src/tools-util.h b/c_src/tools-util.h index 269d589b..572aca05 100644 --- a/c_src/tools-util.h +++ b/c_src/tools-util.h @@ -174,6 +174,8 @@ struct fiemap_extent fiemap_iter_next(struct fiemap_iter *); char *strcmp_prefix(char *, const char *); +/* Avoid conflicts with libblkid's crc32 function in static builds */ +#define crc32c bch_crc32c u32 crc32c(u32, const void *, size_t); char *dev_to_name(dev_t);