Skip to contentSkip to conversation

util-linux: fix link failures due to name clash

PATCH New Luca Ceresoli 3 participants 3 messages Nov 8, 2017 – Nov 11, 2017

lore
Share & tools
lore
#0 lore raw

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
new file mode 100644
index 000000000000..a5b290c4dbe6
@@ -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
#1 lore raw

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 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 +13 -0
new file mode 100644
index 000000000000..a5b290c4dbe6
@@ -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
#2 lore raw

PATCH v3 1/1 util-linux: fix link failures due to name clash

In reply to Luca Ceresoli

Hello,

Quoted 6 lines · Luca Ceresoli

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.

Quoted 7 lines

Fixes:
http://autobuild.buildroot.net/results/419ab2c0e034cc68991281c51caa8271b0fadbab/

---

Applied to master, thanks.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com