Skip to contentSkip to conversation

valgrind: fix musl compile

PATCH New Peter Seiderer 4 participants 5 messages Oct 31, 2015 – Dec 19, 2015

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 valgrind: fix musl compile

Add patch disabling glibc version check and adding some tweaks for musl support (based on OpenWRT patch [1]).

Fixes ([2]):
checking the glibc version... unsupported version
configure: error: Valgrind requires glibc version 2.2 or later

[1] https://dev.openwrt.org/browser/trunk/package/devel/valgrind/patches/200-musl_fix.patch?rev=46302
[2] http://autobuild.buildroot.org/results/7b0/7b048ba58918f0a08498c61327fcf35a85a84837/build-end.log

---
 ...bc-detection-for-musl-plus-some-adjusteme.patch | 77 ++++++++++++++++++++++
 package/valgrind/valgrind.mk                       |  3 +
 2 files changed, 80 insertions(+)
 create mode 100644 package/valgrind/0003-Disable-glibc-detection-for-musl-plus-some-adjusteme.patch
package/valgrind/0003-Disable-glibc-detection-for-musl-plus-some-adjusteme.patch new file +77 -0
new file mode 100644
index 0000000..0a2f660
@@ -0,0 +1,77 @@
+From fcb21d1480c17da6c59422d8eebfdf42d967f441 Mon Sep 17 00:00:00 2001
+From: Peter Seiderer <[email protected]>
+Date: Sat, 31 Oct 2015 19:45:04 +0100
+Subject: [PATCH] Disable glibc detection for musl (plus some adjustements).
+
+Patch based on the OpenWrt patch for valgrind/musl, see [1].
+
+[1] https://dev.openwrt.org/browser/trunk/package/devel/valgrind/patches/200-musl_fix.patch?rev=46302
+
+Signed-off-by: Peter Seiderer <[email protected]>
+---
+ configure.ac             | 5 +++--
+ coregrind/vg_preloaded.c | 2 +-
+ include/pub_tool_redir.h | 9 ++++++++-
+ 3 files changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 8ab7f9b..378ba9f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1066,8 +1066,9 @@ case "${GLIBC_VERSION}" in
+ 	;;
+      2.0|2.1|*)
+ 	AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
+-	AC_MSG_ERROR([Valgrind requires glibc version 2.2 or later,])
+-	AC_MSG_ERROR([Darwin libc, Bionic libc or Solaris libc])
++	AC_MSG_WARN([Valgrind requires glibc version 2.2 or later,])
++	AC_MSG_WARN([Darwin libc, Bionic libc or Solaris libc])
++	GLIBC_VERSION=musl
+ 	;;
+ esac
+ 
+diff --git a/coregrind/vg_preloaded.c b/coregrind/vg_preloaded.c
+index 2ea7a7a..e49c832 100644
+--- a/coregrind/vg_preloaded.c
++++ b/coregrind/vg_preloaded.c
+@@ -56,7 +56,7 @@
+ void VG_NOTIFY_ON_LOAD(freeres)( void );
+ void VG_NOTIFY_ON_LOAD(freeres)( void )
+ {
+-#  if !defined(__UCLIBC__) \
++#  if !defined(__UCLIBC__) && defined(__GLIBC__) \
+       && !defined(VGPV_arm_linux_android) \
+       && !defined(VGPV_x86_linux_android) \
+       && !defined(VGPV_mips32_linux_android) \
+diff --git a/include/pub_tool_redir.h b/include/pub_tool_redir.h
+index bac00d7..b8cd97e 100644
+--- a/include/pub_tool_redir.h
++++ b/include/pub_tool_redir.h
+@@ -242,8 +242,11 @@
+ /* --- Soname of the standard C library. --- */
+ 
+ #if defined(VGO_linux) || defined(VGO_solaris)
++# if defined(__GLIBC__) || defined(__UCLIBC__)
+ #  define  VG_Z_LIBC_SONAME  libcZdsoZa              // libc.so*
+-
++#else
++#  define  VG_Z_LIBC_SONAME  libcZdZa              // libc.*
++#endif
+ #elif defined(VGO_darwin) && (DARWIN_VERS <= DARWIN_10_6)
+ #  define  VG_Z_LIBC_SONAME  libSystemZdZaZddylib    // libSystem.*.dylib
+ 
+@@ -274,7 +277,11 @@
+ /* --- Soname of the pthreads library. --- */
+ 
+ #if defined(VGO_linux)
++# if defined(__GLIBC__) || defined(__UCLIBC__)
+ #  define  VG_Z_LIBPTHREAD_SONAME  libpthreadZdsoZd0     // libpthread.so.0
++#else
++#  define  VG_Z_LIBPTHREAD_SONAME  libcZdZa              // libc.*
++#endif
+ #elif defined(VGO_darwin)
+ #  define  VG_Z_LIBPTHREAD_SONAME  libSystemZdZaZddylib  // libSystem.*.dylib
+ #elif defined(VGO_solaris)
+-- 
+2.1.4
+
package/valgrind/valgrind.mk +3 -0
index 75d542a..a630125 100644
@@ -12,6 +12,9 @@ VALGRIND_LICENSE_FILES = COPYING COPYING.DOCS
 VALGRIND_CONF_OPTS = --disable-tls --disable-ubsan
 VALGRIND_INSTALL_STAGING = YES
 
+# patch touching configure.ac
+VALGRIND_AUTORECONF = YES
+
 # When Valgrind detects a 32-bit MIPS architecture, it forcibly adds
 # -march=mips32 to CFLAGS; when it detects a 64-bit MIPS architecture,
 # it forcibly adds -march=mips64. This causes Valgrind to be built
Signature · 1 line
2.1.4
#1 lore raw

PATCH 1/1 valgrind: fix musl compile

Hi Peter,

Le 31/10/2015 19:59, Peter Seiderer a ?crit :

Quoted 42 lines

Add patch disabling glibc version check and adding some tweaks for musl support (based on OpenWRT patch [1]).

Fixes ([2]):
checking the glibc version... unsupported version
configure: error: Valgrind requires glibc version 2.2 or later

[1] https://dev.openwrt.org/browser/trunk/package/devel/valgrind/patches/200-musl_fix.patch?rev=46302
[2] http://autobuild.buildroot.org/results/7b0/7b048ba58918f0a08498c61327fcf35a85a84837/build-end.log

---
 ...bc-detection-for-musl-plus-some-adjusteme.patch | 77 ++++++++++++++++++++++
 package/valgrind/valgrind.mk                       |  3 +
 2 files changed, 80 insertions(+)
 create mode 100644 package/valgrind/0003-Disable-glibc-detection-for-musl-plus-some-adjusteme.patch
package/valgrind/0003-Disable-glibc-detection-for-musl-plus-some-adjusteme.patch new file +19 -0
new file mode 100644
index 0000000..0a2f660
@@ -0,0 +1,77 @@
+From fcb21d1480c17da6c59422d8eebfdf42d967f441 Mon Sep 17 00:00:00 2001
+From: Peter Seiderer <[email protected]>
+Date: Sat, 31 Oct 2015 19:45:04 +0100
+Subject: [PATCH] Disable glibc detection for musl (plus some adjustements).
+
+Patch based on the OpenWrt patch for valgrind/musl, see [1].
+
+[1] https://dev.openwrt.org/browser/trunk/package/devel/valgrind/patches/200-musl_fix.patch?rev=46302
+
+Signed-off-by: Peter Seiderer <[email protected]>
+---
+ configure.ac             | 5 +++--
+ coregrind/vg_preloaded.c | 2 +-
+ include/pub_tool_redir.h | 9 ++++++++-
+ 3 files changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 8ab7f9b..378ba9f 100644
+--- a/configure.ac

package/valgrind/0003-Disable-glibc-detection-for-musl-plus-some-adjusteme.patch line 29

Quoted 10 lines
package/valgrind/0003-Disable-glibc-detection-for-musl-plus-some-adjusteme.patch new file +10 -0
++++ b/configure.ac
+@@ -1066,8 +1066,9 @@ case "${GLIBC_VERSION}" in
+ 	;;
+      2.0|2.1|*)
+ 	AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
+-	AC_MSG_ERROR([Valgrind requires glibc version 2.2 or later,])
+-	AC_MSG_ERROR([Darwin libc, Bionic libc or Solaris libc])
++	AC_MSG_WARN([Valgrind requires glibc version 2.2 or later,])
++	AC_MSG_WARN([Darwin libc, Bionic libc or Solaris libc])
++	GLIBC_VERSION=musl

