From: Julian Seward Date: Mon, 14 Feb 2005 00:17:49 +0000 (+0000) Subject: Print stats at exit, and minor changes X-Git-Tag: svn/VALGRIND_3_0_1^2~428 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=37ec6e8a69d8a004938a8b40ef4d661bfb54d39e;p=thirdparty%2Fvalgrind.git Print stats at exit, and minor changes git-svn-id: svn://svn.valgrind.org/vex/trunk@906 --- diff --git a/VEX/switchback/switchback.c b/VEX/switchback/switchback.c index e5e24b4c35..f617909fcb 100644 --- a/VEX/switchback/switchback.c +++ b/VEX/switchback/switchback.c @@ -25,28 +25,6 @@ Test file may not reference any other symbols. static Int n_bbs_done = 0; -/* For providing services. */ -static HWord serviceFn ( HWord arg1, HWord arg2 ) -{ - switch (arg1) { - case 0: /* EXIT */ - printf("---STOP---\n"); - printf("serviceFn:EXIT\n"); - printf("%d bbs simulated\n", n_bbs_done); - exit(0); - case 1: /* PUTC */ - putchar(arg2); - return 0; - case 2: /* MALLOC */ - return (HWord)malloc(arg2); - case 3: /* FREE */ - free((void*)arg2); - return 0; - default: - assert(0); - } -} - #if defined(__i386__) # define VexGuestState VexGuestX86State @@ -64,7 +42,7 @@ static HWord serviceFn ( HWord arg1, HWord arg2 ) # error "Unknown arch" #endif -#define TEST_FLAGS (1<<7) //|(1<<0) +#define TEST_FLAGS (1<<7)|(1<<3)|(1<<2)|(1<<1) //|(1<<0) /* guest state */ @@ -91,6 +69,31 @@ Int trans_table_used = 0; static Bool chase_into_not_ok ( Addr64 dst ) { return False; } +/* For providing services. */ +static HWord serviceFn ( HWord arg1, HWord arg2 ) +{ + switch (arg1) { + case 0: /* EXIT */ + printf("---STOP---\n"); + printf("serviceFn:EXIT\n"); + printf("%d bbs simulated\n", n_bbs_done); + printf("%d translations made, %d tt bytes\n", + trans_table_used, 8*trans_cache_used); + exit(0); + case 1: /* PUTC */ + putchar(arg2); + return 0; + case 2: /* MALLOC */ + return (HWord)malloc(arg2); + case 3: /* FREE */ + free((void*)arg2); + return 0; + default: + assert(0); + } +} + + /* -------------------- */ /* continue execution on the real CPU (never returns) */ extern void switchback_asm(void); @@ -277,7 +280,7 @@ void make_translation ( Addr64 guest_addr, Bool verbose ) NULL, /* instrument2 */ False, /* cleanup after instrument */ NULL, /* access checker */ - verbose ? TEST_FLAGS : 0 + verbose ? TEST_FLAGS : 0//(1<<3)|(1<<2) //0 ); assert(tres == VexTransOK); ws_needed = (trans_used+7) / 8; @@ -401,8 +404,9 @@ int main ( Int argc, HChar** argv ) } LibVEX_default_VexControl(&vcon); - vcon.guest_max_insns=1; + vcon.guest_max_insns=50; vcon.guest_chase_thresh=0; + LibVEX_Init( failure_exit, log_bytes, 1, False, &vcon ); LibVEX_Guest_initialise(&gst); @@ -424,7 +428,12 @@ int main ( Int argc, HChar** argv ) printf("\n---START---\n"); +#if 1 run_simulator(); +#else + ( (void(*)(HWord(*)(HWord,HWord))) entry ) (serviceFn); +#endif + return 0; }