[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