Skip to content

Commit

Permalink
Avoid static linking conflicts with libblkid
Browse files Browse the repository at this point in the history
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: #311
Signed-off-by: Alyssa Ross <[email protected]>
Signed-off-by: Kent Overstreet <[email protected]>
  • Loading branch information
alyssais authored and Kent Overstreet committed Oct 12, 2024
1 parent b34d134 commit 6e91e45
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions c_src/tools-util.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 6e91e45

Please sign in to comment.