ref: 9645b04499cba95df390c2fc2dc2a6a999e8474c
parent: f0cd82006871d2aa9d2aa97f21c13c0bc9967052
author: spew <spew@cbza.org>
date: Fri Mar 14 19:15:39 EDT 2025
lsd: add bpdel
--- a/src/plan9/lsd.lsp
+++ b/src/plan9/lsd.lsp
@@ -65,21 +65,28 @@
(unless coref (error "not attached to proc"))
(apply readcore (cons (symbol-addr symbol) rest)))
-(def (bpset loc)
- (if (< pid 0) (error "no running process"))
- (let ((addr (cond ((sym? loc)
- (symbol-addr (get (global-text globals) loc)))
- ((num? loc)
- (u64 loc))
- (else (error "symbol or number")))))
- (unless (eq? (status) 'Stopped)
- (begin
- (princ "Waiting... " status "\n")
- (stop)))
- (if (has? bptbl addr)
- (error "breakpoint already set at " loc))
- (put! bptbl addr (readcore addr 'byte (length bpinst)))
- (writecore addr bpinst)))
+(let ((bp_init (λ (loc)
+ (if (< pid 0) (error "no running process"))
+ (unless (eq? (status) 'Stopped)
+ (begin (princ "Waiting... " status "\n")
+ (stop)))
+ (cond ((sym? loc) (unless (has? (global-text globals) loc)
+ (error "symbol " loc " not found"))
+ (symbol-addr (get (global-text globals) loc)))
+ ((num? loc) (u64 loc))
+ (else (error "symbol or number"))))))
+ (set! bpset (λ (loc)
+ (let ((addr (bp_init loc)))
+ (if (has? bptbl addr)
+ (error "breakpoint already set at " loc))
+ (put! bptbl addr (readcore addr 'byte (length bpinst)))
+ (writecore addr bpinst))))
+ (set! bpdel (λ (loc)
+ (let ((addr (bp_init loc)))
+ (unless (has? bptbl addr)
+ (error "breakpoint not set at " loc))
+ (writecore addr (get bptbl addr))
+ (del! bptbl addr)))))
(def (detach)
(if regsf (io-close regsf))