This part of this patch break the glibc check for unsupported version 2.0 and 2.1.

If you want to upstream the patch, maybe you can check if GLIBC_VERSION is empty and use the toolchain tuple instead ?

Something like:

# GLIBC_VERSION is empty if a musl libc is used, so use the toolchain tuple

# in this case.
if test x$GLIBC_VERSION = x; then
    TUPLE=`$CC -dumpmachine | grep musl`
    if test -n $TUPLE; then
        GLIBC_VERSION=musl
    fi
fi

AC_MSG_CHECKING([the glibc version])

case "${GLIBC_VERSION}" in
...

    musl)
	AC_MSG_RESULT(Musl)
	;;

...

Thoughts?

Best regards,
Romain Naour

#2 lore raw

PATCH 1/1 valgrind: fix musl compile

Quoted 61 lines · Romain Naour

Hi Peter,

Le 31/10/2015 19:59, Peter Seiderer a ?crit :

Quoted 42 lines

Add patch disabling glibc version check and adding some tweaks for musl support (based on OpenWRT patch [1]).

Fixes ([2]):
checking the glibc version... unsupported version
configure: error: Valgrind requires glibc version 2.2 or later

[1] https://dev.openwrt.org/browser/trunk/package/devel/valgrind/patches/200-musl_fix.patch?rev=46302
[2] http://autobuild.buildroot.org/results/7b0/7b048ba58918f0a08498c61327fcf35a85a84837/build-end.log

