add some missing ops to DWARF assembler
authorTom Tromey <tromey@redhat.com>
Wed, 14 May 2014 19:46:37 +0000 (13:46 -0600)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Fri, 12 Dec 2014 21:24:17 +0000 (22:24 +0100)
This changes the DWARF assembler to allow comments in a location
expression, and also adds support for a few new opcodes I needed.

gdb/testsuite/ChangeLog
2014-12-12  Tom Tromey  <tromey@redhat.com>

* lib/dwarf.exp (_location): Ignore blank lines.  Allow comments.
Handle DW_OP_pick, DW_OP_skip, DW_OP_bra.

gdb/testsuite/ChangeLog
gdb/testsuite/lib/dwarf.exp

index 22f3ffc85b91ff8b989951bdee3c956fb30b8950..49833ef1b749bed231a1d30cca5af640f2dd1845 100644 (file)
@@ -1,3 +1,8 @@
+2014-12-12  Tom Tromey  <tromey@redhat.com>
+
+       * lib/dwarf.exp (_location): Ignore blank lines.  Allow comments.
+       Handle DW_OP_pick, DW_OP_skip, DW_OP_bra.
+
 2014-12-12  Doug Evans  <dje@google.com>
 
        * lib/gdb-python.exp (get_python_valueof): New function.
index 778ad1cf797046b4d35068c94d515921666f550a..72153ece64ce57df30929c86c4718f375ff9c072 100644 (file)
@@ -803,7 +803,8 @@ namespace eval Dwarf {
        variable _cu_offset_size
 
        foreach line [split $body \n] {
-           if {[lindex $line 0] == ""} {
+           # Ignore blank lines, and allow embedded comments.
+           if {[lindex $line 0] == "" || [regexp -- {^[ \t]*#} $line]} {
                continue
            }
            set opcode [_map_name [lindex $line 0] _OP]
@@ -814,6 +815,7 @@ namespace eval Dwarf {
                    _op .${_cu_addr_size}byte [lindex $line 1]
                }
 
+               DW_OP_pick -
                DW_OP_const1u -
                DW_OP_const1s {
                    _op .byte [lindex $line 1]
@@ -854,6 +856,11 @@ namespace eval Dwarf {
                    _op .uleb128 [lindex $line 2]
                }
 
+               DW_OP_skip -
+               DW_OP_bra {
+                   _op .2byte [lindex $line 1]
+               }
+
                DW_OP_GNU_implicit_pointer {
                    if {[llength $line] != 3} {
                        error "usage: DW_OP_GNU_implicit_pointer LABEL OFFSET"