Two fixes in dwarf-mode.el
This fixes a couple of small problems in dwarf-mode.el. First, I noticed that for an attribute like: <2><136c>: Abbrev Number: 11 (DW_TAG_member) <136d> DW_AT_name : t ... the "t" would not be font-locked using the function name face. The problem here is that the regexp assumed the indirect string format, like: <12ac> DW_AT_name : (indirect string, offset: 0x1b40): whatever Here the fix is to adjust the regexp to match both formats. Second, when following a DIE reference, point could end up on an attribute instead. This happens when there is a zero-length attribute with the same "offset" as the following DIE, like: <12c5> DW_AT_GNU_all_call_sites: 1 <2><12c5>: Abbrev Number: 5 (DW_TAG_formal_parameter) Here the fix is to search for the DIE by looking for the depth ("<2>" in the example) as well. I've bumped the internal version number to make it simpler to install this using the Emacs package facility. binutils/ChangeLog 2020-08-12 Tom Tromey <tromey@adacore.com> * dwarf-mode.el (Version): Now 1.6. (dwarf-die-button-action): Tighten DIE reference regexp. (dwarf-font-lock-keywords): Update name regexp.
This commit is contained in:
parent
404ec93359
commit
d3511b24ea
2 changed files with 13 additions and 5 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2020-08-12 Tom Tromey <tromey@adacore.com>
|
||||||
|
|
||||||
|
* dwarf-mode.el (Version): Now 1.6.
|
||||||
|
(dwarf-die-button-action): Tighten DIE reference regexp.
|
||||||
|
(dwarf-font-lock-keywords): Update name regexp.
|
||||||
|
|
||||||
2020-08-12 Nick Clifton <nickc@redhat.com>
|
2020-08-12 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
PR binutils/26331
|
PR binutils/26331
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
;;; dwarf-mode.el --- Browser for DWARF information. -*-lexical-binding:t-*-
|
;;; dwarf-mode.el --- Browser for DWARF information. -*-lexical-binding:t-*-
|
||||||
|
|
||||||
;; Version: 1.5
|
;; Version: 1.6
|
||||||
|
|
||||||
;; Copyright (C) 2012-2020 Free Software Foundation, Inc.
|
;; Copyright (C) 2012-2020 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
(defconst dwarf-font-lock-keywords
|
(defconst dwarf-font-lock-keywords
|
||||||
'(
|
'(
|
||||||
;; Name and linkage name.
|
;; Name and linkage name.
|
||||||
("DW_AT_[a-z_]*name\\s *: .*:\\(.*\\)\\s *$"
|
("DW_AT_[a-zA-Z_]*name\\s *:\\(?:\\s *(.*):\\)?\\s *\\(.*\\)\\s *$"
|
||||||
(1 font-lock-function-name-face))
|
(1 font-lock-function-name-face))
|
||||||
|
|
||||||
("Compilation Unit @ offset 0x[0-9a-f]+"
|
("Compilation Unit @ offset 0x[0-9a-f]+"
|
||||||
|
@ -120,9 +120,11 @@ A prefix argument means expand all children."
|
||||||
;; Either follows a DIE reference, or expands a "...".
|
;; Either follows a DIE reference, or expands a "...".
|
||||||
(defun dwarf-die-button-action (button)
|
(defun dwarf-die-button-action (button)
|
||||||
(let* ((die (button-get button 'die))
|
(let* ((die (button-get button 'die))
|
||||||
;; Note that the first number can only be decimal.
|
;; Note that the first number can only be decimal. It is
|
||||||
(die-rx (concat "^\\s *\\(<[0-9]+>\\)?<"
|
;; included in this search because otherwise following a ref
|
||||||
die ">[^<]"))
|
;; might lead to a zero-length boolean attribute in the
|
||||||
|
;; previous DIE.
|
||||||
|
(die-rx (concat "^\\s *<[0-9]+><" die ">:"))
|
||||||
(old (point))
|
(old (point))
|
||||||
(is-ref (button-get button 'die-ref)))
|
(is-ref (button-get button 'die-ref)))
|
||||||
(if is-ref
|
(if is-ref
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue