RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
  Module: rpm                              Date:   02-Jan-2011 18:21:17
  Branch: HEAD                             Handle: 2011010217211600

  Modified files:
    rpm                     CHANGES debug.h

  Log:
    - valgrind: empty macros for *everything* to see the namespace.

  Summary:
    Revision    Changes     Path
    1.3539      +1  -0      rpm/CHANGES
    2.9         +121 -9     rpm/debug.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.3538 -r1.3539 CHANGES
  --- rpm/CHANGES       1 Jan 2011 14:39:17 -0000       1.3538
  +++ rpm/CHANGES       2 Jan 2011 17:21:16 -0000       1.3539
  @@ -1,4 +1,5 @@
   5.4.0 -> 5.4.1:
  +    - jbj: valgrind: empty macros for *everything* to see the namespace.
       - jbj: mongo: stub-in mongo:// and mongodb:// URI's.
       - jbj: verify: overlap header-only signature/digest with file digests.
       - jbj: prelink: thread-safe helper instantiation for valgrind drd.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/debug.h
  ============================================================================
  $ cvs diff -u -r2.8 -r2.9 debug.h
  --- rpm/debug.h       1 Jan 2011 13:54:32 -0000       2.8
  +++ rpm/debug.h       2 Jan 2011 17:21:16 -0000       2.9
  @@ -5,7 +5,7 @@
   #define      H_DEBUG
   
   #ifdef HAVE_ASSERT_H
  -#undef       assert  /* <beecrypt/api.h> tries to retrofit an assert(x) 
macro */
  +#undef       assert  /* XXX <beecrypt/api.h> tries to retrofit an assert(x) 
