* Entry point. */
| 25 | * Entry point. |
| 26 | */ |
| 27 | void entry(const struct STATE *state, const char *_asm) |
| 28 | { |
| 29 | static mutex_t mutex = MUTEX_INITIALIZER; |
| 30 | if (mutex_lock(&mutex) < 0) |
| 31 | return; |
| 32 | clearerr(stderr); |
| 33 | fprintf(stderr, RED "%.16lx" WHITE ": " GREEN "%s" WHITE "\n", |
| 34 | state->rip, _asm); |
| 35 | fprintf(stderr, "\t%rax = 0x%.16lx (%ld)\n", state->rax, state->rax); |
| 36 | fprintf(stderr, "\t%rcx = 0x%.16lx (%ld)\n", state->rcx, state->rcx); |
| 37 | fprintf(stderr, "\t%rdx = 0x%.16lx (%ld)\n", state->rdx, state->rdx); |
| 38 | fprintf(stderr, "\t%rbx = 0x%.16lx (%ld)\n", state->rbx, state->rbx); |
| 39 | fprintf(stderr, "\t%rsp = 0x%.16lx (%ld)\n", state->rsp, state->rsp); |
| 40 | fprintf(stderr, "\t%rbp = 0x%.16lx (%ld)\n", state->rbp, state->rbp); |
| 41 | fprintf(stderr, "\t%rsi = 0x%.16lx (%ld)\n", state->rsi, state->rsi); |
| 42 | fprintf(stderr, "\t%rdi = 0x%.16lx (%ld)\n", state->rdi, state->rdi); |
| 43 | fprintf(stderr, "\t%r8 = 0x%.16lx (%ld)\n", state->r8 , state->r8); |
| 44 | fprintf(stderr, "\t%r9 = 0x%.16lx (%ld)\n", state->r9 , state->r9); |
| 45 | fprintf(stderr, "\t%r10 = 0x%.16lx (%ld)\n", state->r10, state->r10); |
| 46 | fprintf(stderr, "\t%r11 = 0x%.16lx (%ld)\n", state->r11, state->r11); |
| 47 | fprintf(stderr, "\t%r12 = 0x%.16lx (%ld)\n", state->r12, state->r12); |
| 48 | fprintf(stderr, "\t%r13 = 0x%.16lx (%ld)\n", state->r13, state->r13); |
| 49 | fprintf(stderr, "\t%r14 = 0x%.16lx (%ld)\n", state->r14, state->r14); |
| 50 | fprintf(stderr, "\t%r15 = 0x%.16lx (%ld)\n", state->r15, state->r15); |
| 51 | fprintf(stderr, "\t%rflags = %c%c%c%c%c\n\n", |
| 52 | (state->rflags & SF? 'S': '-'), |
| 53 | (state->rflags & ZF? 'Z': '-'), |
| 54 | (state->rflags & AF? 'A': '-'), |
| 55 | (state->rflags & PF? 'P': '-'), |
| 56 | (state->rflags & CF? 'C': '-'), |
| 57 | (state->rflags & OF? 'O': '-')); |
| 58 | fflush(stderr); |
| 59 | mutex_unlock(&mutex); |
| 60 | } |
| 61 | |
| 62 | /* |
| 63 | * Init. |
nothing calls this directly
no test coverage detected