#include #include "minunit.h" #if __linux__ #include #ifndef offsetof #define offsetof(type, field) ((size_t) & ((type *)0)->field) #endif #endif //__linux__ bool test_rz_debug_use(void) { RzDebug *dbg; bool res; dbg = rz_debug_new(true); mu_assert_notnull(dbg, "rz_debug_new () failed"); res = rz_debug_use(dbg, "null"); mu_assert_eq(res, true, "rz_debug_use () failed"); rz_debug_free(dbg); mu_end; } bool test_rz_debug_reg_offset(void) { #if __linux__ #ifdef __x86_64__ #define FPREGS struct user_fpregs_struct FPREGS regs; mu_assert_eq(sizeof(regs.cwd), 2, "cwd size"); mu_assert_eq(offsetof(FPREGS, cwd), 0, "cwd offset"); mu_assert_eq(sizeof(regs.rip), 8, "rip size"); mu_assert_eq(offsetof(FPREGS, rip), 8, "rip offset"); mu_assert_eq(sizeof(regs.mxcsr), 4, "mxcsr size"); mu_assert_eq(offsetof(FPREGS, mxcsr), 24, "mxcsr offset"); mu_assert_eq(sizeof(regs.mxcr_mask), 4, "mxcr_mask size"); mu_assert_eq(offsetof(FPREGS, mxcr_mask), 28, "mxcr_mask offset"); mu_assert_eq(sizeof(regs.st_space[0]) * 2, 8, "st0 size"); mu_assert_eq(offsetof(FPREGS, st_space[0]), 32, "st0 offset"); mu_assert_eq(sizeof(regs.xmm_space[0]) * 4, 16, "xmm0 size"); mu_assert_eq(offsetof(FPREGS, xmm_space[0]), 160, "xmm0 offset"); mu_assert_eq(offsetof(FPREGS, padding[0]), 416, "x64"); #endif //__x86_64__ #endif //__linux__ mu_end; } int all_tests() { mu_run_test(test_rz_debug_use); mu_run_test(test_rz_debug_reg_offset); return tests_passed != tests_run; } mu_main(all_tests)