From: Julian Seward Date: Mon, 25 Oct 2004 15:34:19 +0000 (+0000) Subject: Use renamed and improved vex-supplied guest-state-handling fns. X-Git-Tag: svn/VALGRIND_3_0_1^2~909 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0612149a9afa8670752b936355833a04e200036f;p=thirdparty%2Fvalgrind.git Use renamed and improved vex-supplied guest-state-handling fns. git-svn-id: svn://svn.valgrind.org/vex/trunk@425 --- diff --git a/VEX/head20041019/coregrind/x86/signal.c b/VEX/head20041019/coregrind/x86/signal.c index 053ab598d4..f91670957e 100644 --- a/VEX/head20041019/coregrind/x86/signal.c +++ b/VEX/head20041019/coregrind/x86/signal.c @@ -144,7 +144,7 @@ static void synth_ucontext(ThreadId tid, const vki_ksiginfo_t *si, SC2(eip,EIP); SC2(cs,CS); - sc->eflags = vex_to_eflags(&tst->arch.vex); + sc->eflags = LibVEX_GuestX86_get_eflags(&tst->arch.vex); SC2(ss,SS); /* XXX esp_at_signal */ /* XXX trapno */ @@ -334,7 +334,7 @@ Int VGA_(pop_signal_frame)(ThreadId tid) void VGA_(fill_elfregs_from_BB)(struct user_regs_struct* regs) { - regs->eflags = vex_to_eflags(BASEBLOCK_VEX); + regs->eflags = LibVEX_GuestX86_get_eflags(BASEBLOCK_VEX); regs->esp = BASEBLOCK_VEX->guest_ESP; regs->eip = BASEBLOCK_VEX->guest_EIP; @@ -358,7 +358,7 @@ void VGA_(fill_elfregs_from_BB)(struct user_regs_struct* regs) void VGA_(fill_elfregs_from_tst)(struct user_regs_struct* regs, arch_thread_t* arch) { - regs->eflags = vex_to_eflags(&arch->vex); + regs->eflags = LibVEX_GuestX86_get_eflags(&arch->vex); regs->esp = arch->vex.guest_ESP; regs->eip = arch->vex.guest_EIP; diff --git a/VEX/head20041019/coregrind/x86/state.c b/VEX/head20041019/coregrind/x86/state.c index 2dfc316046..f5ff61951b 100644 --- a/VEX/head20041019/coregrind/x86/state.c +++ b/VEX/head20041019/coregrind/x86/state.c @@ -112,33 +112,13 @@ void VGA_(init_low_baseBlock) ( Addr client_eip, Addr esp_at_startup ) /* WORD offsets in this column */ VGOFF_(m_vex) = VG_(alloc_BaB)( (3 + sizeof(VexGuestX86State)) / 4 ); - /* Set up the new vex integer state in a marginally safe way. */ + /* Zero out the initial state, and set up the simulated FPU in a + sane way. */ + LibVEX_GuestX86_initialise(BASEBLOCK_VEX); + + /* Put essential stuff into the new state. */ BASEBLOCK_VEX->guest_ESP = esp_at_startup; BASEBLOCK_VEX->guest_EIP = client_eip; - BASEBLOCK_VEX->guest_CC_OP = 0; /* CC_OP_COPY */ - BASEBLOCK_VEX->guest_CC_SRC = 0; - BASEBLOCK_VEX->guest_CC_DST = 0; - - BASEBLOCK_VEX->guest_EAX = BASEBLOCK_VEX->guest_EBX - = BASEBLOCK_VEX->guest_ECX - = BASEBLOCK_VEX->guest_EDX - = BASEBLOCK_VEX->guest_ESI - = BASEBLOCK_VEX->guest_EDI - = BASEBLOCK_VEX->guest_EBP - = 0; - - BASEBLOCK_VEX->guest_DFLAG = 1; /* forwards */ - - BASEBLOCK_VEX->guest_CS = BASEBLOCK_VEX->guest_DS - = BASEBLOCK_VEX->guest_ES - = BASEBLOCK_VEX->guest_FS - = BASEBLOCK_VEX->guest_GS - = BASEBLOCK_VEX->guest_SS - = 0; - - /* set up an initial FPU state (doesn't really matter what it is, - so long as it's somewhat valid) */ - vex_initialise_x87(BASEBLOCK_VEX); if (VG_(needs).shadow_regs) { /* 9 */ VGOFF_(sh_eax) = VG_(alloc_BaB_1_set)(0); @@ -491,7 +471,7 @@ Int VGA_(ptrace_setregs_from_BB)(Int pid) regs.edi = BASEBLOCK_VEX->guest_EDI; regs.ebp = BASEBLOCK_VEX->guest_EBP; regs.esp = BASEBLOCK_VEX->guest_ESP; - regs.eflags = vex_to_eflags(BASEBLOCK_VEX); + regs.eflags = LibVEX_GuestX86_get_eflags(BASEBLOCK_VEX); regs.eip = BASEBLOCK_VEX->guest_EIP; return ptrace(PTRACE_SETREGS, pid, NULL, ®s); @@ -515,7 +495,7 @@ Int VGA_(ptrace_setregs_from_tst)(Int pid, arch_thread_t* arch) regs.edi = arch->vex.guest_EDI; regs.ebp = arch->vex.guest_EBP; regs.esp = arch->vex.guest_ESP; - regs.eflags = vex_to_eflags(&arch->vex); + regs.eflags = LibVEX_GuestX86_get_eflags(&arch->vex); regs.eip = arch->vex.guest_EIP; return ptrace(PTRACE_SETREGS, pid, NULL, ®s);