[dm-devel] [PATCH] multipath-tools: sync valgrind.h with 3.12 upstream

Christophe Varoqui christophe.varoqui at opensvc.com
Mon Feb 27 05:48:14 UTC 2017


Applied.

On Mon, Feb 20, 2017 at 2:37 PM, Xose Vazquez Perez <xose.vazquez at gmail.com>
wrote:

> Cc: Bart Van Assche <bart.vanassche at sandisk.com>
> Cc: Christophe Varoqui <christophe.varoqui at opensvc.com>
> Cc: device-mapper development <dm-devel at redhat.com>
> Signed-off-by: Xose Vazquez Perez <xose.vazquez at gmail.com>
> ---
>  third-party/valgrind/valgrind.h | 40 ++++++++++++++++++++++++++++++
> +++++++---
>  1 file changed, 37 insertions(+), 3 deletions(-)
>
> diff --git a/third-party/valgrind/valgrind.h b/third-party/valgrind/
> valgrind.h
> index 4b8ef75..6892007 100644
> --- a/third-party/valgrind/valgrind.h
> +++ b/third-party/valgrind/valgrind.h
> @@ -89,7 +89,7 @@
>          || (__VALGRIND_MAJOR__ == 3 && __VALGRIND_MINOR__ >= 6))
>  */
>  #define __VALGRIND_MAJOR__    3
> -#define __VALGRIND_MINOR__    11
> +#define __VALGRIND_MINOR__    12
>
>
>  #include <stdarg.h>
> @@ -946,7 +946,7 @@ typedef
>                       "move %0, $11\n\t"     /*result*/            \
>                       : "=r" (_zzq_result)                         \
>                       : "r" (_zzq_default), "r" (&_zzq_args[0])    \
> -                     : "$11", "$12");                             \
> +                     : "$11", "$12", "memory");                   \
>      _zzq_result;                                                  \
>    })
>
> @@ -1017,7 +1017,7 @@ typedef
>                           "move %0, $11\n\t"     /*result*/          \
>                           : "=r" (_zzq_result)                       \
>                           : "r" (_zzq_default), "r" (&_zzq_args[0])  \
> -                         : "$11", "$12");                           \
> +                         : "$11", "$12", "memory");                 \
>      _zzq_result;                                                    \
>    })
>
> @@ -6759,6 +6759,7 @@ __inline
>  VALGRIND_PRINTF(const char *format, ...)
>  {
>  #if defined(NVALGRIND)
> +   if (format) *(volatile const char *)format;   /* avoid compiler
> warning */
>     return 0;
>  #else /* NVALGRIND */
>  #if defined(_MSC_VER) || defined(__MINGW64__)
> @@ -6797,6 +6798,7 @@ __inline
>  VALGRIND_PRINTF_BACKTRACE(const char *format, ...)
>  {
>  #if defined(NVALGRIND)
> +   if (format) *(volatile const char *)format;   /* avoid compiler
> warning */
>     return 0;
>  #else /* NVALGRIND */
>  #if defined(_MSC_VER) || defined(__MINGW64__)
> @@ -7007,6 +7009,38 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...)
>      VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__CREATE_MEMPOOL,   \
>                                      pool, rzB, is_zeroed, 0, 0)
>
> +/* Create a memory pool with some flags specifying extended behaviour.
> +   When flags is zero, the behaviour is identical to
> VALGRIND_CREATE_MEMPOOL.
> +
> +   The flag VALGRIND_MEMPOOL_METAPOOL specifies that the pieces of memory
> +   associated with the pool using VALGRIND_MEMPOOL_ALLOC  will be used
> +   by the application as superblocks to dole out MALLOC_LIKE blocks using
> +   VALGRIND_MALLOCLIKE_BLOCK. In other words, a meta pool is a "2 levels"
> +   pool : first level is the blocks described by VALGRIND_MEMPOOL_ALLOC.
> +   The second level blocks are described using VALGRIND_MALLOCLIKE_BLOCK.
> +   Note that the association between the pool and the second level blocks
> +   is implicit : second level blocks will be located inside first level
> +   blocks. It is necessary to use the VALGRIND_MEMPOOL_METAPOOL flag
> +   for such 2 levels pools, as otherwise valgrind will detect overlapping
> +   memory blocks, and will abort execution (e.g. during leak search).
> +
> +   Such a meta pool can also be marked as an 'auto free' pool using the
> flag
> +   VALGRIND_MEMPOOL_AUTO_FREE, which must be OR-ed together with the
> +   VALGRIND_MEMPOOL_METAPOOL. For an 'auto free' pool,
> VALGRIND_MEMPOOL_FREE
> +   will automatically free the second level blocks that are contained
> +   inside the first level block freed with VALGRIND_MEMPOOL_FREE.
> +   In other words, calling VALGRIND_MEMPOOL_FREE will cause implicit calls
> +   to VALGRIND_FREELIKE_BLOCK for all the second level blocks included
> +   in the first level block.
> +   Note: it is an error to use the VALGRIND_MEMPOOL_AUTO_FREE flag
> +   without the VALGRIND_MEMPOOL_METAPOOL flag.
> +*/
> +#define VALGRIND_MEMPOOL_AUTO_FREE  1
> +#define VALGRIND_MEMPOOL_METAPOOL   2
> +#define VALGRIND_CREATE_MEMPOOL_EXT(pool, rzB, is_zeroed, flags)        \
> +   VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__CREATE_MEMPOOL,          \
> +                                   pool, rzB, is_zeroed, flags, 0)
> +
>  /* Destroy a memory pool. */
>  #define VALGRIND_DESTROY_MEMPOOL(pool)                            \
>      VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__DESTROY_MEMPOOL,  \
> --
> 2.11.1
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/dm-devel/attachments/20170227/e63c369e/attachment.htm>


More information about the dm-devel mailing list