macro */
   #include <assert.h>
   #endif
   
  @@ -24,6 +24,13 @@
   #include <dmalloc.h>
   #endif
   
  +/* If using GCC, wrap __builtin_expect() (reduces overhead in lookup3.c) */
  +#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__)
  +#  define UNLIKELY(value) __builtin_expect((value), 0)
  +#else
  +#  define UNLIKELY(value) (value)
  +#endif
  +
   #if defined(WITH_VALGRIND) && defined(HAVE_VALGRIND_VALGRIND_H)
   
   #include <valgrind/valgrind.h>
  @@ -32,8 +39,45 @@
   #include <valgrind/helgrind.h>
   #include <valgrind/drd.h>
   
  +static inline void * DRD_xmalloc(size_t nb)
  +{
  +    void * ptr = xmalloc(nb);
  +ANNOTATE_BENIGN_RACE_SIZED(ptr, nb, __FUNCTION__);   /* XXX tsan sanity. */
  +    return ptr;
  +}
  +
  +static inline void * DRD_xcalloc(size_t nmemb, size_t size)
  +{
  +    size_t nb = nmemb * size;
  +    void * ptr = DRD_xmalloc(nb);
  +    memset(ptr, 0, nb);
  +    return ptr;
  +}
  +
  +static inline void * DRD_xrealloc(void * ptr, size_t size)
  +{
  +    ptr = xrealloc(ptr, size);
  +ANNOTATE_BENIGN_RACE_SIZED(ptr, size, __FUNCTION__); /* XXX tsan sanity. */
  +    return ptr;
  +}
  +
  +static inline char * DRD_xstrdup(const char * s)
  +{
  +    size_t nb = strlen(s) + 1;
  +    char * t = DRD_xmalloc(nb);
  +    return strcpy(t, s);
  +}
  +
   #else
   
  +/* XXX list most everything just to see the valgrind namespace. */
  +
  +#define RUNNING_ON_VALGRIND  (0)
  +#define VALGRIND_DISCARD_TRANSLATIONS(_qzz_addr,_qzz_len)
  +
  +#define VALGRIND_MALLOCLIKE_BLOCK(addr, sizeB, rzB, is_zeroed)
  +#define VALGRIND_FREELIKE_BLOCK(addr, rzB)
  +
   #define      VALGRIND_CREATE_MEMPOOL(pool, rzB, is_zeroed)
   #define      VALGRIND_DESTROY_MEMPOOL(pool)
   #define      VALGRIND_MEMPOOL_ALLOC(pool, addr, size)
  @@ -43,14 +87,21 @@
   #define      VALGRIND_MEMPOOL_CHANGE(pool, addrA, addrB, size)
   #define      VALGRIND_MEMPOOL_EXISTS(pool)   (0)
   
  -#define      VALGRIND_HG_CLEAN_MEMORY(_qzz_start, _qzz_len)
  -#define      ANNOTATE_HAPPENS_BEFORE(_obj)
  -#define      ANNOTATE_HAPPENS_AFTER(_obj)
  -#define      ANNOTATE_NEW_MEMORY(_addr, _size)
  -#define      ANNOTATE_RWLOCK_CREATE(_lock)
  -#define      ANNOTATE_RWLOCK_DESTROY(_lock)
  -#define      ANNOTATE_RWLOCK_ACQUIRED(_lock)
  -#define      ANNOTATE_RWLOCK_RELEASED(_lock)
  +#define VALGRIND_MAKE_MEM_NOACCESS(_qzz_addr,_qzz_len)
  +#define VALGRIND_MAKE_MEM_UNDEFINED(_qzz_addr,_qzz_len)
  +#define VALGRIND_MAKE_MEM_DEFINED(_qzz_addr,_qzz_len)
  +#define VALGRIND_MAKE_MEM_DEFINED_IF_ADDRESSABLE(_qzz_addr,_qzz_len)
  +#define VALGRIND_CREATE_BLOCK(_qzz_addr,_qzz_len, _qzz_desc)
  +#define VALGRIND_DISCARD(_qzz_blkindex)
  +#define VALGRIND_CHECK_MEM_IS_ADDRESSABLE(_qzz_addr,_qzz_len)
  +#define VALGRIND_CHECK_MEM_IS_DEFINED(_qzz_addr,_qzz_len)
  +#define VALGRIND_CHECK_VALUE_IS_DEFINED(__lvalue)
  +#define VALGRIND_DO_LEAK_CHECK
  +#define VALGRIND_DO_QUICK_LEAK_CHECK
  +#define VALGRIND_COUNT_LEAKS(leaked, dubious, reachable, suppressed)
  +#define VALGRIND_COUNT_LEAK_BLOCKS(leaked, dubious, reachable, suppressed)
  +#define VALGRIND_GET_VBITS(zza,zzvbits,zznbytes)
  +#define VALGRIND_SET_VBITS(zza,zzvbits,zznbytes)
   
   #define      CALLGRIND_DUMP_STATS
   #define      CALLGRIND_DUMP_STATS_AT(pos_str)
  @@ -59,6 +110,67 @@
   #define      CALLGRIND_START_INSTRUMENTATION
   #define      CALLGRIND_STOP_INSTRUMENTATION
   
  +#define VALGRIND_HG_MUTEX_INIT_POST(_mutex, _mbRec)
  +#define VALGRIND_HG_MUTEX_LOCK_PRE(_mutex, _isTryLock)
  +#define VALGRIND_HG_MUTEX_LOCK_POST(_mutex)
  +#define VALGRIND_HG_MUTEX_UNLOCK_PRE(_mutex)
  +#define VALGRIND_HG_MUTEX_UNLOCK_POST(_mutex)
  +#define VALGRIND_HG_MUTEX_DESTROY_PRE(_mutex)
  +#define VALGRIND_HG_SEM_INIT_POST(_sem, _value)
  +#define VALGRIND_HG_SEM_WAIT_POST(_sem)
  +#define VALGRIND_HG_SEM_POST_PRE(_sem)
  +#define VALGRIND_HG_SEM_DESTROY_PRE(_sem)
  +#define VALGRIND_HG_BARRIER_INIT_PRE(_bar, _count, _resizable)
  +#define VALGRIND_HG_BARRIER_WAIT_PRE(_bar)
  +#define VALGRIND_HG_BARRIER_RESIZE_PRE(_bar, _newcount)
  +#define VALGRIND_HG_BARRIER_DESTROY_PRE(_bar)
  +#define      VALGRIND_HG_CLEAN_MEMORY(_qzz_start, _qzz_len)
  +#define VALGRIND_HG_CLEAN_MEMORY_HEAPBLOCK(_qzz_blockstart)
  +#define VALGRIND_HG_DISABLE_CHECKING(_qzz_start, _qzz_len)
  +#define VALGRIND_HG_ENABLE_CHECKING(_qzz_start, _qzz_len)
  +
  +#define DRD_GET_VALGRIND_THREADID
  +#define DRD_GET_DRD_THREADID
  +#define DRD_IGNORE_VAR(x)
  +#define DRD_STOP_IGNORING_VAR(x)
  +#define DRD_TRACE_VAR(x)
  +
  +#define      ANNOTATE_HAPPENS_BEFORE(_obj)
  +#define      ANNOTATE_HAPPENS_AFTER(_obj)
  +
  +#define      ANNOTATE_RWLOCK_CREATE(rwlock)
  +#define      ANNOTATE_RWLOCK_DESTROY(rwlock)
  +#define ANNOTATE_RWLOCK_ACQUIRED(rwlock, is_w)
  +#define ANNOTATE_READERLOCK_ACQUIRED(rwlock)
  +#define ANNOTATE_WRITERLOCK_ACQUIRED(rwlock)
  +#define ANNOTATE_RWLOCK_RELEASED(rwlock, is_w)
  +#define ANNOTATE_READERLOCK_RELEASED(rwlock)
  +#define ANNOTATE_WRITERLOCK_RELEASED(rwlock)
  +
  +#define ANNOTATE_BARRIER_INIT(barrier, count, reinitialization_allowed)
  +#define ANNOTATE_BARRIER_DESTROY(barrier)
  +#define ANNOTATE_BARRIER_WAIT_BEFORE(barrier)
  +#define      ANNOTATE_BARRIER_WAIT_AFTER(barrier)
  +
  +#define      ANNOTATE_BENIGN_RACE(_a, _b)
  +#define      ANNOTATE_BENIGN_RACE_SIZED(_a, _b, _c)
  +
  +#define      ANNOTATE_IGNORE_READS_BEGIN()
  +#define      ANNOTATE_IGNORE_READS_END()
  +#define      ANNOTATE_IGNORE_WRITES_BEGIN()
  +#define      ANNOTATE_IGNORE_WRITES_END()
  +#define      ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN()
  +#define      ANNOTATE_IGNORE_READS_AND_WRITES_END()
  +
  +#define      ANNOTATE_NEW_MEMORY(_addr, _size)
  +#define      ANNOTATE_TRACE_MEMORY(_addr)
  +#define      ANNOTATE_THREAD_NAME(_name)
  +
  +#define      DRD_xmalloc(_nb)                xmalloc(_nb)
  +#define      DRD_xcalloc(_nmemb, _size)      xcalloc(_nmemb, _nsize)
  +#define      DRD_xrealloc(_ptr, _size)       xrealloc(_ptr, _nsize)
  +#define      DRD_xstrdup(_str)               xstrdup(_str)
  +
   #endif
   
   #endif       /* H_DEBUG */
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to