---
 ...bc-detection-for-musl-plus-some-adjusteme.patch | 77 ++++++++++++++++++++++
 package/valgrind/valgrind.mk                       |  3 +
 2 files changed, 80 insertions(+)
 create mode 100644 package/valgrind/0003-Disable-glibc-detection-for-musl-plus-some-adjusteme.patch
package/valgrind/0003-Disable-glibc-detection-for-musl-plus-some-adjusteme.patch new file +19 -0
new file mode 100644
index 0000000..0a2f660
@@ -0,0 +1,77 @@
+From fcb21d1480c17da6c59422d8eebfdf42d967f441 Mon Sep 17 00:00:00 2001
+From: Peter Seiderer <[email protected]>
+Date: Sat, 31 Oct 2015 19:45:04 +0100
+Subject: [PATCH] Disable glibc detection for musl (plus some adjustements).
+
+Patch based on the OpenWrt patch for valgrind/musl, see [1].
+
+[1] https://dev.openwrt.org/browser/trunk/package/devel/valgrind/patches/200-musl_fix.patch?rev=46302
+
+Signed-off-by: Peter Seiderer <[email protected]>
+---
+ configure.ac             | 5 +++--
+ coregrind/vg_preloaded.c | 2 +-
+ include/pub_tool_redir.h | 9 ++++++++-
+ 3 files changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 8ab7f9b..378ba9f 100644
+--- a/configure.ac

package/valgrind/0003-Disable-glibc-detection-for-musl-plus-some-adjusteme.patch line 29

Quoted 10 lines
package/valgrind/0003-Disable-glibc-detection-for-musl-plus-some-adjusteme.patch new file +10 -0
++++ b/configure.ac
+@@ -1066,8 +1066,9 @@ case "${GLIBC_VERSION}" in
+ 	;;
+      2.0|2.1|*)
+ 	AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
+-	AC_MSG_ERROR([Valgrind requires glibc version 2.2 or later,])
+-	AC_MSG_ERROR([Darwin libc, Bionic libc or Solaris libc])
++	AC_MSG_WARN([Valgrind requires glibc version 2.2 or later,])
++	AC_MSG_WARN([Darwin libc, Bionic libc or Solaris libc])
++	GLIBC_VERSION=musl

