Valgrind: r16296 - in /trunk: configure.ac coregrind/vg_preloaded.c include/pub_tool_redir.h

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Valgrind: r16296 - in /trunk: configure.ac coregrind/vg_preloaded.c include/pub_tool_redir.h

svn-2
Author: petarj
Date: Thu Apr  6 13:39:15 2017
New Revision: 16296

Log:
Add musl libc configure/compile

- 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

Patch by Peter Seiderer <[hidden email]>

It fixes Bug 359202.

Modified:
    trunk/configure.ac
    trunk/coregrind/vg_preloaded.c
    trunk/include/pub_tool_redir.h

Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Thu Apr  6 13:39:15 2017
@@ -990,6 +990,13 @@
     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])
 
@@ -1045,10 +1052,15 @@
  # 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
 

Modified: trunk/coregrind/vg_preloaded.c
==============================================================================
--- trunk/coregrind/vg_preloaded.c (original)
+++ trunk/coregrind/vg_preloaded.c Thu Apr  6 13:39:15 2017
@@ -57,7 +57,7 @@
 void VG_NOTIFY_ON_LOAD(freeres)(Vg_FreeresToRun to_run);
 void VG_NOTIFY_ON_LOAD(freeres)(Vg_FreeresToRun to_run)
 {
-#  if !defined(__UCLIBC__) \
+#  if !defined(__UCLIBC__) && !defined(MUSL_LIBC) \
       && !defined(VGPV_arm_linux_android) \
       && !defined(VGPV_x86_linux_android) \
       && !defined(VGPV_mips32_linux_android) \

Modified: trunk/include/pub_tool_redir.h
==============================================================================
--- trunk/include/pub_tool_redir.h (original)
+++ trunk/include/pub_tool_redir.h Thu Apr  6 13:39:15 2017
@@ -244,8 +244,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
 
@@ -276,7 +279,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)


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Valgrind-developers mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/valgrind-developers