comparison lisp/progmodes/gdb-ui.el @ 94336:4d089dfae3b1

(gdb-invalidate-assembler): Compare numeric value of addresses rather than (partial) string value. (gdb-frame-handler): Change regexp according to above change.
author Nick Roberts <nickrob@snap.net.nz>
date Thu, 24 Apr 2008 22:26:38 +0000
parents ca9efc5939fc
children bac78d3bb2ee
comparison
equal deleted inserted replaced
94335:a12da5df4d6a 94336:4d089dfae3b1
3536 (progn 3536 (progn
3537 (unless (and gdb-selected-frame 3537 (unless (and gdb-selected-frame
3538 (string-equal gdb-selected-frame gdb-previous-frame)) 3538 (string-equal gdb-selected-frame gdb-previous-frame))
3539 (if (or (not (member 'gdb-invalidate-assembler 3539 (if (or (not (member 'gdb-invalidate-assembler
3540 gdb-pending-triggers)) 3540 gdb-pending-triggers))
3541 (not (string-equal gdb-pc-address 3541 (not (equal (string-to-number gdb-pc-address)
3542 gdb-previous-frame-pc-address))) 3542 (string-to-number
3543 gdb-previous-frame-pc-address))))
3543 (progn 3544 (progn
3544 ;; take previous disassemble command, if any, off the queue 3545 ;; take previous disassemble command, if any, off the queue
3545 (with-current-buffer gud-comint-buffer 3546 (with-current-buffer gud-comint-buffer
3546 (let ((queue gdb-input-queue)) 3547 (let ((queue gdb-input-queue))
3547 (dolist (item queue) 3548 (dolist (item queue)
3548 (if (equal (cdr item) '(gdb-assembler-handler)) 3549 (if (equal (cdr item) '(gdb-assembler-handler))
3549 (setq gdb-input-queue 3550 (setq gdb-input-queue
3550 (delete item gdb-input-queue)))))) 3551 (delete item gdb-input-queue))))))
3551 (gdb-enqueue-input 3552 (gdb-enqueue-input
3552 (list 3553 (list
3553 (concat gdb-server-prefix "disassemble " 3554 (concat gdb-server-prefix "disassemble " gdb-pc-address "\n")
3554 (if (member gdb-pc-address '(nil "main")) nil "0x")
3555 gdb-pc-address "\n")
3556 'gdb-assembler-handler)) 3555 'gdb-assembler-handler))
3557 (push 'gdb-invalidate-assembler gdb-pending-triggers) 3556 (push 'gdb-invalidate-assembler gdb-pending-triggers)
3558 (setq gdb-previous-frame-pc-address gdb-pc-address) 3557 (setq gdb-previous-frame-pc-address gdb-pc-address)
3559 (setq gdb-previous-frame gdb-selected-frame))))))) 3558 (setq gdb-previous-frame gdb-selected-frame)))))))
3560 3559
3577 (when (re-search-forward 3576 (when (re-search-forward
3578 "Stack level \\([0-9]+\\), frame at \\(0x[[:xdigit:]]+\\)" nil t) 3577 "Stack level \\([0-9]+\\), frame at \\(0x[[:xdigit:]]+\\)" nil t)
3579 (setq gdb-frame-number (match-string 1)) 3578 (setq gdb-frame-number (match-string 1))
3580 (setq gdb-frame-address (match-string 2))) 3579 (setq gdb-frame-address (match-string 2)))
3581 (goto-char (point-min)) 3580 (goto-char (point-min))
3582 (when (re-search-forward ".*=\\s-+0x0*\\(\\S-*\\)\\s-+in\\s-+\\(.*?\\)\ 3581 (when (re-search-forward ".*=\\s-+\\(\\S-*\\)\\s-+in\\s-+\\(.*?\\)\
3583 \\(?: (\\(\\S-+?\\):[0-9]+?)\\)*; " 3582 \\(?: (\\(\\S-+?\\):[0-9]+?)\\)*; "
3584 nil t) 3583 nil t)
3585 (setq gdb-selected-frame (match-string 2)) 3584 (setq gdb-selected-frame (match-string 2))
3586 (if (gdb-get-buffer 'gdb-locals-buffer) 3585 (if (gdb-get-buffer 'gdb-locals-buffer)
3587 (with-current-buffer (gdb-get-buffer 'gdb-locals-buffer) 3586 (with-current-buffer (gdb-get-buffer 'gdb-locals-buffer)