This part of this patch break the glibc check for unsupported version 2.0 and 2.1.

If you want to upstream the patch, maybe you can check if GLIBC_VERSION is empty and use the toolchain tuple instead ?

Quoted 7 lines

Something like:

# GLIBC_VERSION is empty if a musl libc is used, so use the toolchain tuple

# in this case.
if test x$GLIBC_VERSION = x; then
    TUPLE=`$CC -dumpmachine | grep musl`
    if test -n $TUPLE; then

if $CC -dumpmachine | grep -q musl; then

would be simpler.

Regards,
Arnout

Quoted 22 lines

GLIBC_VERSION=musl
fi
fi

AC_MSG_CHECKING([the glibc version])

case "${GLIBC_VERSION}" in
...

    musl)
	AC_MSG_RESULT(Musl)
	;;

...

Thoughts?

Best regards,
Romain Naour
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
#3 lore raw

PATCH 1/1 valgrind: fix musl compile

In reply to Romain Naour

Hello Romain,

On Wed, 11 Nov 2015 18:06:25 +0100, Romain Naour <[email protected]> wrote:

[...]

Quoted 12 lines

package/valgrind/0003-Disable-glibc-detection-for-musl-plus-some-adjusteme.patch line 29

Quoted 11 lines

+--- a/configure.ac
++++ b/configure.ac
+@@ -1066,8 +1066,9 @@ case "${GLIBC_VERSION}" in

package/valgrind/0003-Disable-glibc-detection-for-musl-plus-some-adjusteme.patch new file +8 -0
+ 	;;
+      2.0|2.1|*)
+ 	AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
+-	AC_MSG_ERROR([Valgrind requires glibc version 2.2 or later,])
+-	AC_MSG_ERROR([Darwin libc, Bionic libc or Solaris libc])
++	AC_MSG_WARN([Valgrind requires glibc version 2.2 or later,])
++	AC_MSG_WARN([Darwin libc, Bionic libc or Solaris libc])
++	GLIBC_VERSION=musl
Quoted 1 line

This part of this patch break the glibc check for unsupported version 2.0 and 2.1.

Yes I know, its only a workaround for the buildroot build...

Quoted 17 lines

If you want to upstream the patch, maybe you can check if GLIBC_VERSION is empty and use the toolchain tuple instead ?

Something like:

# GLIBC_VERSION is empty if a musl libc is used, so use the toolchain tuple

# in this case.
if test x$GLIBC_VERSION = x; then
    TUPLE=`$CC -dumpmachine | grep musl`
    if test -n $TUPLE; then
        GLIBC_VERSION=musl
    fi
fi

AC_MSG_CHECKING([the glibc version])

Quoted 9 lines

case "${GLIBC_VERSION}" in
...

    musl)
	AC_MSG_RESULT(Musl)
	;;

...

Thoughts?

Many thanks for the suggestion, will try to cook up a patch...

Regards,
Peter

Quoted 6 lines

Best regards,
Romain Naour
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

#4 lore raw

PATCH 1/1 valgrind: fix musl compile

In reply to Peter Seiderer

Dear Peter Seiderer,

Quoted 11 lines · Peter Seiderer

Add patch disabling glibc version check and adding some tweaks for musl support (based on OpenWRT patch [1]).

Fixes ([2]):
checking the glibc version... unsupported version
configure: error: Valgrind requires glibc version 2.2 or later

[1] https://dev.openwrt.org/browser/trunk/package/devel/valgrind/patches/200-musl_fix.patch?rev=46302
[2] http://autobuild.buildroot.org/results/7b0/7b048ba58918f0a08498c61327fcf35a85a84837/build-end.log

You have been given a number of comments on this patch. Could you rework to take into account the comments and send an updated version?

Note that you can also find some musl compatibility patches at
http://git.alpinelinux.org/cgit/aports/tree/main/valgrind/.

In the mean time, I'll mark your patch as Changes Requested in patchwork.

Thanks!

Thomas

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