util-linux: fix link failures due to name clash
PATCH v3 1/1 util-linux: fix link failures due to name clash
Several packages have a similar md5.c file, and each has a function named byteReverse(). This generates link errors when building statically ("multiple definition of `byteReverse'").
Fix by applying a patch from upstream.
Fixes:
http://autobuild.buildroot.net/results/419ab2c0e034cc68991281c51caa8271b0fadbab/
---
Changed v2 -> v3:
- patch is now upstream, so add URL
Changed v1 -> v2:
- add Submitted-upstream tag now that it's on the util-linux ml
--- .../0001-md5-declare-byteReverse-as-static.patch | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 package/util-linux/0001-md5-declare-byteReverse-as-static.patch
package/util-linux/0001-md5-declare-byteReverse-as-static.patch new file +44 -0
@@ -0,0 +1,44 @@ +From 424cee0f06ece9473786c189ab4741e1dea7061d Mon Sep 17 00:00:00 2001 +From: Luca Ceresoli <[email protected]> +Date: Tue, 7 Nov 2017 14:39:09 +0100 +Subject: [PATCH] md5: declare byteReverse as static + +byteReverse() is an internal function in md5.c, and is not exposed via +any header file, but it is not declared as static. This is a problem +with the md5.c file since it is copied more or less verbatim in other +programs (fontconfig and pjsip among others), causing a link error +when linking two of them together. + +Fixes link failures such as: + http://autobuild.buildroot.net/results/419ab2c0e034cc68991281c51caa8271b0fadbab/build-end.log + +[Upstream patch: https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/commit/?id=424cee0f06ece9473786c189ab4741e1dea7061d] + +Signed-off-by: Luca Ceresoli <[email protected]> +--- + lib/md5.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/md5.c b/lib/md5.c +index 488d16ef69b4..282e2d22af25 100644 +--- a/lib/md5.c ++++ b/lib/md5.c +@@ -21,13 +21,13 @@ + #if !defined(WORDS_BIGENDIAN) + #define byteReverse(buf, len) /* Nothing */ + #else +-void byteReverse(unsigned char *buf, unsigned longs); ++static void byteReverse(unsigned char *buf, unsigned longs); + + #ifndef ASM_MD5 + /* + * Note: this code is harmless on little-endian machines. + */ +-void byteReverse(unsigned char *buf, unsigned longs) ++static void byteReverse(unsigned char *buf, unsigned longs) + { + uint32_t t; + do { +-- +2.7.4 +
Signature · 1 line
2.7.4
PATCH v3 1/1 util-linux: fix link failures due to name clash
Quoted 85 lines
From: "Luca Ceresoli" <[email protected]>
To: buildroot at buildroot.org
Cc: "Luca Ceresoli" <[email protected]>, "Adam Duskett" <[email protected]>
Sent: Wednesday, November 8, 2017 3:38:01 PM
Subject: [Buildroot] [PATCH v3] util-linux: fix link failures due to name clashSeveral packages have a similar
md5.cfile, and each has a function namedbyteReverse(). This generates link errors when building statically ("multiple definition of `byteReverse'").Fix by applying a patch from upstream.
Fixes:
http://autobuild.buildroot.net/results/419ab2c0e034cc68991281c51caa8271b0fadbab/Signed-off-by Luca Ceresoli <[email protected]>Cc Adam Duskett <[email protected]>---
Changed v2 -> v3:
- patch is now upstream, so add URLChanged v1 -> v2:
- add Submitted-upstream tag now that it's on the util-linux ml
---.../0001-md5-declare-byteReverse-as-static.patch| 44 ++++++++++++++++++++++1 file changed, 44 insertions(+)create mode 100644
package/util-linux/0001-md5-declare-byteReverse-as-static.patchpackage/util-linux/0001-md5-declare-byteReverse-as-static.patch new file +13
-0@@ -0,0 +1,44 @@ +From 424cee0f06ece9473786c189ab4741e1dea7061d Mon Sep 17 00:00:00 2001 +From: Luca Ceresoli <[email protected]> +Date: Tue, 7 Nov 2017 14:39:09 +0100 +Subject: [PATCH] md5: declare byteReverse as static + +byteReverse() is an internal function in md5.c, and is not exposed via +any header file, but it is not declared as static. This is a problem +with the md5.c file since it is copied more or less verbatim in other +programs (fontconfig and pjsip among others), causing a link error +when linking two of them together. + +Fixes link failures such as: +http://autobuild.buildroot.net/results/419ab2c0e034cc68991281c51caa8271b0fadbab/build-end.log
+
+[Upstream patch:
https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/commit/?id=424cee0f06ece9473786c189ab4741e1dea7061d]package/util-linux/0001-md5-declare-byteReverse-as-static.patch new file +29
-1+ +Signed-off-by: Luca Ceresoli <[email protected]> +--- + lib/md5.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/md5.c b/lib/md5.c +index 488d16ef69b4..282e2d22af25 100644 +--- a/lib/md5.c ++++ b/lib/md5.c +@@ -21,13 +21,13 @@ + #if !defined(WORDS_BIGENDIAN) + #define byteReverse(buf, len) /* Nothing */ + #else +-void byteReverse(unsigned char *buf, unsigned longs); ++static void byteReverse(unsigned char *buf, unsigned longs); + + #ifndef ASM_MD5 + /* + * Note: this code is harmless on little-endian machines. + */ +-void byteReverse(unsigned char *buf, unsigned longs) ++static void byteReverse(unsigned char *buf, unsigned longs) + { + uint32_t t; + do { +-- +2.7.4 + --
Quoted 1 line
2.7.4
Rebuilt libpjsip after applying the patch and confirmed it solves the static linking issue.
Signature · 4 lines
Carlos Santos (Casantos) - DATACOM, P&D ?The greatest triumph that modern PR can offer is the transcendent success of having your words and actions judged by your reputation, rather than the other way about.? ? Christopher Hitchens
Thomas Petazzoni
AppliedPATCH v3 1/1 util-linux: fix link failures due to name clash
In reply to Luca CeresoliHello,
Quoted 6 lines · Luca Ceresoli
Several packages have a similar
md5.cfile, and each has a function namedbyteReverse(). This generates link errors when building statically ("multiple definition of `byteReverse'").Fix by applying a patch from upstream.
Quoted 7 lines
Fixes:
http://autobuild.buildroot.net/results/419ab2c0e034cc68991281c51caa8271b0fadbab/Signed-off-by Luca Ceresoli <[email protected]>Cc Adam Duskett <[email protected]>---
Applied to master, thanks.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com