[arch-commits] Commit in valgrind/trunk (4 files)

Allan McRae allan at archlinux.org
Fri Oct 22 03:15:19 UTC 2010


    Date: Thursday, October 21, 2010 @ 23:15:18
  Author: allan
Revision: 96540

upgpkg: valgrind 3.6.0-1
remove unneeded patches

Deleted:
  valgrind/trunk/glibc-2.12.patch
  valgrind/trunk/valgrind-3.5.0-elf-indirect-functions.patch
  valgrind/trunk/valgrind-3.5.0-initialise-isifunc.patch
  valgrind/trunk/valgrind-3.5.0-stat_h.patch

---------------------------------------------+
 glibc-2.12.patch                            |   44 --
 valgrind-3.5.0-elf-indirect-functions.patch |  528 --------------------------
 valgrind-3.5.0-initialise-isifunc.patch     |   12 
 valgrind-3.5.0-stat_h.patch                 |   48 --
 4 files changed, 632 deletions(-)

Deleted: glibc-2.12.patch
===================================================================
--- glibc-2.12.patch	2010-10-22 03:12:46 UTC (rev 96539)
+++ glibc-2.12.patch	2010-10-22 03:15:18 UTC (rev 96540)
@@ -1,44 +0,0 @@
-Index: configure.in
-===================================================================
---- configure.in	(revision 11128)
-+++ configure.in	(revision 11129)
-@@ -684,6 +684,16 @@
- ],
- GLIBC_VERSION="2.10")
- 
-+AC_EGREP_CPP([GLIBC_212], [
-+#include <features.h>
-+#ifdef __GNU_LIBRARY__
-+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 12)
-+  GLIBC_212
-+ #endif
-+#endif
-+],
-+GLIBC_VERSION="2.12")
-+
- AC_EGREP_CPP([AIX5_LIBC], [
- #include <standards.h>
- #if defined(_AIXVERSION_510) || defined(_AIXVERSION_520) || defined(_AIXVERSION_530)
-@@ -776,6 +786,13 @@
- 	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
- 	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
- 	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
-+        ;;
-+     2.12)
-+	AC_MSG_RESULT(2.12 family)
-+	AC_DEFINE([GLIBC_2_12], 1, [Define to 1 if you're using glibc 2.12.x])
-+	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
-+	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
-+	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
- 	;;
-      aix5)
- 	AC_MSG_RESULT(AIX 5.1 or 5.2 or 5.3)
-@@ -790,7 +807,7 @@
- 
-      *)
- 	AC_MSG_RESULT(unsupported version)
--	AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.10])
-+	AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.12])
- 	AC_MSG_ERROR([or AIX 5.1 or 5.2 or 5.3 GLIBC_VERSION])
- 	AC_MSG_ERROR([or Darwin libc])
- 	;;

