mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 10:05:29 +00:00
Preserve the stack's 16-alignment in x86 and amd64 wrappers.
Fixes #254646. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11461
This commit is contained in:
parent
ce9c5ac16a
commit
c797ab7f0c
@ -812,10 +812,11 @@ typedef
|
||||
_argvec[0] = (unsigned long)_orig.nraddr; \
|
||||
_argvec[1] = (unsigned long)(arg1); \
|
||||
__asm__ volatile( \
|
||||
"subl $12, %%esp\n\t" \
|
||||
"pushl 4(%%eax)\n\t" \
|
||||
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
|
||||
VALGRIND_CALL_NOREDIR_EAX \
|
||||
"addl $4, %%esp\n" \
|
||||
"addl $16, %%esp\n" \
|
||||
: /*out*/ "=a" (_res) \
|
||||
: /*in*/ "a" (&_argvec[0]) \
|
||||
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
|
||||
@ -832,11 +833,12 @@ typedef
|
||||
_argvec[1] = (unsigned long)(arg1); \
|
||||
_argvec[2] = (unsigned long)(arg2); \
|
||||
__asm__ volatile( \
|
||||
"subl $8, %%esp\n\t" \
|
||||
"pushl 8(%%eax)\n\t" \
|
||||
"pushl 4(%%eax)\n\t" \
|
||||
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
|
||||
VALGRIND_CALL_NOREDIR_EAX \
|
||||
"addl $8, %%esp\n" \
|
||||
"addl $16, %%esp\n" \
|
||||
: /*out*/ "=a" (_res) \
|
||||
: /*in*/ "a" (&_argvec[0]) \
|
||||
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
|
||||
@ -854,12 +856,13 @@ typedef
|
||||
_argvec[2] = (unsigned long)(arg2); \
|
||||
_argvec[3] = (unsigned long)(arg3); \
|
||||
__asm__ volatile( \
|
||||
"subl $4, %%esp\n\t" \
|
||||
"pushl 12(%%eax)\n\t" \
|
||||
"pushl 8(%%eax)\n\t" \
|
||||
"pushl 4(%%eax)\n\t" \
|
||||
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
|
||||
VALGRIND_CALL_NOREDIR_EAX \
|
||||
"addl $12, %%esp\n" \
|
||||
"addl $16, %%esp\n" \
|
||||
: /*out*/ "=a" (_res) \
|
||||
: /*in*/ "a" (&_argvec[0]) \
|
||||
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
|
||||
@ -904,6 +907,7 @@ typedef
|
||||
_argvec[4] = (unsigned long)(arg4); \
|
||||
_argvec[5] = (unsigned long)(arg5); \
|
||||
__asm__ volatile( \
|
||||
"subl $12, %%esp\n\t" \
|
||||
"pushl 20(%%eax)\n\t" \
|
||||
"pushl 16(%%eax)\n\t" \
|
||||
"pushl 12(%%eax)\n\t" \
|
||||
@ -911,7 +915,7 @@ typedef
|
||||
"pushl 4(%%eax)\n\t" \
|
||||
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
|
||||
VALGRIND_CALL_NOREDIR_EAX \
|
||||
"addl $20, %%esp\n" \
|
||||
"addl $32, %%esp\n" \
|
||||
: /*out*/ "=a" (_res) \
|
||||
: /*in*/ "a" (&_argvec[0]) \
|
||||
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
|
||||
@ -932,6 +936,7 @@ typedef
|
||||
_argvec[5] = (unsigned long)(arg5); \
|
||||
_argvec[6] = (unsigned long)(arg6); \
|
||||
__asm__ volatile( \
|
||||
"subl $8, %%esp\n\t" \
|
||||
"pushl 24(%%eax)\n\t" \
|
||||
"pushl 20(%%eax)\n\t" \
|
||||
"pushl 16(%%eax)\n\t" \
|
||||
@ -940,7 +945,7 @@ typedef
|
||||
"pushl 4(%%eax)\n\t" \
|
||||
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
|
||||
VALGRIND_CALL_NOREDIR_EAX \
|
||||
"addl $24, %%esp\n" \
|
||||
"addl $32, %%esp\n" \
|
||||
: /*out*/ "=a" (_res) \
|
||||
: /*in*/ "a" (&_argvec[0]) \
|
||||
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
|
||||
@ -963,6 +968,7 @@ typedef
|
||||
_argvec[6] = (unsigned long)(arg6); \
|
||||
_argvec[7] = (unsigned long)(arg7); \
|
||||
__asm__ volatile( \
|
||||
"subl $4, %%esp\n\t" \
|
||||
"pushl 28(%%eax)\n\t" \
|
||||
"pushl 24(%%eax)\n\t" \
|
||||
"pushl 20(%%eax)\n\t" \
|
||||
@ -972,7 +978,7 @@ typedef
|
||||
"pushl 4(%%eax)\n\t" \
|
||||
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
|
||||
VALGRIND_CALL_NOREDIR_EAX \
|
||||
"addl $28, %%esp\n" \
|
||||
"addl $32, %%esp\n" \
|
||||
: /*out*/ "=a" (_res) \
|
||||
: /*in*/ "a" (&_argvec[0]) \
|
||||
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
|
||||
@ -1031,6 +1037,7 @@ typedef
|
||||
_argvec[8] = (unsigned long)(arg8); \
|
||||
_argvec[9] = (unsigned long)(arg9); \
|
||||
__asm__ volatile( \
|
||||
"subl $12, %%esp\n\t" \
|
||||
"pushl 36(%%eax)\n\t" \
|
||||
"pushl 32(%%eax)\n\t" \
|
||||
"pushl 28(%%eax)\n\t" \
|
||||
@ -1042,7 +1049,7 @@ typedef
|
||||
"pushl 4(%%eax)\n\t" \
|
||||
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
|
||||
VALGRIND_CALL_NOREDIR_EAX \
|
||||
"addl $36, %%esp\n" \
|
||||
"addl $48, %%esp\n" \
|
||||
: /*out*/ "=a" (_res) \
|
||||
: /*in*/ "a" (&_argvec[0]) \
|
||||
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
|
||||
@ -1068,6 +1075,7 @@ typedef
|
||||
_argvec[9] = (unsigned long)(arg9); \
|
||||
_argvec[10] = (unsigned long)(arg10); \
|
||||
__asm__ volatile( \
|
||||
"subl $8, %%esp\n\t" \
|
||||
"pushl 40(%%eax)\n\t" \
|
||||
"pushl 36(%%eax)\n\t" \
|
||||
"pushl 32(%%eax)\n\t" \
|
||||
@ -1080,7 +1088,7 @@ typedef
|
||||
"pushl 4(%%eax)\n\t" \
|
||||
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
|
||||
VALGRIND_CALL_NOREDIR_EAX \
|
||||
"addl $40, %%esp\n" \
|
||||
"addl $48, %%esp\n" \
|
||||
: /*out*/ "=a" (_res) \
|
||||
: /*in*/ "a" (&_argvec[0]) \
|
||||
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
|
||||
@ -1108,6 +1116,7 @@ typedef
|
||||
_argvec[10] = (unsigned long)(arg10); \
|
||||
_argvec[11] = (unsigned long)(arg11); \
|
||||
__asm__ volatile( \
|
||||
"subl $4, %%esp\n\t" \
|
||||
"pushl 44(%%eax)\n\t" \
|
||||
"pushl 40(%%eax)\n\t" \
|
||||
"pushl 36(%%eax)\n\t" \
|
||||
@ -1121,7 +1130,7 @@ typedef
|
||||
"pushl 4(%%eax)\n\t" \
|
||||
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
|
||||
VALGRIND_CALL_NOREDIR_EAX \
|
||||
"addl $44, %%esp\n" \
|
||||
"addl $48, %%esp\n" \
|
||||
: /*out*/ "=a" (_res) \
|
||||
: /*in*/ "a" (&_argvec[0]) \
|
||||
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
|
||||
@ -1478,7 +1487,7 @@ typedef
|
||||
_argvec[7] = (unsigned long)(arg7); \
|
||||
__asm__ volatile( \
|
||||
VALGRIND_CFI_PROLOGUE \
|
||||
"subq $128,%%rsp\n\t" \
|
||||
"subq $136,%%rsp\n\t" \
|
||||
"pushq 56(%%rax)\n\t" \
|
||||
"movq 48(%%rax), %%r9\n\t" \
|
||||
"movq 40(%%rax), %%r8\n\t" \
|
||||
@ -1489,7 +1498,7 @@ typedef
|
||||
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
|
||||
VALGRIND_CALL_NOREDIR_RAX \
|
||||
"addq $8, %%rsp\n" \
|
||||
"addq $128,%%rsp\n\t" \
|
||||
"addq $136,%%rsp\n\t" \
|
||||
VALGRIND_CFI_EPILOGUE \
|
||||
: /*out*/ "=a" (_res) \
|
||||
: /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
|
||||
@ -1554,7 +1563,7 @@ typedef
|
||||
_argvec[9] = (unsigned long)(arg9); \
|
||||
__asm__ volatile( \
|
||||
VALGRIND_CFI_PROLOGUE \
|
||||
"subq $128,%%rsp\n\t" \
|
||||
"subq $136,%%rsp\n\t" \
|
||||
"pushq 72(%%rax)\n\t" \
|
||||
"pushq 64(%%rax)\n\t" \
|
||||
"pushq 56(%%rax)\n\t" \
|
||||
@ -1567,7 +1576,7 @@ typedef
|
||||
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
|
||||
VALGRIND_CALL_NOREDIR_RAX \
|
||||
"addq $24, %%rsp\n" \
|
||||
"addq $128,%%rsp\n\t" \
|
||||
"addq $136,%%rsp\n\t" \
|
||||
VALGRIND_CFI_EPILOGUE \
|
||||
: /*out*/ "=a" (_res) \
|
||||
: /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
|
||||
@ -1638,7 +1647,7 @@ typedef
|
||||
_argvec[11] = (unsigned long)(arg11); \
|
||||
__asm__ volatile( \
|
||||
VALGRIND_CFI_PROLOGUE \
|
||||
"subq $128,%%rsp\n\t" \
|
||||
"subq $136,%%rsp\n\t" \
|
||||
"pushq 88(%%rax)\n\t" \
|
||||
"pushq 80(%%rax)\n\t" \
|
||||
"pushq 72(%%rax)\n\t" \
|
||||
@ -1653,7 +1662,7 @@ typedef
|
||||
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
|
||||
VALGRIND_CALL_NOREDIR_RAX \
|
||||
"addq $40, %%rsp\n" \
|
||||
"addq $128,%%rsp\n\t" \
|
||||
"addq $136,%%rsp\n\t" \
|
||||
VALGRIND_CFI_EPILOGUE \
|
||||
: /*out*/ "=a" (_res) \
|
||||
: /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user