diff options
Diffstat (limited to 'sys/contrib/ia64/libuwx/test/dumpmyself.c')
-rw-r--r-- | sys/contrib/ia64/libuwx/test/dumpmyself.c | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/sys/contrib/ia64/libuwx/test/dumpmyself.c b/sys/contrib/ia64/libuwx/test/dumpmyself.c deleted file mode 100644 index c2b63d0..0000000 --- a/sys/contrib/ia64/libuwx/test/dumpmyself.c +++ /dev/null @@ -1,106 +0,0 @@ -#include "uwx.h" -#include "uwx_self.h" - -struct uwx_env *uenv; -struct uwx_self_info *cbinfo; - -extern int uwx_get_frame_info(struct uwx_env *uenv); - -extern void dump_context(uint64_t *context); - -extern void prime_registers(); - -int main(int argc, char **argv) -{ - int status; - unsigned int *wp; - uenv = uwx_init(); - printf("uwx_init returned %08x\n", uenv); - cbinfo = uwx_self_init_info(uenv); - status = uwx_register_callbacks( - uenv, - (intptr_t)cbinfo, - uwx_self_copyin, - uwx_self_lookupip); - printf("uwx_register_callbacks returned %d\n", status); - uwx_self_init_context(uenv); - printf("In main():\n"); - dump_context((uint64_t *)uenv); - prime_registers(); - uwx_free(uenv); - return 0; -} - -int func1(void) -{ - uwx_self_init_context(uenv); - printf("In func1():\n"); - dump_context((uint64_t *)uenv); - return func2(); -} - -int func2(void) -{ - uwx_self_init_context(uenv); - printf("In func2():\n"); - dump_context((uint64_t *)uenv); - return func3(); -} - -int func3(void) -{ - uwx_self_init_context(uenv); - printf("In func3():\n"); - dump_context((uint64_t *)uenv); - return func4(); -} - -int func4(void) -{ - int status; - int foo[10]; - uint64_t *p; - uint64_t disp; - uint64_t val; - - func5(foo); - uwx_self_init_context(uenv); - uwx_init_history(uenv); - printf("In func4():\n"); - dump_context((uint64_t *)uenv); - for (;;) { - status = uwx_step(uenv); - if (status != UWX_OK) { - printf("uwx_step returned %d\n", status); - break; - } - status = uwx_get_reg(uenv, UWX_REG_PFS, &val); - if (status != UWX_OK) { - printf("uwx_get_reg returned %d\n", status); - break; - } - printf("After step:\n"); - dump_context((uint64_t *)uenv); - status = uwx_get_spill_loc(uenv, UWX_REG_IP, &disp); - if (status == UWX_OK) { - p = (uint64_t *)(disp & ~0x7LL); - if ((disp & 0x7) == UWX_DISP_RSTK(0)) - printf("IP spilled to backing store %08x = %08x\n", - (int)p, (int)(*p)); - else if ((disp & 0x7) == UWX_DISP_MSTK(0)) - printf("IP spilled to mem stack %08x = %08x\n", - (int)p, (int)(*p)); - else if ((disp & 0x7) == UWX_DISP_REG(0)) - printf("IP found in register %08x\n", (int)disp >> 4); - else - printf("IP history not available\n"); - } - } - return 0; -} - -int func5(int *foo) -{ - foo[0] = 0; - return 0; -} |