Deleted: valgrind-3.5.0-elf-indirect-functions.patch
===================================================================
--- valgrind-3.5.0-elf-indirect-functions.patch	2010-10-22 03:12:46 UTC (rev 96539)
+++ valgrind-3.5.0-elf-indirect-functions.patch	2010-10-22 03:15:18 UTC (rev 96540)
@@ -1,528 +0,0 @@
-Index: memcheck/mc_replace_strmem.c
-===================================================================
---- memcheck/mc_replace_strmem.c	(revision 10919)
-+++ memcheck/mc_replace_strmem.c	(revision 10920)
-@@ -116,6 +116,7 @@
- STRRCHR(VG_Z_LIBC_SONAME,   strrchr)
- STRRCHR(VG_Z_LIBC_SONAME,   rindex)
- #if defined(VGO_linux)
-+STRRCHR(VG_Z_LIBC_SONAME,   __GI_strrchr)
- STRRCHR(VG_Z_LD_LINUX_SO_2, rindex)
- #elif defined(VGO_darwin)
- STRRCHR(VG_Z_DYLD,          strrchr)
-@@ -140,6 +141,7 @@
- STRCHR(VG_Z_LIBC_SONAME,          strchr)
- STRCHR(VG_Z_LIBC_SONAME,          index)
- #if defined(VGO_linux)
-+STRCHR(VG_Z_LIBC_SONAME,          __GI_strchr)
- STRCHR(VG_Z_LD_LINUX_SO_2,        strchr)
- STRCHR(VG_Z_LD_LINUX_SO_2,        index)
- STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, strchr)
-@@ -172,8 +174,10 @@
-    }
- 
- STRCAT(VG_Z_LIBC_SONAME, strcat)
-+#if defined(VGO_linux)
-+STRCAT(VG_Z_LIBC_SONAME, __GI_strcat)
-+#endif
- 
--
- #define STRNCAT(soname, fnname) \
-    char* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
-             ( char* dst, const char* src, SizeT n ); \
-@@ -257,6 +261,9 @@
-    }
- 
- STRNLEN(VG_Z_LIBC_SONAME, strnlen)
-+#if defined(VGO_linux)
-+STRNLEN(VG_Z_LIBC_SONAME, __GI_strnlen)
-+#endif
-    
- 
- // Note that this replacement often doesn't get used because gcc inlines
-@@ -274,6 +281,7 @@
- 
- STRLEN(VG_Z_LIBC_SONAME,          strlen)
- #if defined(VGO_linux)
-+STRLEN(VG_Z_LIBC_SONAME,          __GI_strlen)
- STRLEN(VG_Z_LD_LINUX_SO_2,        strlen)
- STRLEN(VG_Z_LD_LINUX_X86_64_SO_2, strlen)
- #endif
-@@ -301,7 +309,9 @@
-    }
- 
- STRCPY(VG_Z_LIBC_SONAME, strcpy)
--#if defined(VGO_darwin)
-+#if defined(VGO_linux)
-+STRCPY(VG_Z_LIBC_SONAME, __GI_strcpy)
-+#elif defined(VGO_darwin)
- STRCPY(VG_Z_DYLD,        strcpy)
- #endif
- 
-@@ -327,7 +337,9 @@
-    }
- 
- STRNCPY(VG_Z_LIBC_SONAME, strncpy)
--#if defined(VGO_darwin)
-+#if defined(VGO_linux)
-+STRNCPY(VG_Z_LIBC_SONAME, __GI_strncpy)
-+#elif defined(VGO_darwin)
- STRNCPY(VG_Z_DYLD,        strncpy)
- #endif
- 
-@@ -384,7 +396,9 @@
-    }
- 
- STRNCMP(VG_Z_LIBC_SONAME, strncmp)
--#if defined(VGO_darwin)
-+#if defined(VGO_linux)
-+STRNCMP(VG_Z_LIBC_SONAME, __GI_strncmp)
-+#elif defined(VGO_darwin)
- STRNCMP(VG_Z_DYLD,        strncmp)
- #endif
- 
-@@ -411,6 +425,7 @@
- 
- STRCMP(VG_Z_LIBC_SONAME,          strcmp)
- #if defined(VGO_linux)
-+STRCMP(VG_Z_LIBC_SONAME,          __GI_strcmp)
- STRCMP(VG_Z_LD_LINUX_X86_64_SO_2, strcmp)
- STRCMP(VG_Z_LD64_SO_1,            strcmp)
- #endif
-@@ -557,6 +572,7 @@
- 
- STPCPY(VG_Z_LIBC_SONAME,          stpcpy)
- #if defined(VGO_linux)
-+STPCPY(VG_Z_LIBC_SONAME,          __GI_stpcpy)
- STPCPY(VG_Z_LD_LINUX_SO_2,        stpcpy)
- STPCPY(VG_Z_LD_LINUX_X86_64_SO_2, stpcpy)
- #elif defined(VGO_darwin)
-@@ -709,8 +725,10 @@
-    }
- 
- GLIBC232_RAWMEMCHR(VG_Z_LIBC_SONAME, rawmemchr)
-+#if defined (VGO_linux)
-+GLIBC232_RAWMEMCHR(VG_Z_LIBC_SONAME, __GI___rawmemchr)
-+#endif
- 
--
- /* glibc variant of strcpy that checks the dest is big enough.
-    Copied from glibc-2.5/debug/test-strcpy_chk.c. */
- #define GLIBC25___STRCPY_CHK(soname,fnname) \
-Index: include/pub_tool_debuginfo.h
-===================================================================
---- include/pub_tool_debuginfo.h	(revision 10919)
-+++ include/pub_tool_debuginfo.h	(revision 10920)
-@@ -212,7 +212,8 @@
-                                    /*OUT*/Addr*   tocptr,
-                                    /*OUT*/UInt*   size,
-                                    /*OUT*/HChar** name,
--                                   /*OUT*/Bool*   isText );
-+                                   /*OUT*/Bool*   isText,
-+                                   /*OUT*/Bool*   isIFunc );
- 
- /* A simple enumeration to describe the 'kind' of various kinds of
-    segments that arise from the mapping of object files. */
-Index: coregrind/vg_preloaded.c
-===================================================================
---- coregrind/vg_preloaded.c	(revision 10919)
-+++ coregrind/vg_preloaded.c	(revision 10920)
-@@ -47,12 +47,12 @@
- #include "pub_core_debuginfo.h"  // Needed for pub_core_redir.h
- #include "pub_core_redir.h"      // For VG_NOTIFY_ON_LOAD
- 
-+#if defined(VGO_linux) || defined(VGO_aix5)
-+
- /* ---------------------------------------------------------------------
-    Hook for running __libc_freeres once the program exits.
-    ------------------------------------------------------------------ */
- 
--#if defined(VGO_linux) || defined(VGO_aix5)
--
- void VG_NOTIFY_ON_LOAD(freeres)( void );
- void VG_NOTIFY_ON_LOAD(freeres)( void )
- {
-@@ -68,6 +68,31 @@
-    *(int *)0 = 'x';
- }
- 
-+/* ---------------------------------------------------------------------
-+   Wrapper for indirect functions which need to be redirected.
-+   ------------------------------------------------------------------ */
-+
-+void * VG_NOTIFY_ON_LOAD(ifunc_wrapper) (void);
-+void * VG_NOTIFY_ON_LOAD(ifunc_wrapper) (void)
-+{
-+    OrigFn fn;
-+    Addr result = 0;
-+    int res;
-+
-+    /* Call the original indirect function and get it's result */
-+    VALGRIND_GET_ORIG_FN(fn);
-+    CALL_FN_W_v(result, fn);
-+
-+    /* Ask the valgrind core running on the real CPU (as opposed to this
-+       code which runs on the emulated CPU) to update the redirection that
-+       led to this function. This client request eventually gives control to
-+       the function VG_(redir_add_ifunc_target) in m_redir.c  */
-+    VALGRIND_DO_CLIENT_REQUEST(res, 0,
-+                               VG_USERREQ__ADD_IFUNC_TARGET,
-+                               fn.nraddr, result, 0, 0, 0);
-+    return result;
-+}
-+
- #elif defined(VGO_darwin)
- 
- /* ---------------------------------------------------------------------
-Index: coregrind/pub_core_clreq.h
-===================================================================
---- coregrind/pub_core_clreq.h	(revision 10919)
-+++ coregrind/pub_core_clreq.h	(revision 10920)
-@@ -50,6 +50,9 @@
-       /* Internal equivalent of VALGRIND_PRINTF . */
-       VG_USERREQ__INTERNAL_PRINTF   = 0x3103,
- 
-+      /* Add a target for an indirect function redirection. */
-+      VG_USERREQ__ADD_IFUNC_TARGET  = 0x3104,
-+
-    } Vg_InternalClientRequest;
- 
- // Function for printing from code within Valgrind, but which runs on the
-Index: coregrind/m_debuginfo/debuginfo.c
-===================================================================
---- coregrind/m_debuginfo/debuginfo.c	(revision 10919)
-+++ coregrind/m_debuginfo/debuginfo.c	(revision 10920)
-@@ -3435,14 +3435,16 @@
-                                   /*OUT*/Addr*   tocptr,
-                                   /*OUT*/UInt*   size,
-                                   /*OUT*/HChar** name,
--                                  /*OUT*/Bool*   isText )
-+                                  /*OUT*/Bool*   isText,
-+                                  /*OUT*/Bool*   isIFunc )
- {
-    vg_assert(idx >= 0 && idx < si->symtab_used);
--   if (avma)   *avma   = si->symtab[idx].addr;
--   if (tocptr) *tocptr = si->symtab[idx].tocptr;
--   if (size)   *size   = si->symtab[idx].size;
--   if (name)   *name   = (HChar*)si->symtab[idx].name;
--   if (isText) *isText = si->symtab[idx].isText;
-+   if (avma)    *avma    = si->symtab[idx].addr;
-+   if (tocptr)  *tocptr  = si->symtab[idx].tocptr;
-+   if (size)    *size    = si->symtab[idx].size;
-+   if (name)    *name    = (HChar*)si->symtab[idx].name;
-+   if (isText)  *isText  = si->symtab[idx].isText;
-+   if (isIFunc) *isIFunc = si->symtab[idx].isIFunc;
- }
- 
- 
-Index: coregrind/m_debuginfo/readelf.c
-===================================================================
---- coregrind/m_debuginfo/readelf.c	(revision 10919)
-+++ coregrind/m_debuginfo/readelf.c	(revision 10920)
-@@ -214,7 +214,8 @@
-                                   used on entry */
-         Bool*  from_opd_out,   /* ppc64-linux only: did we deref an
-                                   .opd entry? */
--        Bool*  is_text_out     /* is this a text symbol? */
-+        Bool*  is_text_out,    /* is this a text symbol? */
-+        Bool*  is_ifunc        /* is this a  STT_GNU_IFUNC function ?*/
-      )
- {
-    Bool plausible;
-@@ -232,6 +233,7 @@
-    *sym_size_out   = (Int)sym->st_size;
-    *sym_tocptr_out = 0; /* unknown/inapplicable */
-    *from_opd_out   = False;
-+   *is_ifunc       = False;
- 
-    /* Figure out if we're interested in the symbol.  Firstly, is it of
-       the right flavour?  */
-@@ -243,6 +245,9 @@
-         &&
-         (ELFXX_ST_TYPE(sym->st_info) == STT_FUNC 
-          || ELFXX_ST_TYPE(sym->st_info) == STT_OBJECT
-+#ifdef STT_GNU_IFUNC
-+         || ELFXX_ST_TYPE(sym->st_info) == STT_GNU_IFUNC
-+#endif
-         );
- 
-    /* Work out the svma and bias for each section as it will appear in
-@@ -325,6 +330,14 @@
-       *sym_avma_out += text_bias;
-    }
- 
-+#  ifdef STT_GNU_IFUNC
-+   /* Check for indirect functions. */
-+   if (*is_text_out
-+       && ELFXX_ST_TYPE(sym->st_info) == STT_GNU_IFUNC) {
-+       *is_ifunc = True;
-+   }
-+#  endif
-+
- #  if defined(VGP_ppc64_linux)
-    /* Allow STT_NOTYPE in the very special case where we're running on
-       ppc64-linux and the symbol is one which the .opd-chasing hack
-@@ -570,7 +583,7 @@
-    Char      *sym_name, *sym_name_really;
-    Int        sym_size;
-    Addr       sym_tocptr;
--   Bool       from_opd, is_text;
-+   Bool       from_opd, is_text, is_ifunc;
-    DiSym      risym;
-    ElfXX_Sym *sym;
- 
-@@ -602,13 +615,14 @@
-                               &sym_avma_really,
-                               &sym_size,
-                               &sym_tocptr,
--                              &from_opd, &is_text)) {
-+                              &from_opd, &is_text, &is_ifunc)) {
- 
--         risym.addr   = sym_avma_really;
--         risym.size   = sym_size;
--         risym.name   = ML_(addStr) ( di, sym_name_really, -1 );
--         risym.tocptr = sym_tocptr;
--         risym.isText = is_text;
-+         risym.addr    = sym_avma_really;
-+         risym.size    = sym_size;
-+         risym.name    = ML_(addStr) ( di, sym_name_really, -1 );
-+         risym.tocptr  = sym_tocptr;
-+         risym.isText  = is_text;
-+         risym.isIFunc = is_ifunc;
-          vg_assert(risym.name != NULL);
-          vg_assert(risym.tocptr == 0); /* has no role except on ppc64-linux */
-          ML_(addSym) ( di, &risym );
-@@ -646,6 +660,7 @@
-       Int        size;
-       Bool       from_opd;
-       Bool       is_text;
-+      Bool       is_ifunc;
-    }
-    TempSym;
- 
-@@ -671,7 +686,7 @@
-    Char       *sym_name, *sym_name_really;
-    Int         sym_size;
-    Addr        sym_tocptr;
--   Bool        from_opd, modify_size, modify_tocptr, is_text;
-+   Bool        from_opd, modify_size, modify_tocptr, is_text, is_ifunc;
-    DiSym       risym;
-    ElfXX_Sym  *sym;
-    OSet       *oset;
-@@ -713,7 +728,7 @@
-                               &sym_avma_really,
-                               &sym_size,
-                               &sym_tocptr,
--                              &from_opd, &is_text)) {
-+                              &from_opd, &is_text, &is_ifunc)) {
- 
-          /* Check if we've seen this (name,addr) key before. */
-          key.addr = sym_avma_really;
-@@ -785,6 +800,7 @@
-             elem->size     = sym_size;
-             elem->from_opd = from_opd;
-             elem->is_text  = is_text;
-+            elem->is_ifunc = is_ifunc;
-             VG_(OSetGen_Insert)(oset, elem);
-             if (di->trace_symtab) {
-                VG_(printf)("   to-oset [%4ld]:          "
-@@ -808,11 +824,12 @@
-    VG_(OSetGen_ResetIter)( oset );
- 
-    while ( (elem = VG_(OSetGen_Next)(oset)) ) {
--      risym.addr   = elem->key.addr;
--      risym.size   = elem->size;
--      risym.name   = ML_(addStr) ( di, elem->key.name, -1 );
--      risym.tocptr = elem->tocptr;
--      risym.isText = elem->is_text;
-+      risym.addr    = elem->key.addr;
-+      risym.size    = elem->size;
-+      risym.name    = ML_(addStr) ( di, elem->key.name, -1 );
-+      risym.tocptr  = elem->tocptr;
-+      risym.isText  = elem->is_text;
-+      risym.isIFunc = elem->is_ifunc;
-       vg_assert(risym.name != NULL);
- 
-       ML_(addSym) ( di, &risym );
-Index: coregrind/m_debuginfo/priv_storage.h
-===================================================================
---- coregrind/m_debuginfo/priv_storage.h	(revision 10919)
-+++ coregrind/m_debuginfo/priv_storage.h	(revision 10920)
-@@ -48,15 +48,16 @@
- /* A structure to hold an ELF/XCOFF symbol (very crudely). */
- typedef 
-    struct { 
--      Addr  addr;   /* lowest address of entity */
--      Addr  tocptr; /* ppc64-linux only: value that R2 should have */
--      UChar *name;  /* name */
-+      Addr  addr;    /* lowest address of entity */
-+      Addr  tocptr;  /* ppc64-linux only: value that R2 should have */
-+      UChar *name;   /* name */
-       // XXX: this could be shrunk (on 32-bit platforms) by using 31 bits for
-       // the size and 1 bit for the isText.  If you do this, make sure that
-       // all assignments to isText use 0 or 1 (or True or False), and that a
-       // positive number larger than 1 is never used to represent True.
--      UInt  size;   /* size in bytes */
-+      UInt  size;    /* size in bytes */
-       Bool  isText;
-+      Bool  isIFunc; /* symbol is an indirect function? */
-    }
-    DiSym;
- 
-Index: coregrind/m_redir.c
-===================================================================
---- coregrind/m_redir.c	(revision 10919)
-+++ coregrind/m_redir.c	(revision 10920)
-@@ -268,12 +268,15 @@
-       TopSpec* parent_spec; /* the TopSpec which supplied the Spec */
-       TopSpec* parent_sym;  /* the TopSpec which supplied the symbol */
-       Bool     isWrap;      /* wrap or replacement? */
-+      Bool     isIFunc;     /* indirect function? */
-    }
-    Active;
- 
- /* The active set is a fast lookup table */
- static OSet* activeSet = NULL;
- 
-+/* Wrapper routine for indirect functions */
-+static Addr iFuncWrapper;
- 
- /*------------------------------------------------------------*/
- /*--- FWDses                                               ---*/
-@@ -350,8 +353,8 @@
- 
-    nsyms = VG_(DebugInfo_syms_howmany)( newsi );
-    for (i = 0; i < nsyms; i++) {
--      VG_(DebugInfo_syms_getidx)( newsi, i, &sym_addr, &sym_toc, 
--                                            NULL, &sym_name, &isText );
-+      VG_(DebugInfo_syms_getidx)( newsi, i, &sym_addr, &sym_toc,
-+                                  NULL, &sym_name, &isText, NULL );
-       ok = VG_(maybe_Z_demangle)( sym_name, demangled_sopatt, N_DEMANGLED,
-                                   demangled_fnpatt, N_DEMANGLED, &isWrap );
-       /* ignore data symbols */
-@@ -388,8 +391,8 @@
- 
-    if (check_ppcTOCs) {
-       for (i = 0; i < nsyms; i++) {
--         VG_(DebugInfo_syms_getidx)( newsi, i, &sym_addr, &sym_toc, 
--                                               NULL, &sym_name, &isText );
-+         VG_(DebugInfo_syms_getidx)( newsi, i, &sym_addr, &sym_toc,
-+                                     NULL, &sym_name, &isText, NULL );
-          ok = isText
-               && VG_(maybe_Z_demangle)( 
-                     sym_name, demangled_sopatt, N_DEMANGLED,
-@@ -470,7 +473,31 @@
- 
- #undef N_DEMANGLED
- 
-+/* Add a new target for an indirect function. Adds a new redirection
-+   for the indirection function with address old_from that redirects
-+   the ordinary function with address new_from to the target address
-+   of the original redirection. */
- 
-+void VG_(redir_add_ifunc_target)( Addr old_from, Addr new_from )
-+{
-+    Active *old, new;
-+
-+    old = VG_(OSetGen_Lookup)(activeSet, &old_from);
-+    vg_assert(old);
-+    vg_assert(old->isIFunc);
-+
-+    new = *old;
-+    new.from_addr = new_from;
-+    new.isIFunc = False;
-+    maybe_add_active (new);
-+
-+    if (VG_(clo_trace_redir)) {
-+       VG_(message)( Vg_DebugMsg,
-+                     "Adding redirect for indirect function 0x%llx from 0x%llx -> 0x%llx\n",
-+                     (ULong)old_from, (ULong)new_from, (ULong)new.to_addr );
-+    }
-+}
-+
- /* Do one element of the basic cross product: add to the active set,
-    all matches resulting from comparing all the given specs against
-    all the symbols in the given seginfo.  If a conflicting binding
-@@ -487,7 +514,7 @@
-      )
- {
-    Spec*  sp;
--   Bool   anyMark, isText;
-+   Bool   anyMark, isText, isIFunc;
-    Active act;
-    Int    nsyms, i;
-    Addr   sym_addr;
-@@ -513,7 +540,7 @@
-    nsyms = VG_(DebugInfo_syms_howmany)( di );
-    for (i = 0; i < nsyms; i++) {
-       VG_(DebugInfo_syms_getidx)( di, i, &sym_addr, NULL, NULL,
--                                         &sym_name, &isText );
-+                                  &sym_name, &isText, &isIFunc );
- 
-       /* ignore data symbols */
-       if (!isText)
-@@ -539,6 +566,7 @@
-             act.parent_spec = parent_spec;
-             act.parent_sym  = parent_sym;
-             act.isWrap      = sp->isWrap;
-+            act.isIFunc     = isIFunc;
-             sp->done = True;
-             maybe_add_active( act );
-          }
-@@ -780,7 +808,9 @@
- 
-    vg_assert(r->to_addr != 0);
-    if (isWrap)
--      *isWrap = r->isWrap;
-+      *isWrap = r->isWrap || r->isIFunc;
-+   if (r->isIFunc)
-+      return iFuncWrapper;
-    return r->to_addr;
- }
- 
-@@ -1096,6 +1126,8 @@
- 
-    if (VG_(strcmp)(symbol, VG_STRINGIFY(VG_NOTIFY_ON_LOAD(freeres))) == 0)
-       VG_(client___libc_freeres_wrapper) = addr;
-+   else if (VG_(strcmp)(symbol, VG_STRINGIFY(VG_NOTIFY_ON_LOAD(ifunc_wrapper))) == 0)
-+      iFuncWrapper = addr;
-    else
-       vg_assert2(0, "unrecognised load notification function: %s", symbol);
- }
-Index: coregrind/pub_core_redir.h
-===================================================================
---- coregrind/pub_core_redir.h	(revision 10919)
-+++ coregrind/pub_core_redir.h	(revision 10920)
-@@ -58,6 +58,8 @@
- /* Initialise the module, and load initial "hardwired" redirects. */
- extern void VG_(redir_initialise)( void );
- 
-+/* Notify the module of a new target for an indirect function. */
-+extern void VG_(redir_add_ifunc_target)( Addr old_from, Addr new_from );
- 
- //--------------------------------------------------------------------
- // Queries
-Index: coregrind/m_scheduler/scheduler.c
-===================================================================
---- coregrind/m_scheduler/scheduler.c	(revision 10919)
-+++ coregrind/m_scheduler/scheduler.c	(revision 10920)
-@@ -89,6 +89,7 @@
- #include "pub_core_debuginfo.h"     // VG_(di_notify_pdb_debuginfo)
- #include "priv_sema.h"
- #include "pub_core_scheduler.h"     // self
-+#include "pub_core_redir.h"
- 
- 
- /* ---------------------------------------------------------------------
-@@ -1399,6 +1400,11 @@
-             SET_CLREQ_RETVAL( tid, count );
-          break; }
- 
-+      case VG_USERREQ__ADD_IFUNC_TARGET: {
-+         VG_(redir_add_ifunc_target)( arg[1], arg[2] );
-+         SET_CLREQ_RETVAL( tid, 0);
-+         break; }
-+
-       case VG_USERREQ__PRINTF_BACKTRACE: {
-          Int count =
-             VG_(vmessage)( Vg_ClientMsg, (char *)arg[1], (void*)arg[2] );

Deleted: valgrind-3.5.0-initialise-isifunc.patch
===================================================================
--- valgrind-3.5.0-initialise-isifunc.patch	2010-10-22 03:12:46 UTC (rev 96539)
+++ valgrind-3.5.0-initialise-isifunc.patch	2010-10-22 03:15:18 UTC (rev 96540)
@@ -1,12 +0,0 @@
-Index: coregrind/m_redir.c
-===================================================================
---- coregrind/m_redir.c	(revision 10922)
-+++ coregrind/m_redir.c	(revision 10923)
-@@ -830,6 +830,7 @@
-    act.parent_spec = NULL;
-    act.parent_sym  = NULL;
-    act.isWrap      = False;
-+   act.isIFunc     = False;
-    maybe_add_active( act );
- }
- 

Deleted: valgrind-3.5.0-stat_h.patch
===================================================================
--- valgrind-3.5.0-stat_h.patch	2010-10-22 03:12:46 UTC (rev 96539)
+++ valgrind-3.5.0-stat_h.patch	2010-10-22 03:15:18 UTC (rev 96540)
@@ -1,48 +0,0 @@
---- valgrind/include/vki/vki-amd64-linux.h.jj	2009-08-19 09:37:07.000000000 -0400
-+++ valgrind/include/vki/vki-amd64-linux.h	2010-01-20 04:41:52.662552000 -0500
-@@ -310,6 +310,9 @@ struct vki_stat {
- 	long		st_blksize;
- 	long		st_blocks;	/* Number 512-byte blocks allocated. */
- 
-+#undef st_atime
-+#undef st_mtime
-+#undef st_ctime
- 	unsigned long	st_atime;
- 	unsigned long 	st_atime_nsec; 
- 	unsigned long	st_mtime;
---- valgrind/include/vki/vki-x86-linux.h.jj	2009-08-19 09:37:07.000000000 -0400
-+++ valgrind/include/vki/vki-x86-linux.h	2010-01-20 04:42:19.649995000 -0500
-@@ -348,6 +348,9 @@ struct vki_stat {
- 	unsigned long  st_size;
- 	unsigned long  st_blksize;
- 	unsigned long  st_blocks;
-+#undef st_atime
-+#undef st_mtime
-+#undef st_ctime
- 	unsigned long  st_atime;
- 	unsigned long  st_atime_nsec;
- 	unsigned long  st_mtime;
---- valgrind/include/vki/vki-ppc32-linux.h.jj	2009-08-19 09:37:07.000000000 -0400
-+++ valgrind/include/vki/vki-ppc32-linux.h	2010-01-20 04:42:44.861651000 -0500
-@@ -392,6 +392,9 @@ struct vki_stat {
-    long			st_size;
-    unsigned long	st_blksize;
-    unsigned long	st_blocks;
-+#undef st_atime
-+#undef st_mtime
-+#undef st_ctime
-    unsigned long	st_atime;
-    unsigned long	st_atime_nsec;
-    unsigned long	st_mtime;
---- valgrind/include/vki/vki-ppc64-linux.h.jj	2009-08-19 09:37:07.000000000 -0400
-+++ valgrind/include/vki/vki-ppc64-linux.h	2010-01-20 04:43:05.579922000 -0500
-@@ -428,6 +428,9 @@ struct vki_stat {
-   long            st_size;
-   unsigned long   st_blksize;
-   unsigned long   st_blocks;
-+#undef st_atime
-+#undef st_mtime
-+#undef st_ctime
-   unsigned long   st_atime;
-   unsigned long   st_atime_nsec;
-   unsigned long   st_mtime;




More information about the arch-commits mailing list