------------------------------------------------------------------ */
// Accessors for the ThreadArchState
-#define PLATFORM_SYSCALL_NUM guest_RAX
-#define PLATFORM_SYSCALL_ARG1 guest_RDI
-#define PLATFORM_SYSCALL_ARG2 guest_RSI
-#define PLATFORM_SYSCALL_ARG3 guest_RDX
-#define PLATFORM_SYSCALL_ARG4 guest_R10
-#define PLATFORM_SYSCALL_ARG5 guest_R8
-#define PLATFORM_SYSCALL_ARG6 guest_R9
-#define PLATFORM_SYSCALL_RET guest_RAX
+#define VGP_SYSCALL_NUM guest_RAX
+#define VGP_SYSCALL_ARG1 guest_RDI
+#define VGP_SYSCALL_ARG2 guest_RSI
+#define VGP_SYSCALL_ARG3 guest_RDX
+#define VGP_SYSCALL_ARG4 guest_R10
+#define VGP_SYSCALL_ARG5 guest_R8
+#define VGP_SYSCALL_ARG6 guest_R9
+#define VGP_SYSCALL_RET guest_RAX
// Setting a syscall result
-#define PLATFORM_SET_SYSCALL_RESULT(regs, val) \
- ((regs).vex.guest_RAX = (val))
+#define VGP_SET_SYSCALL_RESULT(regs, val) ((regs).vex.guest_RAX = (val))
// Setting thread regs and shadow regs from within the core
#define SET_SYSCALL_RETVAL(zztid, zzval) \
ucontext stuff
------------------------------------------------------------------ */
-#define UCONTEXT_INSTR_PTR(uc) ((uc)->uc_mcontext.rip)
-#define UCONTEXT_STACK_PTR(uc) ((uc)->uc_mcontext.rsp)
-#define UCONTEXT_FRAME_PTR(uc) ((uc)->uc_mcontext.rbp)
-#define UCONTEXT_SYSCALL_NUM(uc) ((uc)->uc_mcontext.rax)
-#define UCONTEXT_SYSCALL_RET(uc) ((uc)->uc_mcontext.rax)
+#define VGP_UCONTEXT_INSTR_PTR(uc) ((uc)->uc_mcontext.rip)
+#define VGP_UCONTEXT_STACK_PTR(uc) ((uc)->uc_mcontext.rsp)
+#define VGP_UCONTEXT_FRAME_PTR(uc) ((uc)->uc_mcontext.rbp)
+#define VGP_UCONTEXT_SYSCALL_NUM(uc) ((uc)->uc_mcontext.rax)
+#define VGP_UCONTEXT_SYSCALL_RET(uc) ((uc)->uc_mcontext.rax)
/* ---------------------------------------------------------------------
mmap() stuff
------------------------------------------------------------------ */
-#define PLATFORM_DO_MMAP(ret, start, length, prot, flags, fd, offset) { \
+#define VGP_DO_MMAP(ret, start, length, prot, flags, fd, offset) { \
ret = VG_(do_syscall6)(__NR_mmap, (UWord)(start), (length), \
(prot), (flags), (fd), (offset)); \
} while (0)
-#define PLATFORM_GET_MMAP_ARGS(tst, a1, a2, a3, a4, a5, a6) do {\
+#define VGP_GET_MMAP_ARGS(tst, a1, a2, a3, a4, a5, a6) do {\
I_die_here; \
} while (0)
state, but does need to pass though "val". */
#include <setjmp.h> /* for jmp_buf */
-#define SETJMP(env) setjmp(env)
-#define LONGJMP(env, val) longjmp(env, val)
+#define VGP_SETJMP(env) setjmp(env)
+#define VGP_LONGJMP(env, val) longjmp(env, val)
#endif // __AMD64_LINUX_CORE_PLATFORM_H
ThreadState *tst = VG_(get_ThreadState)(tid);
ThreadArchState *th_regs = &tst->arch;
- Word ip = UCONTEXT_INSTR_PTR(uc);
+ Word ip = VGP_UCONTEXT_INSTR_PTR(uc);
if (debug)
VG_(printf)("interrupted_syscall: ip=%p; restart=%d eax=%d\n",
- ip, restart, UCONTEXT_SYSCALL_NUM(uc));
+ ip, restart, VGP_UCONTEXT_SYSCALL_NUM(uc));
if (ip < VGA_(blksys_setup) || ip >= VGA_(blksys_finished)) {
VG_(printf)(" not in syscall (%p - %p)\n", VGA_(blksys_setup), VGA_(blksys_finished));
if (restart)
VGA_(restart_syscall)(th_regs);
else {
- th_regs->vex.PLATFORM_SYSCALL_RET = -VKI_EINTR;
+ th_regs->vex.VGP_SYSCALL_RET = -VKI_EINTR;
VG_(post_syscall)(tid);
}
} else if (ip >= VGA_(blksys_complete) && ip < VGA_(blksys_committed)) {
The saved real CPU %rax has the result, which we need to move
to RAX. */
if (debug)
- VG_(printf)(" completed: ret=%d\n", UCONTEXT_SYSCALL_RET(uc));
- th_regs->vex.PLATFORM_SYSCALL_RET = UCONTEXT_SYSCALL_RET(uc);
+ VG_(printf)(" completed: ret=%d\n", VGP_UCONTEXT_SYSCALL_RET(uc));
+ th_regs->vex.VGP_SYSCALL_RET = VGP_UCONTEXT_SYSCALL_RET(uc);
VG_(post_syscall)(tid);
} else if (ip >= VGA_(blksys_committed) && ip < VGA_(blksys_finished)) {
/* Result committed, but the signal mask has not been restored;
*/
VGA_(setup_child)( &ctst->arch, &ptst->arch );
- PLATFORM_SET_SYSCALL_RESULT(ctst->arch, 0);
+ VGP_SET_SYSCALL_RESULT(ctst->arch, 0);
if (rsp != 0)
ctst->arch.vex.guest_RSP = rsp;
------------------------------------------------------------------ */
// Accessors for the ThreadArchState
-#define PLATFORM_SYSCALL_NUM guest_SYSCALLNO
-#define PLATFORM_SYSCALL_ARG1 guest_R0
-#define PLATFORM_SYSCALL_ARG2 guest_R1
-#define PLATFORM_SYSCALL_ARG3 guest_R2
-#define PLATFORM_SYSCALL_ARG4 guest_R3
-#define PLATFORM_SYSCALL_ARG5 guest_R4
-#define PLATFORM_SYSCALL_ARG6 guest_R5
-#define PLATFORM_SYSCALL_RET guest_R0 // ToDo XXX ????????
-
-#define PLATFORM_SET_SYSCALL_RESULT(regs, val) \
- ((regs).vex.guest_R0 = (val)) // ToDo XXX ????????
+#define VGP_SYSCALL_NUM guest_SYSCALLNO
+#define VGP_SYSCALL_ARG1 guest_R0
+#define VGP_SYSCALL_ARG2 guest_R1
+#define VGP_SYSCALL_ARG3 guest_R2
+#define VGP_SYSCALL_ARG4 guest_R3
+#define VGP_SYSCALL_ARG5 guest_R4
+#define VGP_SYSCALL_ARG6 guest_R5
+#define VGP_SYSCALL_RET guest_R0 // ToDo XXX ????????
+
+// ToDo XXX ????????
+#define VGP_SET_SYSCALL_RESULT(regs, val) ((regs).vex.guest_R0 = (val))
// Setting thread regs and shadow regs from within the core
// XXX ToDo: not sure about this
ucontext stuff
------------------------------------------------------------------ */
-#define UCONTEXT_INSTR_PTR(uc) ((uc)->uc_mcontext.arm_pc)
-#define UCONTEXT_STACK_PTR(uc) ((uc)->uc_mcontext.arm_sp)
-#define UCONTEXT_FRAME_PTR(uc) ((uc)->uc_mcontext.arm_fp)
-#define UCONTEXT_SYSCALL_NUM(uc) ((uc)->uc_mcontext.arm_r0)
+#define VGP_UCONTEXT_INSTR_PTR(uc) ((uc)->uc_mcontext.arm_pc)
+#define VGP_UCONTEXT_STACK_PTR(uc) ((uc)->uc_mcontext.arm_sp)
+#define VGP_UCONTEXT_FRAME_PTR(uc) ((uc)->uc_mcontext.arm_fp)
+#define VGP_UCONTEXT_SYSCALL_NUM(uc) ((uc)->uc_mcontext.arm_r0)
/* ---------------------------------------------------------------------
mmap() stuff
------------------------------------------------------------------ */
-#define PLATFORM_DO_MMAP(ret, start, length, prot, flags, fd, offset) { \
+#define VGP_DO_MMAP(ret, start, length, prot, flags, fd, offset) { \
I_die_here; \
} while (0)
-#define PLATFORM_GET_MMAP_ARGS(tst, a1, a2, a3, a4, a5, a6) do { \
+#define VGP_GET_MMAP_ARGS(tst, a1, a2, a3, a4, a5, a6) do { \
I_die_here; \
} while (0)
#define ARG5 SYSCALL_ARG5(tst->arch)
#define ARG6 SYSCALL_ARG6(tst->arch)
-#define SET_RESULT(val) \
- do { PLATFORM_SET_SYSCALL_RESULT(tst->arch, (val)); \
- tst->syscall_result_set = True; \
+#define SET_RESULT(val) \
+ do { VGP_SET_SYSCALL_RESULT(tst->arch, (val)); \
+ tst->syscall_result_set = True; \
} while (0)
#define PRINT(format, args...) \
// ---------------------------------------------------------------------
// Accessors for the ThreadArchState
-#define SYSCALL_NUM(regs) ((regs).vex.PLATFORM_SYSCALL_NUM)
-#define SYSCALL_ARG1(regs) ((regs).vex.PLATFORM_SYSCALL_ARG1)
-#define SYSCALL_ARG2(regs) ((regs).vex.PLATFORM_SYSCALL_ARG2)
-#define SYSCALL_ARG3(regs) ((regs).vex.PLATFORM_SYSCALL_ARG3)
-#define SYSCALL_ARG4(regs) ((regs).vex.PLATFORM_SYSCALL_ARG4)
-#define SYSCALL_ARG5(regs) ((regs).vex.PLATFORM_SYSCALL_ARG5)
-#define SYSCALL_ARG6(regs) ((regs).vex.PLATFORM_SYSCALL_ARG6)
-#define SYSCALL_RET(regs) ((regs).vex.PLATFORM_SYSCALL_RET)
+#define SYSCALL_NUM(regs) ((regs).vex.VGP_SYSCALL_NUM)
+#define SYSCALL_ARG1(regs) ((regs).vex.VGP_SYSCALL_ARG1)
+#define SYSCALL_ARG2(regs) ((regs).vex.VGP_SYSCALL_ARG2)
+#define SYSCALL_ARG3(regs) ((regs).vex.VGP_SYSCALL_ARG3)
+#define SYSCALL_ARG4(regs) ((regs).vex.VGP_SYSCALL_ARG4)
+#define SYSCALL_ARG5(regs) ((regs).vex.VGP_SYSCALL_ARG5)
+#define SYSCALL_ARG6(regs) ((regs).vex.VGP_SYSCALL_ARG6)
+#define SYSCALL_RET(regs) ((regs).vex.VGP_SYSCALL_RET)
// Offsets for the shadow state
-#define O_SYSCALL_NUM (offsetof(VexGuestArchState, PLATFORM_SYSCALL_NUM))
-#define O_SYSCALL_ARG1 (offsetof(VexGuestArchState, PLATFORM_SYSCALL_ARG1))
-#define O_SYSCALL_ARG2 (offsetof(VexGuestArchState, PLATFORM_SYSCALL_ARG2))
-#define O_SYSCALL_ARG3 (offsetof(VexGuestArchState, PLATFORM_SYSCALL_ARG3))
-#define O_SYSCALL_ARG4 (offsetof(VexGuestArchState, PLATFORM_SYSCALL_ARG4))
-#define O_SYSCALL_ARG5 (offsetof(VexGuestArchState, PLATFORM_SYSCALL_ARG5))
-#define O_SYSCALL_ARG6 (offsetof(VexGuestArchState, PLATFORM_SYSCALL_ARG6))
-#define O_SYSCALL_RET (offsetof(VexGuestArchState, PLATFORM_SYSCALL_RET))
+#define O_SYSCALL_NUM (offsetof(VexGuestArchState, VGP_SYSCALL_NUM))
+#define O_SYSCALL_ARG1 (offsetof(VexGuestArchState, VGP_SYSCALL_ARG1))
+#define O_SYSCALL_ARG2 (offsetof(VexGuestArchState, VGP_SYSCALL_ARG2))
+#define O_SYSCALL_ARG3 (offsetof(VexGuestArchState, VGP_SYSCALL_ARG3))
+#define O_SYSCALL_ARG4 (offsetof(VexGuestArchState, VGP_SYSCALL_ARG4))
+#define O_SYSCALL_ARG5 (offsetof(VexGuestArchState, VGP_SYSCALL_ARG5))
+#define O_SYSCALL_ARG6 (offsetof(VexGuestArchState, VGP_SYSCALL_ARG6))
+#define O_SYSCALL_RET (offsetof(VexGuestArchState, VGP_SYSCALL_RET))
struct SyscallTableEntry {
UInt *flags_ptr;
while (s && addr <= VG_(valgrind_last)) {
if (addr < s->addr) {
- PLATFORM_DO_MMAP(ret, addr, s->addr - addr, 0,
- VKI_MAP_FIXED | VKI_MAP_PRIVATE | VKI_MAP_ANONYMOUS,
- -1, 0);
+ VGP_DO_MMAP(ret, addr, s->addr - addr, 0,
+ VKI_MAP_FIXED | VKI_MAP_PRIVATE | VKI_MAP_ANONYMOUS,
+ -1, 0);
}
addr = s->addr + s->len;
i++;
}
if (addr <= VG_(valgrind_last)) {
- PLATFORM_DO_MMAP(ret, addr, VG_(valgrind_last) - addr + 1, 0,
- VKI_MAP_FIXED | VKI_MAP_PRIVATE | VKI_MAP_ANONYMOUS,
- -1, 0);
+ VGP_DO_MMAP(ret, addr, VG_(valgrind_last) - addr + 1, 0,
+ VKI_MAP_FIXED | VKI_MAP_PRIVATE | VKI_MAP_ANONYMOUS,
+ -1, 0);
}
}
{
Int ret;
- PLATFORM_DO_MMAP(ret, start, length, prot,
- flags & ~(VKI_MAP_NOSYMS|VKI_MAP_CLIENT),
- fd, offset);
+ VGP_DO_MMAP(ret, start, length, prot,
+ flags & ~(VKI_MAP_NOSYMS|VKI_MAP_CLIENT), fd, offset);
return ret;
}
/* Can't continue; must longjmp back to the scheduler and thus
enter the sighandler immediately. */
- LONGJMP(tst->sched_jmpbuf, True);
+ VGP_LONGJMP(tst->sched_jmpbuf, True);
}
}
do { \
ThreadState * volatile _qq_tst = VG_(get_ThreadState)(tid); \
\
- (jumped) = SETJMP(_qq_tst->sched_jmpbuf); \
+ (jumped) = VGP_SETJMP(_qq_tst->sched_jmpbuf); \
if ((jumped) == 0) { \
vg_assert(!_qq_tst->sched_jmpbuf_valid); \
_qq_tst->sched_jmpbuf_valid = True; \
VG_(message)(Vg_DebugMsg, "signal %d arrived ... si_code=%d, EIP=%p, eip=%p",
sigNo, info->si_code,
INSTR_PTR(VG_(threads)[tid].arch),
- UCONTEXT_INSTR_PTR(uc) );
+ VGP_UCONTEXT_INSTR_PTR(uc) );
}
vg_assert(sigNo >= 1 && sigNo <= VG_(max_signal));
sigNo, signame(sigNo));
buf[0] = 0;
- context_ip = UCONTEXT_INSTR_PTR(uc);
+ context_ip = VGP_UCONTEXT_INSTR_PTR(uc);
if (1 && !VG_(get_fnname)(context_ip, buf+2, sizeof(buf)-5)) {
Int len;
"si_code=%x Fault EIP: %p%s; Faulting address: %p",
info->si_code, context_ip, buf, info->_sifields._sigfault._addr);
VG_(message)(Vg_DebugMsg,
- " sp=%p\n", UCONTEXT_STACK_PTR(uc));
+ " sp=%p\n", VGP_UCONTEXT_STACK_PTR(uc));
if (0)
VG_(kill_self)(sigNo); /* generate a core dump */
tid = VG_(master_tid);
tst = VG_(get_ThreadState)(tid);
VG_(get_StackTrace2)(ips, VG_(clo_backtrace_size),
- UCONTEXT_INSTR_PTR(uc),
- UCONTEXT_FRAME_PTR(uc),
- UCONTEXT_STACK_PTR(uc),
+ VGP_UCONTEXT_INSTR_PTR(uc),
+ VGP_UCONTEXT_FRAME_PTR(uc),
+ VGP_UCONTEXT_STACK_PTR(uc),
(Addr)(tst->os_state.stack + tst->os_state.stacksize));
VG_(core_panic_at)("Killed by fatal signal", ips);
}
UInt a1, a2, a3, a4, a5, a6;
PRE_REG_READ1(long, "old_mmap", struct mmap_arg_struct *, args);
- PLATFORM_GET_MMAP_ARGS(tst, a1, a2, a3, a4, a5, a6);
+ VGP_GET_MMAP_ARGS(tst, a1, a2, a3, a4, a5, a6);
PRINT("old_mmap ( %p, %llu, %d, %d, %d, %d )",
a1, (ULong)a2, a3, a4, a5, a6 );
}
if (RES != -VKI_ENOMEM) {
- PLATFORM_DO_MMAP(RES, a1, a2, a3, a4, a5, a6);
+ VGP_DO_MMAP(RES, a1, a2, a3, a4, a5, a6);
SET_RESULT(RES);
if (!VG_(is_kerror)(RES)) {
------------------------------------------------------------------ */
// Accessors for the ThreadArchState
-#define PLATFORM_SYSCALL_NUM guest_EAX
-#define PLATFORM_SYSCALL_ARG1 guest_EBX
-#define PLATFORM_SYSCALL_ARG2 guest_ECX
-#define PLATFORM_SYSCALL_ARG3 guest_EDX
-#define PLATFORM_SYSCALL_ARG4 guest_ESI
-#define PLATFORM_SYSCALL_ARG5 guest_EDI
-#define PLATFORM_SYSCALL_ARG6 guest_EBP
-#define PLATFORM_SYSCALL_RET guest_EAX
+#define VGP_SYSCALL_NUM guest_EAX
+#define VGP_SYSCALL_ARG1 guest_EBX
+#define VGP_SYSCALL_ARG2 guest_ECX
+#define VGP_SYSCALL_ARG3 guest_EDX
+#define VGP_SYSCALL_ARG4 guest_ESI
+#define VGP_SYSCALL_ARG5 guest_EDI
+#define VGP_SYSCALL_ARG6 guest_EBP
+#define VGP_SYSCALL_RET guest_EAX
// Setting a syscall result
-#define PLATFORM_SET_SYSCALL_RESULT(regs, val) \
- ((regs).vex.guest_EAX = (val))
+#define VGP_SET_SYSCALL_RESULT(regs, val) ((regs).vex.guest_EAX = (val))
// Setting thread regs and shadow regs from within the core
#define SET_SYSCALL_RETVAL(zztid, zzval) \
ucontext stuff
------------------------------------------------------------------ */
-#define UCONTEXT_INSTR_PTR(uc) ((uc)->uc_mcontext.eip)
-#define UCONTEXT_STACK_PTR(uc) ((uc)->uc_mcontext.esp)
-#define UCONTEXT_FRAME_PTR(uc) ((uc)->uc_mcontext.ebp)
-#define UCONTEXT_SYSCALL_NUM(uc) ((uc)->uc_mcontext.eax)
-#define UCONTEXT_SYSCALL_RET(uc) ((uc)->uc_mcontext.eax)
+#define VGP_UCONTEXT_INSTR_PTR(uc) ((uc)->uc_mcontext.eip)
+#define VGP_UCONTEXT_STACK_PTR(uc) ((uc)->uc_mcontext.esp)
+#define VGP_UCONTEXT_FRAME_PTR(uc) ((uc)->uc_mcontext.ebp)
+#define VGP_UCONTEXT_SYSCALL_NUM(uc) ((uc)->uc_mcontext.eax)
+#define VGP_UCONTEXT_SYSCALL_RET(uc) ((uc)->uc_mcontext.eax)
/* ---------------------------------------------------------------------
mmap() stuff
------------------------------------------------------------------ */
-#define PLATFORM_DO_MMAP(ret, start, length, prot, flags, fd, offset) { \
+#define VGP_DO_MMAP(ret, start, length, prot, flags, fd, offset) { \
UWord __args[6]; \
\
__args[0] = (UWord)(start); \
ret = VG_(do_syscall1)(__NR_mmap, (UWord)(&(__args[0])) ); \
} while (0)
-#define PLATFORM_GET_MMAP_ARGS(tst, a1, a2, a3, a4, a5, a6) do {\
+#define VGP_GET_MMAP_ARGS(tst, a1, a2, a3, a4, a5, a6) do { \
UInt *arg_block = (UInt*)SYSCALL_ARG1(tst->arch); \
PRE_MEM_READ( "old_mmap(args)", (Addr)arg_block, 6*sizeof(UWord) );\
a1 = arg_block[0]; \
state, but does need to pass though "val". */
#include <setjmp.h> /* for jmp_buf */
-#define SETJMP(env) setjmp(env)
-#define LONGJMP(env, val) longjmp(env, val)
+#define VGP_SETJMP(env) setjmp(env)
+#define VGP_LONGJMP(env, val) longjmp(env, val)
#endif // __X86_LINUX_CORE_PLATFORM_H
ThreadState *tst = VG_(get_ThreadState)(tid);
ThreadArchState *th_regs = &tst->arch;
- Word eip = UCONTEXT_INSTR_PTR(uc);
+ Word eip = VGP_UCONTEXT_INSTR_PTR(uc);
if (debug)
VG_(printf)("interrupted_syscall: eip=%p; restart=%d eax=%d\n",
- eip, restart, UCONTEXT_SYSCALL_NUM(uc));
+ eip, restart, VGP_UCONTEXT_SYSCALL_NUM(uc));
if (eip < VGA_(blksys_setup) || eip >= VGA_(blksys_finished)) {
VG_(printf)(" not in syscall (%p - %p)\n", VGA_(blksys_setup), VGA_(blksys_finished));
if (restart)
VGA_(restart_syscall)(th_regs);
else {
- th_regs->vex.PLATFORM_SYSCALL_RET = -VKI_EINTR;
+ th_regs->vex.VGP_SYSCALL_RET = -VKI_EINTR;
VG_(post_syscall)(tid);
}
} else if (eip >= VGA_(blksys_complete) && eip < VGA_(blksys_committed)) {
The saved real CPU %eax has the result, which we need to move
to EAX. */
if (debug)
- VG_(printf)(" completed: ret=%d\n", UCONTEXT_SYSCALL_RET(uc));
- th_regs->vex.PLATFORM_SYSCALL_RET = UCONTEXT_SYSCALL_RET(uc);
+ VG_(printf)(" completed: ret=%d\n", VGP_UCONTEXT_SYSCALL_RET(uc));
+ th_regs->vex.VGP_SYSCALL_RET = VGP_UCONTEXT_SYSCALL_RET(uc);
VG_(post_syscall)(tid);
} else if (eip >= VGA_(blksys_committed) && eip < VGA_(blksys_finished)) {
/* Result committed, but the signal mask has not been restored;
*/
VGA_(setup_child)( &ctst->arch, &ptst->arch );
- PLATFORM_SET_SYSCALL_RESULT(ctst->arch, 0);
+ VGP_SET_SYSCALL_RESULT(ctst->arch, 0);
if (esp != 0)
ctst->arch.vex.guest_ESP = esp;