Fix valgrind.h for Win64.
_WIN32 is defined for 64-bit builds as well, so test for _WIN64 first.
This commit is contained in:
parent
463d6680d1
commit
862ba430c5
@ -21,16 +21,16 @@
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. The origin of this software must not be misrepresented; you must
|
||||
not claim that you wrote the original software. If you use this
|
||||
software in a product, an acknowledgment in the product
|
||||
2. The origin of this software must not be misrepresented; you must
|
||||
not claim that you wrote the original software. If you use this
|
||||
software in a product, an acknowledgment in the product
|
||||
documentation would be appreciated but is not required.
|
||||
|
||||
3. Altered source versions must be plainly marked as such, and must
|
||||
not be misrepresented as being the original software.
|
||||
|
||||
4. The name of the author may not be used to endorse or promote
|
||||
products derived from this software without specific prior written
|
||||
4. The name of the author may not be used to endorse or promote
|
||||
products derived from this software without specific prior written
|
||||
permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||
@ -52,13 +52,13 @@
|
||||
the terms of the GNU General Public License, version 2. See the
|
||||
COPYING file in the source distribution for details.
|
||||
|
||||
----------------------------------------------------------------
|
||||
----------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
/* This file is for inclusion into client (your!) code.
|
||||
|
||||
You can use these macros to manipulate and query Valgrind's
|
||||
You can use these macros to manipulate and query Valgrind's
|
||||
execution inside your own programs.
|
||||
|
||||
The resulting executables will still run without Valgrind, just a
|
||||
@ -126,11 +126,11 @@
|
||||
# define PLAT_x86_darwin 1
|
||||
#elif defined(__APPLE__) && defined(__x86_64__)
|
||||
# define PLAT_amd64_darwin 1
|
||||
#elif defined(__MINGW64__) || (defined(_WIN64) && defined(_M_X64))
|
||||
# define PLAT_amd64_win64 1
|
||||
#elif defined(__MINGW32__) || defined(__CYGWIN32__) \
|
||||
|| (defined(_WIN32) && defined(_M_IX86))
|
||||
# define PLAT_x86_win32 1
|
||||
#elif defined(__MINGW64__) || (defined(_WIN64) && defined(_M_X64))
|
||||
# define PLAT_amd64_win64 1
|
||||
#elif defined(__linux__) && defined(__i386__)
|
||||
# define PLAT_x86_linux 1
|
||||
#elif defined(__linux__) && defined(__x86_64__)
|
||||
@ -214,8 +214,8 @@
|
||||
this is executed not under Valgrind. Args are passed in a memory
|
||||
block, and so there's no intrinsic limit to the number that could
|
||||
be passed, but it's currently five.
|
||||
|
||||
The macro args are:
|
||||
|
||||
The macro args are:
|
||||
_zzq_rlval result lvalue
|
||||
_zzq_default default value (result returned when running on real CPU)
|
||||
_zzq_request request code
|
||||
@ -242,7 +242,7 @@
|
||||
|| (defined(PLAT_x86_win32) && defined(__GNUC__))
|
||||
|
||||
typedef
|
||||
struct {
|
||||
struct {
|
||||
unsigned int nraddr; /* where's the code? */
|
||||
}
|
||||
OrigFn;
|
||||
@ -306,7 +306,7 @@ typedef
|
||||
#if defined(PLAT_x86_win32) && !defined(__GNUC__)
|
||||
|
||||
typedef
|
||||
struct {
|
||||
struct {
|
||||
unsigned int nraddr; /* where's the code? */
|
||||
}
|
||||
OrigFn;
|
||||
@ -374,12 +374,13 @@ valgrind_do_client_request_expr(uintptr_t _zzq_default, uintptr_t _zzq_request,
|
||||
|
||||
#endif /* PLAT_x86_win32 */
|
||||
|
||||
/* ------------------------ amd64-{linux,darwin} --------------- */
|
||||
/* -------------------- amd64-{linux,darwin,win64} ------------- */
|
||||
|
||||
#if defined(PLAT_amd64_linux) || defined(PLAT_amd64_darwin)
|
||||
#if defined(PLAT_amd64_linux) || defined(PLAT_amd64_darwin) \
|
||||
|| defined(PLAT_amd64_win64)
|
||||
|
||||
typedef
|
||||
struct {
|
||||
struct {
|
||||
unsigned long long int nraddr; /* where's the code? */
|
||||
}
|
||||
OrigFn;
|
||||
@ -443,7 +444,7 @@ typedef
|
||||
#if defined(PLAT_ppc32_linux)
|
||||
|
||||
typedef
|
||||
struct {
|
||||
struct {
|
||||
unsigned int nraddr; /* where's the code? */
|
||||
}
|
||||
OrigFn;
|
||||
@ -512,7 +513,7 @@ typedef
|
||||
#if defined(PLAT_ppc64_linux)
|
||||
|
||||
typedef
|
||||
struct {
|
||||
struct {
|
||||
unsigned long long int nraddr; /* where's the code? */
|
||||
unsigned long long int r2; /* what tocptr do we need? */
|
||||
}
|
||||
@ -591,7 +592,7 @@ typedef
|
||||
#if defined(PLAT_arm_linux)
|
||||
|
||||
typedef
|
||||
struct {
|
||||
struct {
|
||||
unsigned int nraddr; /* where's the code? */
|
||||
}
|
||||
OrigFn;
|
||||
@ -736,7 +737,7 @@ typedef
|
||||
#if defined(PLAT_mips32_linux)
|
||||
|
||||
typedef
|
||||
struct {
|
||||
struct {
|
||||
unsigned int nraddr; /* where's the code? */
|
||||
}
|
||||
OrigFn;
|
||||
@ -750,7 +751,7 @@ typedef
|
||||
"srl $0, $0, 29\n\t" \
|
||||
"srl $0, $0, 3\n\t" \
|
||||
"srl $0, $0, 19\n\t"
|
||||
|
||||
|
||||
#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \
|
||||
_zzq_default, _zzq_request, \
|
||||
_zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \
|
||||
@ -1999,7 +2000,7 @@ typedef
|
||||
#define VALGRIND_RESTORE_STACK \
|
||||
"mr 1,28\n\t"
|
||||
|
||||
/* These CALL_FN_ macros assume that on ppc32-linux,
|
||||
/* These CALL_FN_ macros assume that on ppc32-linux,
|
||||
sizeof(unsigned long) == 4. */
|
||||
|
||||
#define CALL_FN_W_v(lval, orig) \
|
||||
@ -3509,7 +3510,7 @@ typedef
|
||||
#define __CALLER_SAVED_REGS "0","1","2","3","4","5","14", \
|
||||
"f0","f1","f2","f3","f4","f5","f6","f7"
|
||||
|
||||
/* Nb: Although r11 is modified in the asm snippets below (inside
|
||||
/* Nb: Although r11 is modified in the asm snippets below (inside
|
||||
VALGRIND_CFI_PROLOGUE) it is not listed in the clobber section, for
|
||||
two reasons:
|
||||
(1) r11 is restored in VALGRIND_CFI_EPILOGUE, so effectively it is not
|
||||
@ -3959,7 +3960,7 @@ typedef
|
||||
#endif /* PLAT_s390x_linux */
|
||||
|
||||
/* ------------------------- mips32-linux ----------------------- */
|
||||
|
||||
|
||||
#if defined(PLAT_mips32_linux)
|
||||
|
||||
/* These regs are trashed by the hidden call. */
|
||||
@ -4935,7 +4936,7 @@ typedef
|
||||
#define VG_IS_TOOL_USERREQ(a, b, v) \
|
||||
(VG_USERREQ_TOOL_BASE(a,b) == ((v) & 0xffff0000))
|
||||
|
||||
/* !! ABIWARNING !! ABIWARNING !! ABIWARNING !! ABIWARNING !!
|
||||
/* !! ABIWARNING !! ABIWARNING !! ABIWARNING !! ABIWARNING !!
|
||||
This enum comprises an ABI exported by Valgrind to programs
|
||||
which use client requests. DO NOT CHANGE THE ORDER OF THESE
|
||||
ENTRIES, NOR DELETE ANY -- add new ones at the end. */
|
||||
@ -5073,7 +5074,7 @@ VALGRIND_PRINTF(const char *format, ...)
|
||||
_qzz_res = VALGRIND_DO_CLIENT_REQUEST_EXPR(0,
|
||||
VG_USERREQ__PRINTF_VALIST_BY_REF,
|
||||
(unsigned long)format,
|
||||
(unsigned long)&vargs,
|
||||
(unsigned long)&vargs,
|
||||
0, 0, 0);
|
||||
#endif
|
||||
va_end(vargs);
|
||||
@ -5111,7 +5112,7 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...)
|
||||
_qzz_res = VALGRIND_DO_CLIENT_REQUEST_EXPR(0,
|
||||
VG_USERREQ__PRINTF_BACKTRACE_VALIST_BY_REF,
|
||||
(unsigned long)format,
|
||||
(unsigned long)&vargs,
|
||||
(unsigned long)&vargs,
|
||||
0, 0, 0);
|
||||
#endif
|
||||
va_end(vargs);
|
||||
@ -5122,7 +5123,7 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...)
|
||||
|
||||
/* These requests allow control to move from the simulated CPU to the
|
||||
real CPU, calling an arbitary function.
|
||||
|
||||
|
||||
Note that the current ThreadId is inserted as the first argument.
|
||||
So this call:
|
||||
|
||||
@ -5208,7 +5209,7 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...)
|
||||
- It marks the block as being addressable and undefined (if 'is_zeroed' is
|
||||
not set), or addressable and defined (if 'is_zeroed' is set). This
|
||||
controls how accesses to the block by the program are handled.
|
||||
|
||||
|
||||
'addr' is the start of the usable block (ie. after any
|
||||
redzone), 'sizeB' is its size. 'rzB' is the redzone size if the allocator
|
||||
can apply redzones -- these are blocks of padding at the start and end of
|
||||
@ -5216,7 +5217,7 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...)
|
||||
Valgrind will spot block overruns. `is_zeroed' indicates if the memory is
|
||||
zeroed (or filled with another predictable value), as is the case for
|
||||
calloc().
|
||||
|
||||
|
||||
VALGRIND_MALLOCLIKE_BLOCK should be put immediately after the point where a
|
||||
heap block -- that will be used by the client program -- is allocated.
|
||||
It's best to put it at the outermost level of the allocator if possible;
|
||||
|
Loading…
Reference in New Issue
Block a user