[arch-commits] Commit in valgrind/trunk (PKGBUILD glibc-2.13-strcasecmp.patch)

Allan McRae allan at archlinux.org
Fri Jan 21 06:31:27 UTC 2011


    Date: Friday, January 21, 2011 @ 01:31:27
  Author: allan
Revision: 107086

upgpkg: valgrind 3.6.0-3
fix strcasecmp issues

Added:
  valgrind/trunk/glibc-2.13-strcasecmp.patch
Modified:
  valgrind/trunk/PKGBUILD

-----------------------------+
 PKGBUILD                    |   11 ++-
 glibc-2.13-strcasecmp.patch |  151 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 159 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2011-01-21 06:17:47 UTC (rev 107085)
+++ PKGBUILD	2011-01-21 06:31:27 UTC (rev 107086)
@@ -4,7 +4,7 @@
 
 pkgname=valgrind
 pkgver=3.6.0
-pkgrel=2
+pkgrel=3
 pkgdesc="A tool to help find memory-management problems in programs"
 arch=('i686' 'x86_64')
 license=('GPL')
@@ -14,10 +14,12 @@
 options=('!emptydirs')
 source=(http://valgrind.org/downloads/${pkgname}-${pkgver}.tar.bz2
         glibc-patch-version.patch
-       	glibc-2.13.patch)    
+       	glibc-2.13.patch
+       	glibc-2.13-strcasecmp.patch)    
 md5sums=('b289c5f4ab8e39741602445f1dd09b34'
          'b657f0ebdde3d9aefc9fd16f9e653702'
-         '3706469d3b712f420e161a5ba1143d02')
+         '3706469d3b712f420e161a5ba1143d02'
+         'd593be202296116653c792556ab6db73')
 
 build() {
   cd ${srcdir}/${pkgname}-${pkgver}
@@ -31,6 +33,9 @@
   # glibc-2.13 "compatibility"
   patch -Np1 -i ${srcdir}/glibc-2.13.patch
 
+  # http://bugs.kde.org/show_bug.cgi?id=256600
+  patch -Np0 -i ${srcdir}/glibc-2.13-strcasecmp.patch
+
   if [ "${CARCH}" = "x86_64" ]; then
     ./configure --prefix=/usr --mandir=/usr/share/man --enable-only64bit
   else

Added: glibc-2.13-strcasecmp.patch
===================================================================
--- glibc-2.13-strcasecmp.patch	                        (rev 0)
+++ glibc-2.13-strcasecmp.patch	2011-01-21 06:31:27 UTC (rev 107086)
@@ -0,0 +1,151 @@
+Index: memcheck/mc_replace_strmem.c
+===================================================================
+--- memcheck/mc_replace_strmem.c	(revision 11477)
++++ memcheck/mc_replace_strmem.c	(revision 11478)
+@@ -35,10 +35,13 @@
+ #include "pub_tool_redir.h"
+ #include "pub_tool_tooliface.h"
+ #include "valgrind.h"
++#include "config.h"
+ 
+ #include "mc_include.h"
+ #include "memcheck.h"
+ 
++#include <ctype.h>
++
+ /* ---------------------------------------------------------------------
+    We have our own versions of these functions for two reasons:
+    (a) it allows us to do overlap checking
+@@ -403,6 +406,120 @@
+ #endif
+ 
+ 
++#define STRCASECMP(soname, fnname) \
++   int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
++          ( const char* s1, const char* s2 ); \
++   int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
++          ( const char* s1, const char* s2 ) \
++   { \
++      register unsigned char c1; \
++      register unsigned char c2; \
++      while (True) { \
++         c1 = tolower(*(unsigned char *)s1); \
++         c2 = tolower(*(unsigned char *)s2); \
++         if (c1 != c2) break; \
++         if (c1 == 0) break; \
++         s1++; s2++; \
++      } \
++      if ((unsigned char)c1 < (unsigned char)c2) return -1; \
++      if ((unsigned char)c1 > (unsigned char)c2) return 1; \
++      return 0; \
++   }
++
++STRCASECMP(VG_Z_LIBC_SONAME, strcasecmp)
++#if defined(VGO_linux)
++STRCASECMP(VG_Z_LIBC_SONAME, __GI_strcasecmp)
++#endif
++
++
++#define STRNCASECMP(soname, fnname) \
++   int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
++          ( const char* s1, const char* s2, SizeT nmax ); \
++   int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
++          ( const char* s1, const char* s2, SizeT nmax ) \
++   { \
++      SizeT n = 0; \
++      while (True) { \
++         if (n >= nmax) return 0; \
++         if (*s1 == 0 && *s2 == 0) return 0; \
++         if (*s1 == 0) return -1; \
++         if (*s2 == 0) return 1; \
++         \
++         if (tolower(*(unsigned char*)s1) < tolower(*(unsigned char*)s2)) return -1; \
++         if (tolower(*(unsigned char*)s1) > tolower(*(unsigned char*)s2)) return 1; \
++         \
++         s1++; s2++; n++; \
++      } \
++   }
++
++STRNCASECMP(VG_Z_LIBC_SONAME, strncasecmp)
++#if defined(VGO_linux)
++STRNCASECMP(VG_Z_LIBC_SONAME, __GI_strncasecmp)
++#elif defined(VGO_darwin)
++STRNCASECMP(VG_Z_DYLD,        strncasecmp)
++#endif
++
++
++#ifdef HAVE_TOLOWER_L
++
++
++#define STRCASECMP_L(soname, fnname) \
++   int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
++          ( const char* s1, const char* s2, locale_t locale ); \
++   int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
++          ( const char* s1, const char* s2, locale_t locale ) \
++   { \
++      register unsigned char c1; \
++      register unsigned char c2; \
++      while (True) { \
++         c1 = tolower_l(*(unsigned char *)s1, locale); \
++         c2 = tolower_l(*(unsigned char *)s2, locale); \
++         if (c1 != c2) break; \
++         if (c1 == 0) break; \
++         s1++; s2++; \
++      } \
++      if ((unsigned char)c1 < (unsigned char)c2) return -1; \
++      if ((unsigned char)c1 > (unsigned char)c2) return 1; \
++      return 0; \
++   }
++
++STRCASECMP_L(VG_Z_LIBC_SONAME, strcasecmp_l)
++#if defined(VGO_linux)
++STRCASECMP_L(VG_Z_LIBC_SONAME, __GI_strcasecmp_l)
++#endif
++
++
++#define STRNCASECMP_L(soname, fnname) \
++   int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
++          ( const char* s1, const char* s2, SizeT nmax, locale_t locale ); \
++   int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
++          ( const char* s1, const char* s2, SizeT nmax, locale_t locale ) \
++   { \
++      SizeT n = 0; \
++      while (True) { \
++         if (n >= nmax) return 0; \
++         if (*s1 == 0 && *s2 == 0) return 0; \
++         if (*s1 == 0) return -1; \
++         if (*s2 == 0) return 1; \
++         \
++         if (tolower_l(*(unsigned char*)s1, locale) < tolower_l(*(unsigned char*)s2, locale)) return -1; \
++         if (tolower_l(*(unsigned char*)s1, locale) > tolower_l(*(unsigned char*)s2, locale)) return 1; \
++         \
++         s1++; s2++; n++; \
++      } \
++   }
++
++STRNCASECMP_L(VG_Z_LIBC_SONAME, strncasecmp_l)
++#if defined(VGO_linux)
++STRNCASECMP_L(VG_Z_LIBC_SONAME, __GI_strncasecmp_l)
++#elif defined(VGO_darwin)
++STRNCASECMP_L(VG_Z_DYLD,        strncasecmp_l)
++#endif
++
++
++#endif
++
++
+ #define STRCMP(soname, fnname) \
+    int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+           ( const char* s1, const char* s2 ); \
+Index: configure.in
+===================================================================
+--- configure.in	(revision 11477)
++++ configure.in	(revision 11478)
+@@ -1549,6 +1549,7 @@
+         strstr       \
+         syscall      \
+         timerfd      \
++        tolower_l    \
+         utimensat    \
+         ])
+ 




More information about the arch-commits mailing list