emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp ChangeLog progmodes/gdb-mi.el


From: Dmitry Dzhus
Subject: [Emacs-diffs] emacs/lisp ChangeLog progmodes/gdb-mi.el
Date: Tue, 11 Aug 2009 23:26:09 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Dmitry Dzhus <sphinx>   09/08/11 23:26:08

Modified files:
        lisp           : ChangeLog 
        lisp/progmodes : gdb-mi.el 

Log message:
        (gdb): Send -target-detach when buffer is killed (#3794).
        (gdb-starting): Moved -data-list-register-names...
        (gdb-stopped): ...here so it's sent when first thread stops.
        (gdb-registers-handler-custom): Do nothing if register names are
        unknown yet.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/ChangeLog?cvsroot=emacs&r1=1.15919&r2=1.15920
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/progmodes/gdb-mi.el?cvsroot=emacs&r1=1.33&r2=1.34

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.15919
retrieving revision 1.15920
diff -u -b -r1.15919 -r1.15920
--- ChangeLog   11 Aug 2009 13:53:10 -0000      1.15919
+++ ChangeLog   11 Aug 2009 23:26:04 -0000      1.15920
@@ -7,6 +7,11 @@
        (gdb-invalidate-disassembly): Do not refresh upon receiving
        'update signal. Instead, update all disassembly buffers only after
        threads list.
+       (gdb): Send -target-detach when buffer is killed (#3794).
+       (gdb-starting): Moved -data-list-register-names...
+       (gdb-stopped): ...here so it's sent when first thread stops.
+       (gdb-registers-handler-custom): Do nothing if register names are
+       unknown yet.
 
        * progmodes/gud.el (gud-stop-subjob): Rewritten without macros
        from `gdb-mi.el' to avoid extra tangling.

Index: progmodes/gdb-mi.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/progmodes/gdb-mi.el,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -b -r1.33 -r1.34
--- progmodes/gdb-mi.el 11 Aug 2009 13:53:14 -0000      1.33
+++ progmodes/gdb-mi.el 11 Aug 2009 23:26:08 -0000      1.34
@@ -749,7 +749,16 @@
   (local-set-key "\C-i" 'gud-gdb-complete-command)
   (setq gdb-first-prompt t)
   (setq gud-running nil)
+
   (gdb-update)
+
+  (add-hook
+   'kill-buffer-hook
+   (function
+    (lambda ()
+      (gdb-input (list "-target-detach" 'ignore))))
+   nil t)
+
   (run-hooks 'gdb-mode-hook))
             
 (defun gdb-init-1 ()
@@ -776,6 +785,7 @@
         gdb-buf-publisher '()
         gdb-threads-list '()
         gdb-breakpoints-list '()
+        gdb-register-names '()
         gdb-non-stop gdb-non-stop-setting)
   ;;
   (setq gdb-buffer-type 'gdbmi)
@@ -1854,8 +1864,6 @@
 
 (defun gdb-starting (output-field)
   ;; CLI commands don't emit ^running at the moment so use gdb-running too.
-  (gdb-input
-   (list "-data-list-register-names" 'gdb-register-names-handler))
   (setq gdb-inferior-status "running")
   (gdb-force-mode-line-update
    (propertize gdb-inferior-status 'face font-lock-type-face))
@@ -1876,6 +1884,13 @@
          (reason (gdb-get-field result 'reason))
          (thread-id (gdb-get-field result 'thread-id)))
 
+    ;; -data-list-register-names needs to be issued for any stopped
+    ;; thread
+    (when (not gdb-register-names)
+      (gdb-input
+       (list (concat "-data-list-register-names --thread " thread-id)
+             'gdb-register-names-handler)))
+
 ;;; Don't set gud-last-frame here as it's currently done in gdb-frame-handler
 ;;; because synchronous GDB doesn't give these fields with CLI.
 ;;;     (when file
@@ -3553,6 +3568,7 @@
  'gdb-invalidate-registers)
 
 (defun gdb-registers-handler-custom ()
+  (when gdb-register-names
   (let ((register-values (gdb-get-field (gdb-json-partial-output) 
'register-values))
         (table (make-gdb-table)))
     (dolist (register register-values)
@@ -3560,7 +3576,6 @@
              (value (gdb-get-field register 'value))
              (register-name (nth (string-to-number register-number) 
                                  gdb-register-names)))
-        (when register-name
         (gdb-table-add-row
          table
          (list
@@ -3570,8 +3585,8 @@
             value))
          `(mouse-face highlight
            help-echo "mouse-2: edit value"
-           gdb-register-name ,register-name)))))
-    (insert (gdb-table-string table " "))
+                        gdb-register-name ,register-name))))
+      (insert (gdb-table-string table " ")))
     (setq mode-name
           (gdb-current-context-mode-name "Registers"))))
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]