All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Seiderer <ps.report@gmx.net>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v3] valgrind: fix musl compile
Date: Tue,  9 Feb 2016 23:53:21 +0100	[thread overview]
Message-ID: <1455058401-28034-1-git-send-email-ps.report@gmx.net> (raw)

Add musl libc detection (based on suggestions by Romain Naour and
Arnout Vandecappelle) and add 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

Patch suggested upstream (see [3]).

[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
[3] https://bugs.kde.org/show_bug.cgi?id=359202

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
---
Changes v2 -> v3:
  - change valgrind patch define logic (suggested by Arnout Vandecappelle)

Changes v1 -> v2:
  - add proper musl libc detection (suggested by Romain Naour and
    Arnout Vandecappelle)
---
 package/valgrind/0004-Fixes-for-musl-libc.patch | 99 +++++++++++++++++++++++++
 package/valgrind/valgrind.mk                    |  3 +
 2 files changed, 102 insertions(+)
 create mode 100644 package/valgrind/0004-Fixes-for-musl-libc.patch

diff --git a/package/valgrind/0004-Fixes-for-musl-libc.patch b/package/valgrind/0004-Fixes-for-musl-libc.patch
new file mode 100644
index 0000000..a36e91f
--- /dev/null
+++ b/package/valgrind/0004-Fixes-for-musl-libc.patch
@@ -0,0 +1,99 @@
+From 6916cc1b02ab271f04e925b8fce130c4833b9faf Mon Sep 17 00:00:00 2001
+From: Peter Seiderer <ps.report@gmx.net>
+Date: Sat, 31 Oct 2015 19:45:04 +0100
+Subject: [PATCH] Fixes for musl libc.
+
+- add musl libc detection (prevents configure error)
+- adjust preload and symbol names (based on the OpenWrt
+  patch, see [1])
+
+[1] https://dev.openwrt.org/browser/trunk/package/devel/valgrind/patches/200-musl_fix.patch?rev=46302
+
+Signed-off-by: Peter Seiderer <ps.report@gmx.net>
+---
+ configure.ac             | 16 ++++++++++++++--
+ coregrind/vg_preloaded.c |  2 +-
+ include/pub_tool_redir.h |  9 ++++++++-
+ 3 files changed, 23 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 8ab7f9b..d1fa071 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1009,6 +1009,13 @@ if test x$VGCONF_PLATFORM_PRI_CAPS = xX86_SOLARIS \
+     GLIBC_VERSION="solaris"
+ fi
+ 
++# 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
++    if $CC -dumpmachine | grep -q musl; then
++        GLIBC_VERSION=musl
++    fi
++fi
+ 
+ AC_MSG_CHECKING([the glibc version])
+ 
+@@ -1064,10 +1071,15 @@ case "${GLIBC_VERSION}" in
+ 	# DEFAULT_SUPP set in host_os switch-case above.
+ 	# No other suppression file is used.
+ 	;;
++     musl)
++	AC_MSG_RESULT(Musl)
++	AC_DEFINE([MUSL_LIBC], 1, [Define to 1 if you're using Musl libc])
++	# no DEFAULT_SUPP file yet for musl libc.
++	;;
+      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_ERROR([Valgrind requires glibc version 2.2 or later, uclibc,])
++	AC_MSG_ERROR([musl libc, Darwin libc, Bionic libc or Solaris libc])
+ 	;;
+ esac
+ 
+diff --git a/coregrind/vg_preloaded.c b/coregrind/vg_preloaded.c
+index 2ea7a7a..7b51aba 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(MUSL_LIBC) \
+       && !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..babcf9a 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(MUSL_LIBC)
++#  define  VG_Z_LIBC_SONAME  libcZdZa              // libc.*
++#else
+ #  define  VG_Z_LIBC_SONAME  libcZdsoZa              // libc.so*
+-
++#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(MUSL_LIBC)
++#  define  VG_Z_LIBPTHREAD_SONAME  libcZdZa              // libc.*
++#else
+ #  define  VG_Z_LIBPTHREAD_SONAME  libpthreadZdsoZd0     // libpthread.so.0
++#endif
+ #elif defined(VGO_darwin)
+ #  define  VG_Z_LIBPTHREAD_SONAME  libSystemZdZaZddylib  // libSystem.*.dylib
+ #elif defined(VGO_solaris)
+-- 
+2.1.4
+
diff --git a/package/valgrind/valgrind.mk b/package/valgrind/valgrind.mk
index 5849b49..46ba13e 100644
--- a/package/valgrind/valgrind.mk
+++ b/package/valgrind/valgrind.mk
@@ -12,6 +12,9 @@ VALGRIND_LICENSE_FILES = COPYING COPYING.DOCS
 VALGRIND_CONF_OPTS = --disable-ubsan
 VALGRIND_INSTALL_STAGING = YES
 
+# patch 0004-Fixes-for-musl-libc.patch touching configure.ac
+VALGRIND_AUTORECONF = YES
+
 ifeq ($(BR2_GCC_ENABLE_TLS),y)
 VALGRIND_CONF_OPTS += --enable-tls
 else
-- 
2.1.4

             reply	other threads:[~2016-02-09 22:53 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-09 22:53 Peter Seiderer [this message]
2016-02-09 23:26 ` [Buildroot] [PATCH v3] valgrind: fix musl compile Arnout Vandecappelle
2016-02-11 20:18   ` Peter Seiderer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1455058401-28034-1-git-send-email-ps.report@gmx.net \
    --to=ps.report@gmx.net \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.