mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-04 02:18:37 +00:00
Don't assume that va_list can be casted to an unsigned word. Fixes
the build on arm-linux with gcc-4.4 or later. Patch from Dmitry Zhurikhin. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11006
This commit is contained in:
parent
32adf1d743
commit
a72ca74730
@ -1408,15 +1408,27 @@ void do_client_request ( ThreadId tid )
|
||||
break;
|
||||
|
||||
case VG_USERREQ__PRINTF: {
|
||||
Int count =
|
||||
VG_(vmessage)( Vg_ClientMsg, (char *)arg[1], (void*)arg[2] );
|
||||
union {
|
||||
va_list vargs;
|
||||
unsigned long ul;
|
||||
} args;
|
||||
Int count;
|
||||
args.ul = (unsigned long)arg[2];
|
||||
count =
|
||||
VG_(vmessage)( Vg_ClientMsg, (char *)arg[1], args.vargs );
|
||||
VG_(message_flush)();
|
||||
SET_CLREQ_RETVAL( tid, count );
|
||||
break; }
|
||||
|
||||
case VG_USERREQ__INTERNAL_PRINTF: {
|
||||
Int count =
|
||||
VG_(vmessage)( Vg_DebugMsg, (char *)arg[1], (void*)arg[2] );
|
||||
union {
|
||||
va_list vargs;
|
||||
unsigned long ul;
|
||||
} args;
|
||||
Int count;
|
||||
args.ul = (unsigned long)arg[2];
|
||||
count =
|
||||
VG_(vmessage)( Vg_DebugMsg, (char *)arg[1], args.vargs );
|
||||
VG_(message_flush)();
|
||||
SET_CLREQ_RETVAL( tid, count );
|
||||
break; }
|
||||
@ -1427,8 +1439,14 @@ void do_client_request ( ThreadId tid )
|
||||
break; }
|
||||
|
||||
case VG_USERREQ__PRINTF_BACKTRACE: {
|
||||
Int count =
|
||||
VG_(vmessage)( Vg_ClientMsg, (char *)arg[1], (void*)arg[2] );
|
||||
union {
|
||||
va_list vargs;
|
||||
unsigned long ul;
|
||||
} args;
|
||||
Int count;
|
||||
args.ul = (unsigned long)arg[2];
|
||||
count =
|
||||
VG_(vmessage)( Vg_ClientMsg, (char *)arg[1], args.vargs );
|
||||
VG_(message_flush)();
|
||||
VG_(get_and_pp_StackTrace)( tid, VG_(clo_backtrace_size) );
|
||||
SET_CLREQ_RETVAL( tid, count );
|
||||
|
||||
@ -64,13 +64,16 @@ static int VALGRIND_INTERNAL_PRINTF(const char *format, ...)
|
||||
static int VALGRIND_INTERNAL_PRINTF(const char *format, ...)
|
||||
{
|
||||
unsigned long _qzz_res = 0;
|
||||
va_list vargs;
|
||||
va_start(vargs, format);
|
||||
union {
|
||||
va_list vargs;
|
||||
unsigned long ul;
|
||||
} args;
|
||||
va_start(args.vargs, format);
|
||||
VALGRIND_DO_CLIENT_REQUEST(
|
||||
_qzz_res, 0, VG_USERREQ__INTERNAL_PRINTF,
|
||||
(unsigned long)format, (unsigned long)vargs, 0, 0, 0
|
||||
(unsigned long)format, (unsigned long)(args.ul), 0, 0, 0
|
||||
);
|
||||
va_end(vargs);
|
||||
va_end(args.vargs);
|
||||
return _qzz_res;
|
||||
}
|
||||
|
||||
|
||||
@ -4183,12 +4183,16 @@ static int
|
||||
VALGRIND_PRINTF(const char *format, ...)
|
||||
{
|
||||
unsigned long _qzz_res;
|
||||
va_list vargs;
|
||||
va_start(vargs, format);
|
||||
union {
|
||||
va_list vargs;
|
||||
unsigned long ul;
|
||||
} args;
|
||||
va_start(args.vargs, format);
|
||||
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, VG_USERREQ__PRINTF,
|
||||
(unsigned long)format, (unsigned long)vargs,
|
||||
(unsigned long)format,
|
||||
(unsigned long)(args.ul),
|
||||
0, 0, 0);
|
||||
va_end(vargs);
|
||||
va_end(args.vargs);
|
||||
return (int)_qzz_res;
|
||||
}
|
||||
|
||||
@ -4198,12 +4202,16 @@ static int
|
||||
VALGRIND_PRINTF_BACKTRACE(const char *format, ...)
|
||||
{
|
||||
unsigned long _qzz_res;
|
||||
va_list vargs;
|
||||
va_start(vargs, format);
|
||||
union {
|
||||
va_list vargs;
|
||||
unsigned long ul;
|
||||
} args;
|
||||
va_start(args.vargs, format);
|
||||
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, VG_USERREQ__PRINTF_BACKTRACE,
|
||||
(unsigned long)format, (unsigned long)vargs,
|
||||
(unsigned long)format,
|
||||
(unsigned long)(args.ul),
|
||||
0, 0, 0);
|
||||
va_end(vargs);
|
||||
va_end(args.vargs);
|
||||
return (int)_qzz_res;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user