![](https://secure.gravatar.com/avatar/5634a99cd64dd70d4a6692c3031a1284.jpg?s=120&d=mm&r=g)
Raymond Toy pushed to branch issue-97-define-ud2-inst at cmucl / cmucl Commits: 62d67c1e by Raymond Toy at 2021-04-10T09:24:32-07:00 More cleanups When installing a breakpoint, we only need to save the single byte. When removing a breakpoint, we only need to restore the single byte. - - - - - 1 changed file: - src/lisp/x86-arch.c Changes: ===================================== src/lisp/x86-arch.c ===================================== @@ -213,17 +213,21 @@ arch_set_pseudo_atomic_interrupted(os_context_t * context) +/* + * Installs a breakpoint (INT3) at |pc|. We return the byte that was + * replaced by the int3 instruction. + */ unsigned long arch_install_breakpoint(void *pc) { unsigned char* ptr = (unsigned char *) pc; - unsigned long result = ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24); + unsigned long result = *ptr; DPRINTF(debug_handlers, (stderr, "arch_install_breakpoint at %p, old code = 0x%lx\n", pc, result)); - *(char *) pc = BREAKPOINT_INST; /* x86 INT3 */ + *ptr = BREAKPOINT_INST; /* x86 INT3 */ return result; } @@ -235,14 +239,9 @@ arch_remove_breakpoint(void *pc, unsigned long orig_inst) pc, orig_inst)); unsigned char *ptr = (unsigned char *) pc; /* - * Just restore all the bytes from orig_inst. Should we just - * re-install just the one byte that was taken by the int3 - * instruction? + * Just restore the byte from orig_inst. */ ptr[0] = orig_inst & 0xff; - ptr[1] = (orig_inst >> 8) & 0xff; - ptr[2] = (orig_inst >> 16) & 0xff; - ptr[3] = (orig_inst >> 24) & 0xff; } View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/62d67c1ed634686a0bc1ac58... -- View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/62d67c1ed634686a0bc1ac58... You're receiving this email because of your account on gitlab.common-lisp.net.
participants (1)
-
Raymond Toy