Treat attributes as code in DWARF assembler

The DWARF assembler treats the 'children' of a DIE as plain Tcl code,
evaluating it in the parent context.

I don't recall why, but when I wrote this code, I didn't do the same
thing for the attributes.  Instead, there I implemented a special
syntax.  I was looking at this today and wondered why I didn't just
use ordinary evaluation as well.

This patch implements this idea.  Attributes are now evaluated as
plain code.  This is a bit less "magical", is slightly shorter due to
lack of braces, and most importantly now allows comments in the
attributes section.

Note that some [subst {}] calls had to be added.  This could be fixed
by changing DWARF expressions to also be plain Tcl code.  I think that
would be a good idea, but I didn't want to tack it on here.

This patch requires the full ("DW_AT_...") name for attributes.  I did
this to avoid any possibility of name clashes.  I've long considered
that my original decision to allow short names for tags and attributes
was a mistake.  It's worth noting that many existing tests already
used the long names here.

Most of this patch was written by script.  The main changes are in
dwarf.exp, but as noted, there were some minor fixups needed in some
tests.

Also, after committing, 'git show' indicated some whitespace issues,
so I've gone through and "tabified" some things, which is why the
patch might be otherwise larger than it should be.  (This was
discussed a bit during the v1 submission.)

v1 was here:

https://inbox.sourceware.org/gdb-patches/20250530183845.2179955-1-tromey@adacore.com/

In v2 I've rebased and fixed up various tests that either changed or
were added since v1.

Regression tested on x86-64 Fedora 41.

Approved-By: Simon Marchi <simon.marchi@efficios.com>



diff --git a/gdb/testsuite/gdb.base/until-trailing-insns.exp b/gdb/testsuite/gdb.base/until-trailing-insns.exp
index a3701f2..cc28adc 100644
--- a/gdb/testsuite/gdb.base/until-trailing-insns.exp
+++ b/gdb/testsuite/gdb.base/until-trailing-insns.exp
@@ -100,16 +100,16 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name until-trailing-isns.c}
-	    {stmt_list $L DW_FORM_sec_offset}
-	    {low_pc 0 addr}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name until-trailing-isns.c
+	    DW_AT_stmt_list $L DW_FORM_sec_offset
+	    DW_AT_low_pc 0 addr
 	} {
 	    subprogram {
-		{external 1 flag}
-		{name main}
-		{low_pc $main_start addr}
-		{high_pc $main_len DW_FORM_data4}
+		DW_AT_external 1 flag
+		DW_AT_name main
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc $main_len DW_FORM_data4
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.compile/compile-ops.exp b/gdb/testsuite/gdb.compile/compile-ops.exp
index 410d5a4..9633551 100644
--- a/gdb/testsuite/gdb.compile/compile-ops.exp
+++ b/gdb/testsuite/gdb.compile/compile-ops.exp
@@ -375,36 +375,36 @@
 	declare_labels int_label
 
 	compile_unit {
-	    {name file1.txt}
-	    {language @DW_LANG_C}
-	    {low_pc $func_start addr}
-	    {high_pc $func_end addr}
+	    DW_AT_name file1.txt
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_low_pc $func_start addr
+	    DW_AT_high_pc $func_end addr
 	} {
 	    global program
 
 	    int_label: base_type {
-		{name int}
-		{byte_size 4 sdata}
-		{encoding @DW_ATE_signed}
+		DW_AT_name int
+		DW_AT_byte_size 4 sdata
+		DW_AT_encoding @DW_ATE_signed
 	    }
 
 	    subprogram {
-		{external 1 flag}
-		{name func}
-		{low_pc $func_start addr}
-		{high_pc $func_end addr}
+		DW_AT_external 1 flag
+		DW_AT_name func
+		DW_AT_low_pc $func_start addr
+		DW_AT_high_pc $func_end addr
 	    } {
 		formal_parameter {
-		    {name param}
-		    {variable_parameter 1 flag}
-		    {type :$int_label}
-		    {location $program SPECIAL_expr}
+		    DW_AT_name param
+		    DW_AT_variable_parameter 1 flag
+		    DW_AT_type :$int_label
+		    DW_AT_location $program SPECIAL_expr
 		}
 
 		formal_parameter {
-		    {name optimized_out}
-		    {variable_parameter 1 flag}
-		    {type :$int_label}
+		    DW_AT_name optimized_out
+		    DW_AT_variable_parameter 1 flag
+		    DW_AT_type :$int_label
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.cp/call-method-register.exp b/gdb/testsuite/gdb.cp/call-method-register.exp
index dfd3ce0..b736312 100644
--- a/gdb/testsuite/gdb.cp/call-method-register.exp
+++ b/gdb/testsuite/gdb.cp/call-method-register.exp
@@ -45,59 +45,59 @@
 
     cu {} {
 	compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
-	    {DW_AT_name	    $::srcfile}
-	    {DW_AT_comp_dir /tmp}
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name	    $::srcfile
+	    DW_AT_comp_dir /tmp
 	} {
 	    declare_labels int_type_label struct_type_label \
 		struct_ptr_type_label
 	    set ptr_size [get_sizeof "void *" 96]
 
 	    DW_TAG_subprogram {
-		{name main}
-		{low_pc $main_start addr}
-		{high_pc $main_length data8}
-		{DW_AT_type :$int_type_label}
+		DW_AT_name main
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc $main_length data8
+		DW_AT_type :$int_type_label
 	    }
 
 	    int_type_label: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_name int}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name int
 	    }
 
 	    struct_type_label: DW_TAG_structure_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_name small}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_name small
 	    } {
 		member {
-		    {name xxx}
-		    {type :$int_type_label}
-		    {data_member_location 0 data1}
+		    DW_AT_name xxx
+		    DW_AT_type :$int_type_label
+		    DW_AT_data_member_location 0 data1
 		}
 		subprogram {
-		    {name yyy}
-		    {type :$int_type_label}
+		    DW_AT_name yyy
+		    DW_AT_type :$int_type_label
 		} {
 		    formal_parameter {
-			{type :$struct_ptr_type_label}
-			{artificial 1 flag_present}
+			DW_AT_type :$struct_ptr_type_label
+			DW_AT_artificial 1 flag_present
 		    }
 		}
 	    }
 
 	    struct_ptr_type_label: DW_TAG_pointer_type {
-		{DW_AT_byte_size $ptr_size DW_FORM_data1}
-		{type :$struct_type_label}
+		DW_AT_byte_size $ptr_size DW_FORM_data1
+		DW_AT_type :$struct_type_label
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name global_var}
-		{DW_AT_type :$struct_type_label}
-		{DW_AT_location {
+		DW_AT_name global_var
+		DW_AT_type :$struct_type_label
+		DW_AT_location {
 		    DW_OP_reg0
-		} SPECIAL_expr}
-		{external 1 flag}
+		} SPECIAL_expr
+		DW_AT_external 1 flag
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.cp/incomplete-type-overload.exp b/gdb/testsuite/gdb.cp/incomplete-type-overload.exp
index aa51fd9..aa582e0 100644
--- a/gdb/testsuite/gdb.cp/incomplete-type-overload.exp
+++ b/gdb/testsuite/gdb.cp/incomplete-type-overload.exp
@@ -57,105 +57,109 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
-	    {name $srcfile}
-	    {stmt_list $L DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name $srcfile
+	    DW_AT_stmt_list $L DW_FORM_sec_offset
 	} {
 	    declare_labels int_label base_label complete_label incomplete_label
 	    declare_labels ptr_base_label ptr_inc_label ptr_comp_label ptr_int_label
 
 	    int_label: DW_TAG_base_type {
-		{DW_AT_byte_size $int_size DW_FORM_sdata}
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_name "int"}
+		DW_AT_byte_size $int_size DW_FORM_sdata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name "int"
 	    }
 
 	    base_label: DW_TAG_class_type {
-		{DW_AT_byte_size $struct_base_size DW_FORM_sdata}
-		{DW_AT_name "base"}
+		DW_AT_byte_size $struct_base_size DW_FORM_sdata
+		DW_AT_name "base"
 	    } {
 		DW_TAG_member {
-		    {DW_AT_name "member"}
-		    {DW_AT_type :$int_label}
-		    {DW_AT_data_member_location 0 DW_FORM_sdata}
+		    DW_AT_name "member"
+		    DW_AT_type :$int_label
+		    DW_AT_data_member_location 0 DW_FORM_sdata
 		}
 	    }
 
 	    complete_label: DW_TAG_class_type {
-		{DW_AT_byte_size $struct_complete_size DW_FORM_sdata}
-		{DW_AT_name "complete"}
+		DW_AT_byte_size $struct_complete_size DW_FORM_sdata
+		DW_AT_name "complete"
 	    } {
 		DW_TAG_inheritance {
-		    {DW_AT_type :$base_label}
-		    {DW_AT_data_member_location 0 DW_FORM_sdata}
-		    {DW_AT_accessibility 1 DW_FORM_data1}
+		    DW_AT_type :$base_label
+		    DW_AT_data_member_location 0 DW_FORM_sdata
+		    DW_AT_accessibility 1 DW_FORM_data1
 		}
 	    }
 
 	    incomplete_label: DW_TAG_class_type {
-		{DW_AT_name "incomplete"}
-		{DW_AT_declaration 1 DW_FORM_flag_present}
+		DW_AT_name "incomplete"
+		DW_AT_declaration 1 DW_FORM_flag_present
 	    }
 
 	    ptr_base_label: DW_TAG_pointer_type {
-		{DW_AT_byte_size $addr_size DW_FORM_udata}
-		{DW_AT_type :$base_label}
+		DW_AT_byte_size $addr_size DW_FORM_udata
+		DW_AT_type :$base_label
 	    }
 
 	    ptr_inc_label: DW_TAG_pointer_type {
-		{DW_AT_byte_size $addr_size DW_FORM_udata}
-		{DW_AT_type :$incomplete_label}
+		DW_AT_byte_size $addr_size DW_FORM_udata
+		DW_AT_type :$incomplete_label
 	    }
 
 	    ptr_comp_label: DW_TAG_pointer_type {
-		{DW_AT_byte_size $addr_size DW_FORM_udata}
-		{DW_AT_type :$complete_label}
+		DW_AT_byte_size $addr_size DW_FORM_udata
+		DW_AT_type :$complete_label
 	    }
 
 	    ptr_int_label: DW_TAG_pointer_type {
-		{DW_AT_byte_size $addr_size DW_FORM_udata}
-		{DW_AT_type :$int_label}
+		DW_AT_byte_size $addr_size DW_FORM_udata
+		DW_AT_type :$int_label
 	    }
 
 	DW_TAG_variable {
-	    {DW_AT_name "comp"}
-	    {DW_AT_type :$complete_label}
-	    {DW_AT_location {DW_OP_addr [gdb_target_symbol "comp"]} SPECIAL_expr}
-	    {DW_AT_external 1 DW_FORM_flag}
+	    DW_AT_name "comp"
+	    DW_AT_type :$complete_label
+	    DW_AT_location [subst {DW_OP_addr [gdb_target_symbol "comp"]}] \
+		SPECIAL_expr
+	    DW_AT_external 1 DW_FORM_flag
 	}
 
 	DW_TAG_variable {
-	    {DW_AT_name "cp"}
-	    {DW_AT_type :$ptr_comp_label}
-	    {DW_AT_location {DW_OP_addr [gdb_target_symbol "cp"]} SPECIAL_expr}
-	    {DW_AT_external 1 DW_FORM_flag}
+	    DW_AT_name "cp"
+	    DW_AT_type :$ptr_comp_label
+	    DW_AT_location [subst {DW_OP_addr [gdb_target_symbol "cp"]}] \
+		SPECIAL_expr
+	    DW_AT_external 1 DW_FORM_flag
 	}
 
 	DW_TAG_variable {
-	    {DW_AT_name "inc"}
-	    {DW_AT_type :$ptr_inc_label}
-	    {DW_AT_location {DW_OP_addr [gdb_target_symbol "inc"]} SPECIAL_expr}
-	    {DW_AT_external 1 DW_FORM_flag}
+	    DW_AT_name "inc"
+	    DW_AT_type :$ptr_inc_label
+	    DW_AT_location [subst {DW_OP_addr [gdb_target_symbol "inc"]}] \
+		SPECIAL_expr
+	    DW_AT_external 1 DW_FORM_flag
 	}
 
 	DW_TAG_variable {
-	    {DW_AT_name "ip"}
-	    {DW_AT_type :$ptr_int_label}
-	    {DW_AT_location {DW_OP_addr [gdb_target_symbol "ip"]} SPECIAL_expr}
-	    {DW_AT_external 1 DW_FORM_flag}
+	    DW_AT_name "ip"
+	    DW_AT_type :$ptr_int_label
+	    DW_AT_location [subst {DW_OP_addr [gdb_target_symbol "ip"]}] \
+		SPECIAL_expr
+	    DW_AT_external 1 DW_FORM_flag
 	}
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func {"main"}}
-		{DW_AT_external 1 flag}
+		MACRO_AT_func {"main"}
+		DW_AT_external 1 flag
 	    }
 	    DW_TAG_subprogram {
-		{MACRO_AT_func {"foo"}}
-		{DW_AT_type :$int_label}
-		{DW_AT_external 1 flag}
+		MACRO_AT_func {"foo"}
+		DW_AT_type :$int_label
+		DW_AT_external 1 flag
 	    } { formal_parameter {
-		    {DW_AT_name "b"}
-		    {DW_AT_type :$ptr_base_label}
+		    DW_AT_name "b"
+		    DW_AT_type :$ptr_base_label
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.cp/nsalias.exp b/gdb/testsuite/gdb.cp/nsalias.exp
index a145410..7ad2da8 100644
--- a/gdb/testsuite/gdb.cp/nsalias.exp
+++ b/gdb/testsuite/gdb.cp/nsalias.exp
@@ -56,111 +56,113 @@
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
     cu {} {
-	compile_unit {{language @DW_LANG_C_plus_plus}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C_plus_plus
+	} {
 	    declare_labels int_label outer_label inner_label innermost_label
 	    declare_labels im_foo_label i_foo_label o_foo_label
 	    declare_labels OuterInner_label oi1_label oi2_label
 
 	    int_label: base_type {
-		{name int}
-		{encoding @DW_ATE_signed}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name int
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    }
 
 	    outer_label: DW_TAG_namespace {
-		{name outer}
+		DW_AT_name outer
 	    } {
 		inner_label: DW_TAG_namespace {
-		    {name inner}
+		    DW_AT_name inner
 		} {
 		    innermost_label: DW_TAG_namespace {
-			{name innermost}
+			DW_AT_name innermost
 		    } {
 			DW_TAG_variable {
-			    {name x}
-			    {type :$int_label}
-			    {const_value 2 DW_FORM_data1}
+			    DW_AT_name x
+			    DW_AT_type :$int_label
+			    DW_AT_const_value 2 DW_FORM_data1
 			}
 
 			im_foo_label: DW_TAG_subprogram {
-			    {name foo}
-			    {external 1 flag_present}
-			    {declaration 1 flag_present}
+			    DW_AT_name foo
+			    DW_AT_external 1 flag_present
+			    DW_AT_declaration 1 flag_present
 			}
 		    }
 
 		    imported_declaration {
-			{name Innermost}
-			{import :$innermost_label}
+			DW_AT_name Innermost
+			DW_AT_import :$innermost_label
 		    }
 
 		    DW_TAG_variable {
-			{name x}
-			{type :$int_label}
-			{const_value 1 DW_FORM_data1}
+			DW_AT_name x
+			DW_AT_type :$int_label
+			DW_AT_const_value 1 DW_FORM_data1
 		    }
 
 		    i_foo_label: subprogram {
-			{name foo}
-			{external 1 flag_present}
-			{declaration 1 flag_present}
+			DW_AT_name foo
+			DW_AT_external 1 flag_present
+			DW_AT_declaration 1 flag_present
 		    }
 		}
 
 		OuterInner_label: imported_declaration {
-		    {name Inner}
-		    {import :$inner_label}
+		    DW_AT_name Inner
+		    DW_AT_import :$inner_label
 		}
 
 		DW_TAG_variable {
-		    {name x}
-		    {type :$int_label}
-		    {const_value 0 DW_FORM_data1}
+		    DW_AT_name x
+		    DW_AT_type :$int_label
+		    DW_AT_const_value 0 DW_FORM_data1
 		}
 
 		o_foo_label: subprogram {
-		    {name foo}
-		    {external 1 flag_present}
-		    {declaration 1 flag_present}
+		    DW_AT_name foo
+		    DW_AT_external 1 flag_present
+		    DW_AT_declaration 1 flag_present
 		}
 	    }
 
 	    imported_declaration {
-		{name Outer}
-		{import :$outer_label}
+		DW_AT_name Outer
+		DW_AT_import :$outer_label
 	    }
 
 	    oi1_label: imported_declaration {
-		{name oi1}
-		{import :$OuterInner_label}
+		DW_AT_name oi1
+		DW_AT_import :$OuterInner_label
 	    }
 
 	    oi2_label: imported_declaration {
-		{name oi2}
-		{import :$oi1_label}
+		DW_AT_name oi2
+		DW_AT_import :$oi1_label
 	    }
 
 	    imported_declaration {
-		{name oi3}
-		{import :$oi2_label}
+		DW_AT_name oi3
+		DW_AT_import :$oi2_label
 	    }
 
 	    subprogram {
-		{specification :$im_foo_label}
-		{low_pc 0x4 DW_FORM_addr}
-		{high_pc 0x7 DW_FORM_addr}
+		DW_AT_specification :$im_foo_label
+		DW_AT_low_pc 0x4 DW_FORM_addr
+		DW_AT_high_pc 0x7 DW_FORM_addr
 	    }
 
 	    subprogram {
-		{specification :$i_foo_label}
-		{low_pc 0x8 DW_FORM_addr}
-		{high_pc 0xb DW_FORM_addr}
+		DW_AT_specification :$i_foo_label
+		DW_AT_low_pc 0x8 DW_FORM_addr
+		DW_AT_high_pc 0xb DW_FORM_addr
 	    }
 
 	    subprogram {
-		{specification :$o_foo_label}
-		{low_pc 0xc DW_FORM_addr}
-		{high_pc 0xf DW_FORM_addr}
+		DW_AT_specification :$o_foo_label
+		DW_AT_low_pc 0xc DW_FORM_addr
+		DW_AT_high_pc 0xf DW_FORM_addr
 	    }
 	}
     }
@@ -253,19 +255,19 @@
     declare_labels n0_label
 
     n0_label: DW_TAG_namespace {
-	{name n0}
+	DW_AT_name n0
     } {
 	DW_TAG_variable {
-	    {name x}
-	    {type :$int_label}
-	    {const_value 3 DW_FORM_data1}
+	    DW_AT_name x
+	    DW_AT_type :$int_label
+	    DW_AT_const_value 3 DW_FORM_data1
 	}
     }
 
     declare_labels n0_import
     n0_import: imported_declaration {
-	{name N0}
-	{import :$n0_label}
+	DW_AT_name N0
+	DW_AT_import :$n0_label
     }
 }
 
@@ -273,8 +275,8 @@
     append imports [format "
 	declare_labels n%d_import
 	n%d_import: imported_declaration {
-	    {name N%d}
-	    {import :\$n%d_import}
+	    DW_AT_name N%d
+	    DW_AT_import :\$n%d_import
 	}" $i $i $i [expr {$i - 1}]]
 }
 
@@ -283,13 +285,15 @@
 set asm_file [standard_output_file $srcfile2]
 set the_dwarf [format {
     cu {} {
-	compile_unit {{language @DW_LANG_C_plus_plus}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C_plus_plus
+	} {
 	    declare_labels int_label n0_label
 
 	    int_label: base_type {
-		{name int}
-		{encoding @DW_ATE_signed}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name int
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    }
 
 %s
diff --git a/gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp b/gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp
index 569519b..292be70 100644
--- a/gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp
+++ b/gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp
@@ -56,7 +56,7 @@
 	# Only the DWARF reader checks .gnu_debugaltlink, so make sure
 	# there is a bit of DWARF in here.
 	cu {} {
-	    compile_unit {{language @DW_LANG_C}} {
+	    compile_unit {DW_AT_language @DW_LANG_C} {
 	    }
 	}
     }
@@ -76,17 +76,19 @@
 	build_id $buildid
 
 	cu {} {
-	    compile_unit {{language @DW_LANG_C}} {
+	    compile_unit {
+		DW_AT_language @DW_LANG_C
+	    } {
 		int_label2: base_type {
-		    {name int}
-		    {byte_size 4 sdata}
-		    {encoding @DW_ATE_signed}
+		    DW_AT_name int
+		    DW_AT_byte_size 4 sdata
+		    DW_AT_encoding @DW_ATE_signed
 		}
 
 		constant {
-		    {name the_int}
-		    {type :$int_label2}
-		    {const_value $value data1}
+		    DW_AT_name the_int
+		    DW_AT_type :$int_label2
+		    DW_AT_const_value $value data1
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dlang/circular.exp b/gdb/testsuite/gdb.dlang/circular.exp
index e318945..cc79062 100644
--- a/gdb/testsuite/gdb.dlang/circular.exp
+++ b/gdb/testsuite/gdb.dlang/circular.exp
@@ -27,98 +27,98 @@
 Dwarf::assemble $asm_file {
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_D}
+	    DW_AT_language @DW_LANG_D
 	} {
 	    declare_labels circular1_label circular2_label circular3_label
 	    declare_labels circular4_label circular5_label
 
 	    circular1_label: module {
-		{name circular1}
+		DW_AT_name circular1
 	    } {
 		imported_module {
-		    {import :$circular2_label}
+		    DW_AT_import :$circular2_label
 		}
 		imported_module {
-		    {import :$circular3_label}
+		    DW_AT_import :$circular3_label
 		}
 		imported_module {
-		    {import :$circular4_label}
+		    DW_AT_import :$circular4_label
 		}
 		imported_module {
-		    {import :$circular5_label}
+		    DW_AT_import :$circular5_label
 		}
 
 		subprogram {
-		    {external 1 flag_present}
-		    {MACRO_AT_func {found}}
+		    DW_AT_external 1 flag_present
+		    MACRO_AT_func {found}
 		}
 	    }
 
 	    circular2_label: module {
-		{name circular2}
+		DW_AT_name circular2
 	    } {
 		imported_module {
-		    {import :$circular1_label}
+		    DW_AT_import :$circular1_label
 		}
 		imported_module {
-		    {import :$circular3_label}
+		    DW_AT_import :$circular3_label
 		}
 		imported_module {
-		    {import :$circular4_label}
+		    DW_AT_import :$circular4_label
 		}
 		imported_module {
-		    {import :$circular5_label}
+		    DW_AT_import :$circular5_label
 		}
 	    }
 
 	    circular3_label: module {
-		{name circular3}
+		DW_AT_name circular3
 	    } {
 		imported_module {
-		    {import :$circular1_label}
+		    DW_AT_import :$circular1_label
 		}
 		imported_module {
-		    {import :$circular2_label}
+		    DW_AT_import :$circular2_label
 		}
 		imported_module {
-		    {import :$circular4_label}
+		    DW_AT_import :$circular4_label
 		}
 		imported_module {
-		    {import :$circular5_label}
+		    DW_AT_import :$circular5_label
 		}
 	    }
 
 	    circular4_label: module {
-		{name circular4}
+		DW_AT_name circular4
 	    } {
 		imported_module {
-		    {import :$circular1_label}
+		    DW_AT_import :$circular1_label
 		}
 		imported_module {
-		    {import :$circular2_label}
+		    DW_AT_import :$circular2_label
 		}
 		imported_module {
-		    {import :$circular3_label}
+		    DW_AT_import :$circular3_label
 		}
 		imported_module {
-		    {import :$circular5_label}
+		    DW_AT_import :$circular5_label
 		}
 	    }
 
 	    circular5_label: module {
-		{name circular5}
+		DW_AT_name circular5
 	    } {
 		imported_module {
-		    {import :$circular1_label}
+		    DW_AT_import :$circular1_label
 		}
 		imported_module {
-		    {import :$circular2_label}
+		    DW_AT_import :$circular2_label
 		}
 		imported_module {
-		    {import :$circular3_label}
+		    DW_AT_import :$circular3_label
 		}
 		imported_module {
-		    {import :$circular4_label}
+		    DW_AT_import :$circular4_label
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dlang/dlang-start-2.exp b/gdb/testsuite/gdb.dlang/dlang-start-2.exp
index 403dcfd..b5c0542 100644
--- a/gdb/testsuite/gdb.dlang/dlang-start-2.exp
+++ b/gdb/testsuite/gdb.dlang/dlang-start-2.exp
@@ -40,24 +40,24 @@
 
     cu { label cu_start } {
 	compile_unit {
-	    {language @DW_LANG_D}
+	    DW_AT_language @DW_LANG_D
 	} {
 	    module {
-		{name dmain}
+		DW_AT_name dmain
 	    }
 	    subprogram {
-		{name "D main" }
-		{MIPS_linkage_name "_Dmain"}
-		{low_pc $dmain_start DW_FORM_addr}
-		{high_pc "$dmain_start + $dmain_length" DW_FORM_addr}
-		{external 1 flag_present}
+		DW_AT_name "D main"
+		DW_AT_MIPS_linkage_name "_Dmain"
+		DW_AT_low_pc $dmain_start DW_FORM_addr
+		DW_AT_high_pc "$dmain_start + $dmain_length" DW_FORM_addr
+		DW_AT_external 1 flag_present
 	    }
 	    subprogram {
-		{name "dmain._d_cmain!().main" }
-		{MIPS_linkage_name "main"}
-		{low_pc $main_start DW_FORM_addr}
-		{high_pc "$main_start + $main_length" DW_FORM_addr}
-		{external 1 flag_present}
+		DW_AT_name "dmain._d_cmain!().main"
+		DW_AT_MIPS_linkage_name "main"
+		DW_AT_low_pc $main_start DW_FORM_addr
+		DW_AT_high_pc "$main_start + $main_length" DW_FORM_addr
+		DW_AT_external 1 flag_present
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dlang/watch-loc.exp b/gdb/testsuite/gdb.dlang/watch-loc.exp
index ec50e91..7cfc539 100644
--- a/gdb/testsuite/gdb.dlang/watch-loc.exp
+++ b/gdb/testsuite/gdb.dlang/watch-loc.exp
@@ -33,30 +33,30 @@
 
     cu { label cu_start } {
 	compile_unit {
-	    {language @DW_LANG_D}
+	    DW_AT_language @DW_LANG_D
 	} {
 	    declare_labels watch_module_label watch_struct_label
 
 	    watch_module_label: module {
-		{name watch}
+		DW_AT_name watch
 	    } {
 		watch_struct_label: structure_type {
-		    {name tstruct}
-		    {byte_size 1 data1}
+		    DW_AT_name tstruct
+		    DW_AT_byte_size 1 data1
 		}
 
 		tag_variable {
-		    {name my_data}
-		    {type :$watch_struct_label}
-		    {location {
+		    DW_AT_name my_data
+		    DW_AT_type :$watch_struct_label
+		    DW_AT_location [subst {
 			addr [gdb_target_symbol my_data]
-		    } SPECIAL_expr}
-		    {external 1 flag}
+		    }] SPECIAL_expr
+		    DW_AT_external 1 flag
 		}
 
 		subprogram {
-		    {MACRO_AT_func { "_Dmain" }}
-		    {external 1 flag_present}
+		    MACRO_AT_func { "_Dmain" }
+		    DW_AT_external 1 flag_present
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/DW_OP_piece_with_DW_OP_GNU_uninit.exp b/gdb/testsuite/gdb.dwarf2/DW_OP_piece_with_DW_OP_GNU_uninit.exp
index 6735207..291bc83 100644
--- a/gdb/testsuite/gdb.dwarf2/DW_OP_piece_with_DW_OP_GNU_uninit.exp
+++ b/gdb/testsuite/gdb.dwarf2/DW_OP_piece_with_DW_OP_GNU_uninit.exp
@@ -35,37 +35,37 @@
 	    declare_labels i64_type i32_type
 
 	    i64_type: base_type {
-		{name "int64_t"}
-		{encoding @DW_ATE_signed}
-		{byte_size 8 DW_FORM_sdata}
+		DW_AT_name "int64_t"
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 8 DW_FORM_sdata
 	    }
 
 	    i32_type: base_type {
-		{name "int32_t"}
-		{encoding @DW_ATE_signed}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name "int32_t"
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    }
 
 	    DW_TAG_variable {
-		{name i64_var}
-		{type :$i64_type}
-		{location {
+		DW_AT_name i64_var
+		DW_AT_type :$i64_type
+		DW_AT_location [subst {
 		    DW_OP_constu $::c64
 		    DW_OP_stack_value
 		    DW_OP_GNU_uninit
 		    DW_OP_piece 8
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    }
 
 	    DW_TAG_variable {
-		{name i32_var}
-		{type :$i32_type}
-		{location {
+		DW_AT_name i32_var
+		DW_AT_type :$i32_type
+		DW_AT_location [subst {
 		    DW_OP_constu $::c32
 		    DW_OP_stack_value
 		    DW_OP_GNU_uninit
 		    DW_OP_piece 4
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/ada-array-bound.exp b/gdb/testsuite/gdb.dwarf2/ada-array-bound.exp
index f48df7b..779ce00 100644
--- a/gdb/testsuite/gdb.dwarf2/ada-array-bound.exp
+++ b/gdb/testsuite/gdb.dwarf2/ada-array-bound.exp
@@ -31,49 +31,50 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-		{DW_AT_language @DW_LANG_Ada95}
-		{DW_AT_name	$srcfile}
+	    DW_AT_language @DW_LANG_Ada95
+	    DW_AT_name	$srcfile
 	} {
 	    declare_labels byte array disc struct
 
 	    byte: DW_TAG_base_type {
-		{DW_AT_byte_size 1 DW_FORM_sdata}
-		{DW_AT_encoding	 @DW_ATE_unsigned}
-		{DW_AT_name	 byte}
+		DW_AT_byte_size 1 DW_FORM_sdata
+		DW_AT_encoding	 @DW_ATE_unsigned
+		DW_AT_name	 byte
 	    }
 
 	    array: DW_TAG_array_type {
-		{DW_AT_name array_type}
-		{DW_AT_type :$byte}
+		DW_AT_name array_type
+		DW_AT_type :$byte
 	    } {
 		DW_TAG_subrange_type {
-		    {DW_AT_type	       :$byte}
-		    {DW_AT_upper_bound :$disc}
+		    DW_AT_type	       :$byte
+		    DW_AT_upper_bound :$disc
 		}
 	    }
 
 	    struct: DW_TAG_structure_type {
-		{DW_AT_name discriminated}
-		{DW_AT_byte_size 4 DW_FORM_sdata}
+		DW_AT_name discriminated
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    } {
 		disc: DW_TAG_member {
-		    {DW_AT_name disc}
-		    {DW_AT_type :$byte}
-		    {DW_AT_data_member_location 0 DW_FORM_sdata}
+		    DW_AT_name disc
+		    DW_AT_type :$byte
+		    DW_AT_data_member_location 0 DW_FORM_sdata
 		}
 		DW_TAG_member {
-		    {DW_AT_name nums}
-		    {DW_AT_type :$array}
-		    {DW_AT_data_member_location 1 DW_FORM_sdata}
+		    DW_AT_name nums
+		    DW_AT_type :$array
+		    DW_AT_data_member_location 1 DW_FORM_sdata
 		}
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "value"}
-		{DW_AT_type :$struct}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "our_data"]}
-		    SPECIAL_expr}
+		DW_AT_name "value"
+		DW_AT_type :$struct
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location \
+		    [subst {DW_OP_addr [gdb_target_symbol "our_data"]}] \
+		    SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/ada-cold-name.exp b/gdb/testsuite/gdb.dwarf2/ada-cold-name.exp
index c5758c2..3520319 100644
--- a/gdb/testsuite/gdb.dwarf2/ada-cold-name.exp
+++ b/gdb/testsuite/gdb.dwarf2/ada-cold-name.exp
@@ -30,28 +30,28 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_Ada95}
-                {DW_AT_name     $srcfile}
-                {DW_AT_comp_dir /tmp}
+	    DW_AT_language @DW_LANG_Ada95
+	    DW_AT_name     $srcfile
+	    DW_AT_comp_dir /tmp
         } {
 	    declare_labels b_l
 
 	    b_l: DW_TAG_base_type {
-		{DW_AT_byte_size 1 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      bool}
+		DW_AT_byte_size 1 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      bool
 	    }
 
             DW_TAG_subprogram {
-                {name pck__xtra__function.cold}
-		{MACRO_AT_range {first}}
-                {type :$b_l}
+		DW_AT_name pck__xtra__function.cold
+		MACRO_AT_range {first}
+		DW_AT_type :$b_l
 	    }
 
             DW_TAG_subprogram {
-                {name pck__xtra__function}
-                {MACRO_AT_range {second}}
-                {type :$b_l}
+		DW_AT_name pck__xtra__function
+		MACRO_AT_range {second}
+		DW_AT_type :$b_l
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/ada-linkage-name.exp b/gdb/testsuite/gdb.dwarf2/ada-linkage-name.exp
index 9f2061c..915f47e 100644
--- a/gdb/testsuite/gdb.dwarf2/ada-linkage-name.exp
+++ b/gdb/testsuite/gdb.dwarf2/ada-linkage-name.exp
@@ -31,31 +31,31 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_Ada95}
-                {DW_AT_name     $srcfile}
-                {DW_AT_comp_dir /tmp}
+	    DW_AT_language @DW_LANG_Ada95
+	    DW_AT_name     $srcfile
+	    DW_AT_comp_dir /tmp
 
         } {
 	    declare_labels b_l
 
 	    b_l: DW_TAG_base_type {
-		{DW_AT_byte_size 1 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      bool}
+		DW_AT_byte_size 1 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      bool
 	    }
 	    # Here the name comes first and the linkage name second.
             DW_TAG_subprogram {
-                {name system__namefirst}
-		{linkage_name __gnat_namefirst}
-		{MACRO_AT_range {first}}
-                {type :$b_l}
+		DW_AT_name system__namefirst
+		DW_AT_linkage_name __gnat_namefirst
+		MACRO_AT_range {first}
+		DW_AT_type :$b_l
 	    }
 	    # Here the linkage name comes first and the name second.
             DW_TAG_subprogram {
-		{linkage_name __gnat_namesecond}
-                {name system__namesecond}
-                {MACRO_AT_range {second}}
-                {type :$b_l}
+		DW_AT_linkage_name __gnat_namesecond
+		DW_AT_name system__namesecond
+		MACRO_AT_range {second}
+		DW_AT_type :$b_l
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/ada-thick-pointer.exp b/gdb/testsuite/gdb.dwarf2/ada-thick-pointer.exp
index 5032252..0efb8cb 100644
--- a/gdb/testsuite/gdb.dwarf2/ada-thick-pointer.exp
+++ b/gdb/testsuite/gdb.dwarf2/ada-thick-pointer.exp
@@ -31,53 +31,53 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_Ada95}
-                {DW_AT_name     $srcfile}
+	    DW_AT_language @DW_LANG_Ada95
+	    DW_AT_name     $srcfile
         } {
 	    declare_labels integer array array_pointer bounds_pointer
 
             integer: DW_TAG_base_type {
-                {DW_AT_byte_size 8 DW_FORM_sdata}
-                {DW_AT_encoding  @DW_ATE_signed}
-                {DW_AT_name      integer}
+		DW_AT_byte_size 8 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	integer
             }
 
 	    array: DW_TAG_array_type {
-		{DW_AT_name array_type}
-		{DW_AT_type :$integer}
+		DW_AT_name array_type
+		DW_AT_type :$integer
 	    } {
 		DW_TAG_subrange_type {
-		    {DW_AT_type        :$integer}
-		    {DW_AT_lower_bound 1 DW_FORM_data1}
-		    {DW_AT_upper_bound 7 DW_FORM_data1}
+		    DW_AT_type        :$integer
+		    DW_AT_lower_bound 1 DW_FORM_data1
+		    DW_AT_upper_bound 7 DW_FORM_data1
 		}
 	    }
 
 	    array_pointer: DW_TAG_pointer_type {
-		{DW_AT_type :$array}
-		{DW_AT_byte_size 8 DW_FORM_sdata}
+		DW_AT_type :$array
+		DW_AT_byte_size 8 DW_FORM_sdata
 	    }
 
 	    # This isn't exactly what GNAT emits, but it doesn't
 	    # matter.
 	    bounds_pointer: DW_TAG_pointer_type {
-		{DW_AT_type :$integer}
-		{DW_AT_byte_size 8 DW_FORM_sdata}
+		DW_AT_type :$integer
+		DW_AT_byte_size 8 DW_FORM_sdata
 	    }
 
 	    DW_TAG_structure_type {
-		{DW_AT_name thick_pointer_type}
-		{DW_AT_byte_size 8 DW_FORM_sdata}
+		DW_AT_name thick_pointer_type
+		DW_AT_byte_size 8 DW_FORM_sdata
 	    } {
 		DW_TAG_member {
-		    {DW_AT_name P_ARRAY}
-		    {DW_AT_type :$array_pointer}
-		    {DW_AT_data_member_location 0 DW_FORM_sdata}
+		    DW_AT_name P_ARRAY
+		    DW_AT_type :$array_pointer
+		    DW_AT_data_member_location 0 DW_FORM_sdata
 		}
 		DW_TAG_member {
-		    {DW_AT_name P_BOUNDS}
-		    {DW_AT_type :$bounds_pointer}
-		    {DW_AT_data_member_location 8 DW_FORM_sdata}
+		    DW_AT_name P_BOUNDS
+		    DW_AT_type :$bounds_pointer
+		    DW_AT_data_member_location 8 DW_FORM_sdata
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/ada-valprint-error.exp b/gdb/testsuite/gdb.dwarf2/ada-valprint-error.exp
index e1a76bf..a754426 100644
--- a/gdb/testsuite/gdb.dwarf2/ada-valprint-error.exp
+++ b/gdb/testsuite/gdb.dwarf2/ada-valprint-error.exp
@@ -35,10 +35,10 @@
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
     cu {} {
- 	DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_Ada95}
-                {DW_AT_name     fd.adb}
-                {DW_AT_comp_dir /tmp}
+	DW_TAG_compile_unit {
+	    DW_AT_language @DW_LANG_Ada95
+	    DW_AT_name     fd.adb
+	    DW_AT_comp_dir /tmp
         } {
 	    declare_labels array_elt_label integer_label array_label \
                 typedef_label ref_type_label
@@ -48,8 +48,8 @@
             # A structure with no size attribute, to mimick structures
             # in Ada that have a dynamic size...
             array_elt_label: structure_type {
-                {name fd__Tints_doubledC}
-                {artificial 1 DW_FORM_flag_present}
+		DW_AT_name fd__Tints_doubledC
+		DW_AT_artificial 1 DW_FORM_flag_present
             }
 
             # ... and a corresponding XVZ variable, supposed to be there
@@ -58,44 +58,44 @@
             # it has been optimized out (which the compiler can do,
             # even if it at the expense of debuggability).
             DW_TAG_variable {
-                {name fd__Tints_doubledC___XVZ}
-                {DW_AT_type :$integer_label}
-                {artificial 1 DW_FORM_flag_present}
+		DW_AT_name fd__Tints_doubledC___XVZ
+		DW_AT_type :$integer_label
+		DW_AT_artificial 1 DW_FORM_flag_present
             }
 
             integer_label: DW_TAG_base_type {
-                {DW_AT_byte_size $int_size DW_FORM_sdata}
-                {DW_AT_encoding  @DW_ATE_signed}
-                {DW_AT_name      integer}
+		DW_AT_byte_size $int_size DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	integer
             }
 
 	    array_label: DW_TAG_array_type {
-		{DW_AT_name fd__ints_doubled}
-		{DW_AT_type :$array_elt_label}
+		DW_AT_name fd__ints_doubled
+		DW_AT_type :$array_elt_label
 	    } {
 		DW_TAG_subrange_type {
-		    {DW_AT_type        :$integer_label}
-		    {DW_AT_upper_bound 2 DW_FORM_data1}
+		    DW_AT_type        :$integer_label
+		    DW_AT_upper_bound 2 DW_FORM_data1
 		}
 	    }
 
             typedef_label: DW_TAG_typedef {
-                {DW_AT_name fd__ints_doubled}
-                {DW_AT_type :$array_label}
+		DW_AT_name fd__ints_doubled
+		DW_AT_type :$array_label
             }
 
             ref_type_label: DW_TAG_reference_type {
-                {DW_AT_byte_size $ptr_size DW_FORM_sdata}
-                {DW_AT_type :$typedef_label}
+		DW_AT_byte_size $ptr_size DW_FORM_sdata
+		DW_AT_type :$typedef_label
             }
 
             DW_TAG_variable {
-                {name fd__global}
-                {DW_AT_type :$ref_type_label}
-                {DW_AT_location {
-                    DW_OP_addr [gdb_target_symbol fd__global]
-                } SPECIAL_expr}
-                {external 1 flag}
+		DW_AT_name fd__global
+		DW_AT_type :$ref_type_label
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol fd__global]
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
             }
 
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/arr-opt-out.exp b/gdb/testsuite/gdb.dwarf2/arr-opt-out.exp
index 6bbfef2..d3ccec8 100644
--- a/gdb/testsuite/gdb.dwarf2/arr-opt-out.exp
+++ b/gdb/testsuite/gdb.dwarf2/arr-opt-out.exp
@@ -29,51 +29,51 @@
 Dwarf::assemble $asm_file {
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_Ada95}
-	    {DW_AT_name	    foo.adb}
-	    {DW_AT_comp_dir /tmp}
+	    DW_AT_language @DW_LANG_Ada95
+	    DW_AT_name	    foo.adb
+	    DW_AT_comp_dir /tmp
 	} {
 	    declare_labels integer_label array_label \
 		low_bound_label high_bound_label
 
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding	 @DW_ATE_signed}
-		{DW_AT_name	 integer}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	 @DW_ATE_signed
+		DW_AT_name	 integer
 	    }
 
 	    # Note that the bounds don't have a location -- they are
 	    # optimized out.  This mimics what it is seen sometimes in
 	    # the wild with optimized Ada code.
 	    low_bound_label: DW_TAG_variable {
-		{DW_AT_name pck__table___L}
-		{DW_AT_type :$integer_label}
-		{DW_AT_declaration 1 flag}
+		DW_AT_name pck__table___L
+		DW_AT_type :$integer_label
+		DW_AT_declaration 1 flag
 	    }
 	    high_bound_label: DW_TAG_variable {
-		{DW_AT_name pck__table___U}
-		{DW_AT_type :$integer_label}
-		{DW_AT_declaration 1 flag}
+		DW_AT_name pck__table___U
+		DW_AT_type :$integer_label
+		DW_AT_declaration 1 flag
 	    }
 
 	    array_label: DW_TAG_array_type {
-		{DW_AT_name pck__table}
-		{DW_AT_type :$integer_label}
+		DW_AT_name pck__table
+		DW_AT_type :$integer_label
 	    } {
 		DW_TAG_subrange_type {
-		    {DW_AT_type	       :$integer_label}
-		    {DW_AT_lower_bound :$low_bound_label}
-		    {DW_AT_upper_bound :$high_bound_label}
+		    DW_AT_type	       :$integer_label
+		    DW_AT_lower_bound :$low_bound_label
+		    DW_AT_upper_bound :$high_bound_label
 		}
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name the_table}
-		{DW_AT_type :$array_label}
-		{DW_AT_location {
+		DW_AT_name the_table
+		DW_AT_type :$array_label
+		DW_AT_location [subst {
 		    DW_OP_addr [gdb_target_symbol global_array]
-		} SPECIAL_expr}
-		{DW_AT_external 1 flag}
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/arr-stride.exp b/gdb/testsuite/gdb.dwarf2/arr-stride.exp
index be0fdf3..bad1ffe 100644
--- a/gdb/testsuite/gdb.dwarf2/arr-stride.exp
+++ b/gdb/testsuite/gdb.dwarf2/arr-stride.exp
@@ -24,86 +24,86 @@
 Dwarf::assemble $asm_file {
     cu {} {
  	DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_Ada95}
-                {DW_AT_name     foo.adb}
-                {DW_AT_comp_dir /tmp}
+	    DW_AT_language @DW_LANG_Ada95
+	    DW_AT_name     foo.adb
+	    DW_AT_comp_dir /tmp
         } {
 	    declare_labels integer_label array_elt_label array_label \
                 big_array_label struct_label
 
             integer_label: DW_TAG_base_type {
-                {DW_AT_byte_size 4 DW_FORM_sdata}
-                {DW_AT_encoding  @DW_ATE_signed}
-                {DW_AT_name      integer}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	integer
             }
 
             array_elt_label: DW_TAG_subrange_type {
-                {DW_AT_lower_bound 0xe0 DW_FORM_data1}
-                {DW_AT_upper_bound 0x1f DW_FORM_data1}
-                {DW_AT_name        pck__item}
-                {DW_AT_type        :$integer_label}
+		DW_AT_lower_bound 0xe0 DW_FORM_data1
+		DW_AT_upper_bound 0x1f DW_FORM_data1
+		DW_AT_name	  pck__item
+		DW_AT_type	  :$integer_label
             }
 
             DW_TAG_typedef {
-                {DW_AT_name pck__table}
-                {DW_AT_type :$array_label}
+		DW_AT_name pck__table
+		DW_AT_type :$array_label
             }
 
 	    array_label: DW_TAG_array_type {
-		{DW_AT_name pck__table}
-                {DW_AT_bit_stride 6 DW_FORM_data1}
-		{DW_AT_type :$array_elt_label}
+		DW_AT_name pck__table
+		DW_AT_bit_stride 6 DW_FORM_data1
+		DW_AT_type :$array_elt_label
 	    } {
 		DW_TAG_subrange_type {
-		    {DW_AT_type        :$integer_label}
-		    {DW_AT_lower_bound 0 DW_FORM_data1}
-		    {DW_AT_upper_bound 4 DW_FORM_data1}
+		    DW_AT_type        :$integer_label
+		    DW_AT_lower_bound 0 DW_FORM_data1
+		    DW_AT_upper_bound 4 DW_FORM_data1
 		}
 	    }
 
             DW_TAG_typedef {
-                {DW_AT_name pck__big_table}
-                {DW_AT_type :$big_array_label}
+		DW_AT_name pck__big_table
+		DW_AT_type :$big_array_label
             }
 
 	    big_array_label: DW_TAG_array_type {
-		{DW_AT_name pck__big_table}
-                {DW_AT_byte_stride 1 DW_FORM_data1}
-		{DW_AT_type :$array_elt_label}
+		DW_AT_name pck__big_table
+		DW_AT_byte_stride 1 DW_FORM_data1
+		DW_AT_type :$array_elt_label
 	    } {
 		DW_TAG_subrange_type {
-		    {DW_AT_type        :$integer_label}
-		    {DW_AT_lower_bound 0 DW_FORM_data1}
-		    {DW_AT_upper_bound 4 DW_FORM_data1}
+		    DW_AT_type        :$integer_label
+		    DW_AT_lower_bound 0 DW_FORM_data1
+		    DW_AT_upper_bound 4 DW_FORM_data1
 		}
 	    }
 
 	    struct_label: DW_TAG_structure_type {
-		{name struct_type}
-		{byte_size 16 DW_FORM_sdata}
+		DW_AT_name struct_type
+		DW_AT_byte_size 16 DW_FORM_sdata
 	    } {
 		member {
-		    {name intfield}
-		    {type :$integer_label}
-		    {data_member_location 0 DW_FORM_sdata}
+		    DW_AT_name intfield
+		    DW_AT_type :$integer_label
+		    DW_AT_data_member_location 0 DW_FORM_sdata
 		}
 		member {
-		    {name arrayfield}
-		    {type :$array_label}
-		    {data_member_location 4 DW_FORM_sdata}
+		    DW_AT_name arrayfield
+		    DW_AT_type :$array_label
+		    DW_AT_data_member_location 4 DW_FORM_sdata
 		}
 	    }
 
 	    DW_TAG_variable {
-		{name the_struct}
-		{external 1 DW_FORM_flag}
-		{location {
+		DW_AT_name the_struct
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location {
 		    DW_OP_const1u 1
 		    DW_OP_stack_value
 		    DW_OP_piece 4
 		    DW_OP_piece 12
-		} SPECIAL_expr}
-		{type :$struct_label}
+		} SPECIAL_expr
+		DW_AT_type :$struct_label
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/arr-subrange.exp b/gdb/testsuite/gdb.dwarf2/arr-subrange.exp
index 05fe778..24d4600 100644
--- a/gdb/testsuite/gdb.dwarf2/arr-subrange.exp
+++ b/gdb/testsuite/gdb.dwarf2/arr-subrange.exp
@@ -23,52 +23,52 @@
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
     cu {} {
- 	DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_Ada95}
-                {DW_AT_name     foo.adb}
-                {DW_AT_comp_dir /tmp}
-	        {MACRO_AT_range {main}}
-            } {
+	DW_TAG_compile_unit {
+		DW_AT_language @DW_LANG_Ada95
+		DW_AT_name     foo.adb
+		DW_AT_comp_dir /tmp
+		MACRO_AT_range {main}
+	    } {
 	    declare_labels boolean_label typedef_label array_label enum_label
 
-            boolean_label: DW_TAG_base_type {
-                {DW_AT_byte_size 1 DW_FORM_sdata}
-                {DW_AT_encoding  @DW_ATE_boolean}
-                {DW_AT_name      boolean}
-            }
+	    boolean_label: DW_TAG_base_type {
+		DW_AT_byte_size 1 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_boolean
+		DW_AT_name	boolean
+	    }
 
-            typedef_label: DW_TAG_typedef {
-                {DW_AT_name pck__table}
-                {DW_AT_type :$array_label}
-            }
+	    typedef_label: DW_TAG_typedef {
+		DW_AT_name pck__table
+		DW_AT_type :$array_label
+	    }
 
 	    array_label: DW_TAG_array_type {
-		{DW_AT_name pck__table}
-		{DW_AT_type :$boolean_label}
+		DW_AT_name pck__table
+		DW_AT_type :$boolean_label
 	    } {
 		DW_TAG_subrange_type {
-		    {DW_AT_type        :$enum_label}
-		    {DW_AT_lower_bound 0   DW_FORM_data1}
-		    {DW_AT_upper_bound 128 DW_FORM_data1}
+		    DW_AT_type	      :$enum_label
+		    DW_AT_lower_bound 0	  DW_FORM_data1
+		    DW_AT_upper_bound 128 DW_FORM_data1
 		}
 	    }
 
 	    enum_label: DW_TAG_enumeration_type {
-		{DW_AT_name      pck__enum_t}
-                {DW_AT_byte_size 1 DW_FORM_sdata}
-            } {
-                DW_TAG_enumerator {
-                    {DW_AT_name        pck__enum_000}
-                    {DW_AT_const_value 0 DW_FORM_sdata}
-                }
-                DW_TAG_enumerator {
-                    {DW_AT_name        pck__enum_001}
-                    {DW_AT_const_value 1 DW_FORM_sdata}
-                }
-                DW_TAG_enumerator {
-                    {DW_AT_name        pck__enum_128}
-                    {DW_AT_const_value 128 DW_FORM_sdata}
-                }
+		DW_AT_name	pck__enum_t
+		DW_AT_byte_size 1 DW_FORM_sdata
+	    } {
+		DW_TAG_enumerator {
+		    DW_AT_name	      pck__enum_000
+		    DW_AT_const_value 0 DW_FORM_sdata
+		}
+		DW_TAG_enumerator {
+		    DW_AT_name	      pck__enum_001
+		    DW_AT_const_value 1 DW_FORM_sdata
+		}
+		DW_TAG_enumerator {
+		    DW_AT_name	      pck__enum_128
+		    DW_AT_const_value 128 DW_FORM_sdata
+		}
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/assign-variable-value-to-register.exp b/gdb/testsuite/gdb.dwarf2/assign-variable-value-to-register.exp
index 64a86ec..1ebd622 100644
--- a/gdb/testsuite/gdb.dwarf2/assign-variable-value-to-register.exp
+++ b/gdb/testsuite/gdb.dwarf2/assign-variable-value-to-register.exp
@@ -36,29 +36,29 @@
 	    declare_labels int_label float_label
 
 	    int_label: DW_TAG_base_type {
-		{ DW_AT_name int }
-		{ DW_AT_byte_size 4 DW_FORM_udata }
-		{ DW_AT_encoding @DW_ATE_signed }
+		DW_AT_name int
+		DW_AT_byte_size 4 DW_FORM_udata
+		DW_AT_encoding @DW_ATE_signed
 	    }
 
 	    float_label: DW_TAG_base_type {
-		{ DW_AT_name float }
-		{ DW_AT_byte_size 4 DW_FORM_udata }
-		{ DW_AT_encoding @DW_ATE_float }
+		DW_AT_name float
+		DW_AT_byte_size 4 DW_FORM_udata
+		DW_AT_encoding @DW_ATE_float
 	    }
 
 	    DW_TAG_subprogram {
-		{ DW_AT_name main }
-		{ DW_AT_low_pc $main_start DW_FORM_addr }
-		{ DW_AT_high_pc $main_end DW_FORM_addr }
-		{ DW_AT_type :$int_label }
+		DW_AT_name main
+		DW_AT_low_pc $main_start DW_FORM_addr
+		DW_AT_high_pc $main_end DW_FORM_addr
+		DW_AT_type :$int_label
 	    } {
 		DW_TAG_variable {
-		    { DW_AT_name foo }
-		    { DW_AT_type :$float_label }
-		    { DW_AT_location {
+		    DW_AT_name foo
+		    DW_AT_type :$float_label
+		    DW_AT_location [subst {
 			DW_OP_regx $::st0_dwarf_regnum
-		    } SPECIAL_expr }
+		    }] SPECIAL_expr
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/atomic-type.exp b/gdb/testsuite/gdb.dwarf2/atomic-type.exp
index 2e6d903..022b63c 100644
--- a/gdb/testsuite/gdb.dwarf2/atomic-type.exp
+++ b/gdb/testsuite/gdb.dwarf2/atomic-type.exp
@@ -27,54 +27,54 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_C11}
-                {DW_AT_name     $srcfile}
-                {DW_AT_comp_dir /tmp}
-        } {
+	    DW_AT_language @DW_LANG_C11
+	    DW_AT_name	   $srcfile
+	    DW_AT_comp_dir /tmp
+	} {
 	    declare_labels i_l c_l c_c_l ac_c_l pac_c_l vpac_c_l avpac_c_l
 
-            i_l: DW_TAG_base_type {
-                {DW_AT_byte_size 4 DW_FORM_sdata}
-                {DW_AT_encoding  @DW_ATE_signed}
-                {DW_AT_name      int}
-            }
+	    i_l: DW_TAG_base_type {
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	int
+	    }
 
-            c_l: DW_TAG_base_type {
-                {DW_AT_byte_size 2 DW_FORM_sdata}
-                {DW_AT_encoding  @DW_ATE_unsigned}
-                {DW_AT_name      char}
-            }
+	    c_l: DW_TAG_base_type {
+		DW_AT_byte_size 2 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_unsigned
+		DW_AT_name	char
+	    }
 
-            c_c_l: DW_TAG_const_type {
-                {DW_AT_type :$c_l}
-            }
+	    c_c_l: DW_TAG_const_type {
+		DW_AT_type :$c_l
+	    }
 
-            ac_c_l: DW_TAG_atomic_type {
-                {DW_AT_type :$c_c_l}
-            }
+	    ac_c_l: DW_TAG_atomic_type {
+		DW_AT_type :$c_c_l
+	    }
 
-            pac_c_l: DW_TAG_pointer_type {
-                {DW_AT_byte_size 8 DW_FORM_sdata}
-                {DW_AT_type :$ac_c_l}
-            }
+	    pac_c_l: DW_TAG_pointer_type {
+		DW_AT_byte_size 8 DW_FORM_sdata
+		DW_AT_type :$ac_c_l
+	    }
 
-            vpac_c_l: DW_TAG_volatile_type {
-                {DW_AT_type :$pac_c_l}
-            }
+	    vpac_c_l: DW_TAG_volatile_type {
+		DW_AT_type :$pac_c_l
+	    }
 
-            avpac_c_l: DW_TAG_atomic_type {
-                {DW_AT_type :$vpac_c_l}
-            }
+	    avpac_c_l: DW_TAG_atomic_type {
+		DW_AT_type :$vpac_c_l
+	    }
 
-            DW_TAG_subprogram {
-                {MACRO_AT_func {f}}
-                {type :$i_l}
-            } {
-                DW_TAG_formal_parameter {
-                    {type :$avpac_c_l}
-                    {name x}
-                }
-            }
+	    DW_TAG_subprogram {
+		MACRO_AT_func {f}
+		DW_AT_type :$i_l
+	    } {
+		DW_TAG_formal_parameter {
+		    DW_AT_type :$avpac_c_l
+		    DW_AT_name x
+		}
+	    }
 	}
     }
 }
diff --git a/gdb/testsuite/gdb.dwarf2/backward-spec-inter-cu.exp b/gdb/testsuite/gdb.dwarf2/backward-spec-inter-cu.exp
index 1876849..0cd26e8 100644
--- a/gdb/testsuite/gdb.dwarf2/backward-spec-inter-cu.exp
+++ b/gdb/testsuite/gdb.dwarf2/backward-spec-inter-cu.exp
@@ -33,23 +33,23 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
+	    DW_AT_language @DW_LANG_C_plus_plus
 	} {
 	    declare_labels myint
 
 	    myint: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      myint}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      myint
 	    }
 
 	    DW_TAG_namespace {
-		{DW_AT_name ns}
+		DW_AT_name ns
 	    } {
 		spec: DW_TAG_variable {
-		    {DW_AT_name v}
-		    {DW_AT_type :$myint}
-		    {DW_AT_declaration 1 DW_FORM_flag_present}
+		    DW_AT_name v
+		    DW_AT_type :$myint
+		    DW_AT_declaration 1 DW_FORM_flag_present
 		}
 	    }
 	}
@@ -57,17 +57,17 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
+	    DW_AT_language @DW_LANG_C_plus_plus
 	} {
 	    # The new indexer has special code to compute the full
 	    # name of an object that uses a specification that appears
 	    # later in the DWARF.
 	    DW_TAG_variable {
-		{DW_AT_specification %$spec}
-		{DW_AT_location {
+		DW_AT_specification %$spec
+		DW_AT_location {
 		    DW_OP_const1u 23
 		    DW_OP_stack_value
-		} SPECIAL_expr}
+		} SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/bad-regnum.exp b/gdb/testsuite/gdb.dwarf2/bad-regnum.exp
index b443f82..eea13af 100644
--- a/gdb/testsuite/gdb.dwarf2/bad-regnum.exp
+++ b/gdb/testsuite/gdb.dwarf2/bad-regnum.exp
@@ -27,34 +27,34 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C}
-	    {DW_AT_name     $srcfile}
-	    {DW_AT_comp_dir /tmp}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name     $srcfile
+	    DW_AT_comp_dir /tmp
 	} {
 	    declare_labels integer_label
 
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      integer}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      integer
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name foo1}
-		{DW_AT_type :$integer_label}
-		{DW_AT_location {
+		DW_AT_name foo1
+		DW_AT_type :$integer_label
+		DW_AT_location {
 		    DW_OP_regx 2147483647
-		} SPECIAL_expr}
-		{external 1 flag}
+		} SPECIAL_expr
+		DW_AT_external 1 flag
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name foo2}
-		{DW_AT_type :$integer_label}
-		{DW_AT_location {
+		DW_AT_name foo2
+		DW_AT_type :$integer_label
+		DW_AT_location {
 		    DW_OP_regx -1
-		} SPECIAL_expr}
-		{external 1 flag}
+		} SPECIAL_expr
+		DW_AT_external 1 flag
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp b/gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp
index d2eb9bf..82eaed7 100644
--- a/gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp
+++ b/gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp
@@ -32,37 +32,37 @@
 	    declare_labels struct_label var_label int_label
 
 	    int_label: base_type {
-		{byte_size 4 sdata}
-		{encoding @DW_ATE_signed}
-		{name int}
+		DW_AT_byte_size 4 sdata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name int
 	    }
 
 	    struct_label: structure_type {
-		{name S}
-		{byte_size 8 DW_FORM_sdata}
+		DW_AT_name S
+		DW_AT_byte_size 8 DW_FORM_sdata
 	    } {
 		member {
-		    {name bitfield}
-		    {type :$int_label}
-		    {bit_size 12 DW_FORM_sdata}
-		    {bit_offset 20 DW_FORM_sdata}
+		    DW_AT_name bitfield
+		    DW_AT_type :$int_label
+		    DW_AT_bit_size 12 DW_FORM_sdata
+		    DW_AT_bit_offset 20 DW_FORM_sdata
 		}
 		member {
-		    {name intfield}
-		    {type :$int_label}
-		    {data_member_location 4 DW_FORM_sdata}
+		    DW_AT_name intfield
+		    DW_AT_type :$int_label
+		    DW_AT_data_member_location 4 DW_FORM_sdata
 		}
 	    }
 
 	    subprogram {
-		{MACRO_AT_func { main }}
-		{type :$int_label}
-		{external 1 flag}
+		MACRO_AT_func { main }
+		DW_AT_type :$int_label
+		DW_AT_external 1 flag
 	    } {
 		var_label: DW_TAG_variable {
-		    {name var}
-		    {location {} DW_FORM_block1}
-		    {type :$struct_label}
+		    DW_AT_name var
+		    DW_AT_location {} DW_FORM_block1
+		    DW_AT_type :$struct_label
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/calling-convention.exp b/gdb/testsuite/gdb.dwarf2/calling-convention.exp
index 3cced7d..d3426b9 100644
--- a/gdb/testsuite/gdb.dwarf2/calling-convention.exp
+++ b/gdb/testsuite/gdb.dwarf2/calling-convention.exp
@@ -42,26 +42,26 @@
 Dwarf::assemble $asm_file {
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name "calling-convention"}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name "calling-convention"
 	} {
 	    declare_labels int_label
 
 	    int_label: base_type {
-		{byte_size [get_sizeof "int" 4] sdata}
-		{encoding @DW_ATE_signed}
-		{name "int"}
+		DW_AT_byte_size [get_sizeof "int" 4] sdata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name "int"
 	    }
 
 	    subprogram {
-		{MACRO_AT_func { foo }}
-		{type :$int_label}
-		{calling_convention @DW_CC_nocall}
+		MACRO_AT_func { foo }
+		DW_AT_type :$int_label
+		DW_AT_calling_convention @DW_CC_nocall
 	    }
 
 	    subprogram {
-		{MACRO_AT_func { main }}
-		{type :$int_label}
+		MACRO_AT_func { main }
+		DW_AT_type :$int_label
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/clang-cli-macro.exp b/gdb/testsuite/gdb.dwarf2/clang-cli-macro.exp
index b856c5b..d73a3a1 100644
--- a/gdb/testsuite/gdb.dwarf2/clang-cli-macro.exp
+++ b/gdb/testsuite/gdb.dwarf2/clang-cli-macro.exp
@@ -37,22 +37,22 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_producer "clang version 15.0.0"}
-	    {DW_AT_language @DW_LANG_C11}
-	    {DW_AT_name $::srcfile}
-	    {DW_AT_macros $cu_macros DW_FORM_sec_offset}
-	    {DW_AT_stmt_list $L DW_FORM_sec_offset}
+	    DW_AT_producer "clang version 15.0.0"
+	    DW_AT_language @DW_LANG_C11
+	    DW_AT_name $::srcfile
+	    DW_AT_macros $cu_macros DW_FORM_sec_offset
+	    DW_AT_stmt_list $L DW_FORM_sec_offset
 	} {
 	    declare_labels int_type
 
 	    int_type: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name int}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name int
 	    }
 	    DW_TAG_subprogram {
-		{MACRO_AT_func {main}}
-		{type :$int_type}
+		MACRO_AT_func {main}
+		DW_AT_type :$int_type
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/comp-unit-lang.exp b/gdb/testsuite/gdb.dwarf2/comp-unit-lang.exp
index 9b18d9a..f4d9195 100644
--- a/gdb/testsuite/gdb.dwarf2/comp-unit-lang.exp
+++ b/gdb/testsuite/gdb.dwarf2/comp-unit-lang.exp
@@ -41,13 +41,13 @@
 	# both 32- and 64-bit machines.
 	cu { addr_size 4 } {
 	    compile_unit {
-		{name file1.txt}
-		{language @$cu_lang}
-		{MACRO_AT_range {func}}
+		DW_AT_name file1.txt
+		DW_AT_language @$cu_lang
+		MACRO_AT_range {func}
 	    } {
 		subprogram {
-		    {external 1 flag}
-		    {MACRO_AT_func {func}}
+		    DW_AT_external 1 flag
+		    MACRO_AT_func {func}
 		} {
 		}
 	    }
diff --git a/gdb/testsuite/gdb.dwarf2/corrupt.exp b/gdb/testsuite/gdb.dwarf2/corrupt.exp
index b9f242c..a68b7e3 100644
--- a/gdb/testsuite/gdb.dwarf2/corrupt.exp
+++ b/gdb/testsuite/gdb.dwarf2/corrupt.exp
@@ -36,31 +36,31 @@
 	    declare_labels int_label
 
 	    int_label: base_type {
-		{byte_size 4 sdata}
-		{name "int"}
+		DW_AT_byte_size 4 sdata
+		DW_AT_name "int"
 	    }
 
 	    enumeration_type {
-		{name "ENUM"}
-		{byte_size 4 sdata}
+		DW_AT_name "ENUM"
+		DW_AT_byte_size 4 sdata
 	    } {
 		enumerator {
-		    {name "A"}
-		    {const_value 0 sdata}
+		    DW_AT_name "A"
+		    DW_AT_const_value 0 sdata
 		}
 		enumerator {
-		    {name "B"}
-		    {const_value 1 sdata}
-		    {sibling 12345678 DW_FORM_ref4}
+		    DW_AT_name "B"
+		    DW_AT_const_value 1 sdata
+		    DW_AT_sibling 12345678 DW_FORM_ref4
 		} {
 		    base_type {
-			{byte_size 1 sdata}
-			{name "char"}
+			DW_AT_byte_size 1 sdata
+			DW_AT_name "char"
 		    }
 		}
 		array_type {
-		    {type :$int_label}
-		    {sibling 12345678 DW_FORM_ref4}
+		    DW_AT_type :$int_label
+		    DW_AT_sibling 12345678 DW_FORM_ref4
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/count.exp b/gdb/testsuite/gdb.dwarf2/count.exp
index a8b216d..4d2ec31 100644
--- a/gdb/testsuite/gdb.dwarf2/count.exp
+++ b/gdb/testsuite/gdb.dwarf2/count.exp
@@ -25,100 +25,101 @@
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
     cu {} {
-	compile_unit {{language @DW_LANG_C99}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C99
+	} {
 	    declare_labels char_label \
 		array_size_type_label long_unsigned_int_label \
 		array_label array_label2 static_array_label \
 		vla_length_label vla_array_label
 
 	    char_label: base_type {
-		{name char}
-		{encoding @DW_ATE_signed}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name char
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    }
 
 	    array_size_type_label: base_type {
-		{byte_size 8 DW_FORM_sdata}
-		{encoding @DW_ATE_unsigned}
-		{name __ARRAY_SIZE_TYPE__}
+		DW_AT_byte_size 8 DW_FORM_sdata
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_name __ARRAY_SIZE_TYPE__
 	    }
 
 	    long_unsigned_int_label: base_type {
-		{byte_size 8 DW_FORM_sdata}
-		{encoding @DW_ATE_unsigned}
-		{name "long unsigned int"}
+		DW_AT_byte_size 8 DW_FORM_sdata
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_name "long unsigned int"
 	    }
 
 	    array_label: array_type {
-		{type :$char_label}
+		DW_AT_type :$char_label
 	    } {
 		subrange_type {
-		    {count {DW_OP_lit5} SPECIAL_expr}
-		    {type :$char_label}
+		    DW_AT_count {DW_OP_lit5} SPECIAL_expr
+		    DW_AT_type :$char_label
 		}
 	    }
 
 	    array_label2: array_type {
-		{type :$char_label}
+		DW_AT_type :$char_label
 	    } {
 		subrange_type {
-		    {count {DW_OP_lit1} SPECIAL_expr}
-		    {type :$char_label}
+		    DW_AT_count {DW_OP_lit1} SPECIAL_expr
+		    DW_AT_type :$char_label
 		}
 	    }
 
 	    static_array_label: array_type {
-		{type :$char_label}
+		DW_AT_type :$char_label
 	    } {
 		subrange_type {
-		    {count 5 DW_FORM_sdata}
-		    {type :$char_label}
+		    DW_AT_count 5 DW_FORM_sdata
+		    DW_AT_type :$char_label
 		}
 	    }
 
 	    vla_length_label:
 	    DW_TAG_variable {
-		{location
-		    {
-			lit6
-			stack_value
-		    } SPECIAL_expr}
-		{name "__vla_array_length"}
-		{type :$long_unsigned_int_label}
-		{artificial 1 DW_FORM_flag_present}
+		DW_AT_location {
+		    lit6
+		    stack_value
+		} SPECIAL_expr
+		DW_AT_name "__vla_array_length"
+		DW_AT_type :$long_unsigned_int_label
+		DW_AT_artificial 1 DW_FORM_flag_present
 	    }
 
 	    vla_array_label: array_type {
-		{type :$char_label}
+		DW_AT_type :$char_label
 	    } {
 		subrange_type {
-		    {type :$array_size_type_label}
-		    {count :$vla_length_label}
+		    DW_AT_type :$array_size_type_label
+		    DW_AT_count :$vla_length_label
 		}
 	    }
 
 	    DW_TAG_variable {
-		{name array2}
-		{type :$array_label2}
-		{const_value 65 DW_FORM_udata}
+		DW_AT_name array2
+		DW_AT_type :$array_label2
+		DW_AT_const_value 65 DW_FORM_udata
 	    }
 
 	    DW_TAG_variable {
-		{name array}
-		{type :$array_label}
-		{const_value hello DW_FORM_block1}
+		DW_AT_name array
+		DW_AT_type :$array_label
+		DW_AT_const_value hello DW_FORM_block1
 	    }
 
 	    DW_TAG_variable {
-		{name static_array}
-		{type :$static_array_label}
-		{const_value world DW_FORM_block1}
+		DW_AT_name static_array
+		DW_AT_type :$static_array_label
+		DW_AT_const_value world DW_FORM_block1
 	    }
 
 	    DW_TAG_variable {
-		{name vla_array}
-		{type :$vla_array_label}
-		{const_value saluton DW_FORM_block1}
+		DW_AT_name vla_array
+		DW_AT_type :$vla_array_label
+		DW_AT_const_value saluton DW_FORM_block1
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/cpp-linkage-name.exp b/gdb/testsuite/gdb.dwarf2/cpp-linkage-name.exp
index 7442399..a21e980 100644
--- a/gdb/testsuite/gdb.dwarf2/cpp-linkage-name.exp
+++ b/gdb/testsuite/gdb.dwarf2/cpp-linkage-name.exp
@@ -32,49 +32,49 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
-	    {DW_AT_name     $srcfile}
-	    {DW_AT_comp_dir /tmp}
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name     $srcfile
+	    DW_AT_comp_dir /tmp
 
 	} {
 	    declare_labels a_l b_l
 
 	    a_l: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      int}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      int
 	    }
 
 	    # To expose the bug that existed at one point this
 	    # structure must have a linkage name, but no name, and the
 	    # linkage name is something that doesn't demangle.
 	    b_l: DW_TAG_structure_type {
-		{DW_AT_byte_size 8 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_linkage_name <anon>}
+		DW_AT_byte_size 8 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_linkage_name <anon>
 	    } {
 		member {
-		    {name x}
-		    {type :$a_l}
-		    {data_member_location 0 data1}
+		    DW_AT_name x
+		    DW_AT_type :$a_l
+		    DW_AT_data_member_location 0 data1
 		}
 		member {
-		    {name y}
-		    {type :$a_l}
-		    {data_member_location 0 data1}
+		    DW_AT_name y
+		    DW_AT_type :$a_l
+		    DW_AT_data_member_location 0 data1
 		}
 	    }
 	    DW_TAG_subprogram {
-		{MACRO_AT_func {main}}
-		{type :$a_l}
+		MACRO_AT_func {main}
+		DW_AT_type :$a_l
 	    }
 	    DW_TAG_variable {
-		{type :$b_l}
-		{external 1 flag}
-		{DW_AT_name global_var}
-		{DW_AT_location {
+		DW_AT_type :$b_l
+		DW_AT_external 1 flag
+		DW_AT_name global_var
+		DW_AT_location [subst {
 		    DW_OP_addr [gdb_target_symbol global_var]
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/cu-empty-name.exp b/gdb/testsuite/gdb.dwarf2/cu-empty-name.exp
index 6bed9e5..6ee55a6 100644
--- a/gdb/testsuite/gdb.dwarf2/cu-empty-name.exp
+++ b/gdb/testsuite/gdb.dwarf2/cu-empty-name.exp
@@ -27,10 +27,10 @@
 Dwarf::assemble $asm_file {
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_producer "Tsetsuite"}
-	    {DW_AT_language @DW_LANG_C}
-	    {DW_AT_name     ""}
-	    {DW_AT_comp_dir /tmp}
+	    DW_AT_producer "Tsetsuite"
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name     ""
+	    DW_AT_comp_dir /tmp
 	} {
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/cu-no-addrs.exp b/gdb/testsuite/gdb.dwarf2/cu-no-addrs.exp
index 7f36878..796f935 100644
--- a/gdb/testsuite/gdb.dwarf2/cu-no-addrs.exp
+++ b/gdb/testsuite/gdb.dwarf2/cu-no-addrs.exp
@@ -35,13 +35,13 @@
 	# The PC range here is intentionally empty -- this was the
 	# trigger for the bug.
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {DW_AT_low_pc $main_start DW_FORM_addr}
-	    {DW_AT_high_pc $main_start DW_FORM_addr}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_low_pc $main_start DW_FORM_addr
+	    DW_AT_high_pc $main_start DW_FORM_addr
 	} {
 	    DW_TAG_subprogram {
-		{DW_AT_name "main"}
-		{DW_AT_low_pc $main_start DW_FORM_addr}
+		DW_AT_name "main"
+		DW_AT_low_pc $main_start DW_FORM_addr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/data-loc.exp b/gdb/testsuite/gdb.dwarf2/data-loc.exp
index 20500cb..94b9e09 100644
--- a/gdb/testsuite/gdb.dwarf2/data-loc.exp
+++ b/gdb/testsuite/gdb.dwarf2/data-loc.exp
@@ -34,83 +34,83 @@
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
     cu {} {
- 	DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_Ada95}
-                {DW_AT_name     foo.adb}
-                {DW_AT_comp_dir /tmp}
-        } {
-            declare_labels integer_label array_label array_ptr_label
+	DW_TAG_compile_unit {
+	    DW_AT_language @DW_LANG_Ada95
+	    DW_AT_name	   foo.adb
+	    DW_AT_comp_dir /tmp
+	} {
+	    declare_labels integer_label array_label array_ptr_label
 	    set int_size [get_sizeof "int" 4]
 	    set voidp_size [get_sizeof "void *" 96]
 
-            integer_label: DW_TAG_base_type {
-                {DW_AT_byte_size $int_size DW_FORM_sdata}
-                {DW_AT_encoding  @DW_ATE_signed}
-                {DW_AT_name      integer}
-            }
+	    integer_label: DW_TAG_base_type {
+		DW_AT_byte_size $int_size DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	integer
+	    }
 
 	    array_label: DW_TAG_array_type {
-		{DW_AT_name foo__array_type}
-		{DW_AT_type :$integer_label}
-                {DW_AT_data_location {
-                    DW_OP_push_object_address
-                    DW_OP_deref
-                } SPECIAL_expr}
-                {external 1 flag}
+		DW_AT_name foo__array_type
+		DW_AT_type :$integer_label
+		DW_AT_data_location {
+		    DW_OP_push_object_address
+		    DW_OP_deref
+		} SPECIAL_expr
+		DW_AT_external 1 flag
 	    } {
 		DW_TAG_subrange_type {
-		    {DW_AT_type        :$integer_label}
-                    {DW_AT_lower_bound {
-                        DW_OP_push_object_address
-                        DW_OP_plus_uconst $voidp_size
-                        DW_OP_deref
-                        DW_OP_deref_size $int_size
-                    } SPECIAL_expr}
-                    {DW_AT_upper_bound {
-                        DW_OP_push_object_address
-                        DW_OP_plus_uconst $voidp_size
-                        DW_OP_deref
-                        DW_OP_plus_uconst $int_size
-                        DW_OP_deref_size $int_size
-                    } SPECIAL_expr}
+		    DW_AT_type	      :$integer_label
+		    DW_AT_lower_bound [subst {
+			DW_OP_push_object_address
+			DW_OP_plus_uconst $voidp_size
+			DW_OP_deref
+			DW_OP_deref_size $int_size
+		    }] SPECIAL_expr
+		    DW_AT_upper_bound [subst {
+			DW_OP_push_object_address
+			DW_OP_plus_uconst $voidp_size
+			DW_OP_deref
+			DW_OP_plus_uconst $int_size
+			DW_OP_deref_size $int_size
+		    }] SPECIAL_expr
 		}
 	    }
-            array_ptr_label: DW_TAG_typedef {
-                {DW_AT_name foo__array_type}
-                {DW_AT_type :$array_label}
-            }
-            DW_TAG_variable {
-                {DW_AT_name foo__three}
-                {DW_AT_type :$array_label}
-                {DW_AT_location {
-                    DW_OP_addr [gdb_target_symbol table_1]
-                } SPECIAL_expr}
-                {external 1 flag}
-            }
-            DW_TAG_variable {
-                {DW_AT_name foo__three_tdef}
-                {DW_AT_type :$array_ptr_label}
-                {DW_AT_location {
-                    DW_OP_addr [gdb_target_symbol table_1]
-                } SPECIAL_expr}
-                {external 1 flag}
-            }
-            DW_TAG_variable {
-                {DW_AT_name foo__five}
-                {DW_AT_type :$array_label}
-                {DW_AT_location {
-                    DW_OP_addr [gdb_target_symbol table_2]
-                } SPECIAL_expr}
-                {external 1 flag}
-            }
-            DW_TAG_variable {
-                {DW_AT_name foo__five_tdef}
-                {DW_AT_type :$array_ptr_label}
-                {DW_AT_location {
-                    DW_OP_addr [gdb_target_symbol table_2]
-                } SPECIAL_expr}
-                {external 1 flag}
-            }
+	    array_ptr_label: DW_TAG_typedef {
+		DW_AT_name foo__array_type
+		DW_AT_type :$array_label
+	    }
+	    DW_TAG_variable {
+		DW_AT_name foo__three
+		DW_AT_type :$array_label
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol table_1]
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
+	    }
+	    DW_TAG_variable {
+		DW_AT_name foo__three_tdef
+		DW_AT_type :$array_ptr_label
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol table_1]
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
+	    }
+	    DW_TAG_variable {
+		DW_AT_name foo__five
+		DW_AT_type :$array_label
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol table_2]
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
+	    }
+	    DW_TAG_variable {
+		DW_AT_name foo__five_tdef
+		DW_AT_type :$array_ptr_label
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol table_2]
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
+	    }
 	}
     }
 }
diff --git a/gdb/testsuite/gdb.dwarf2/debug-aranges-duplicate-offset-warning.exp b/gdb/testsuite/gdb.dwarf2/debug-aranges-duplicate-offset-warning.exp
index ac9c774..9ac9d94 100644
--- a/gdb/testsuite/gdb.dwarf2/debug-aranges-duplicate-offset-warning.exp
+++ b/gdb/testsuite/gdb.dwarf2/debug-aranges-duplicate-offset-warning.exp
@@ -31,20 +31,20 @@
 
     cu { label cu_label } {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name $srcfile}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name $srcfile
 	} {
 	    subprogram {
-		{external 1 flag}
-		{name main}
-		{low_pc $main_start addr}
-		{high_pc $main_len DW_FORM_data4}
+		DW_AT_external 1 flag
+		DW_AT_name main
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc $main_len DW_FORM_data4
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name frame2}
-		{low_pc $frame2_start addr}
-		{high_pc $frame2_len DW_FORM_data4}
+		DW_AT_external 1 flag
+		DW_AT_name frame2
+		DW_AT_low_pc $frame2_start addr
+		DW_AT_high_pc $frame2_len DW_FORM_data4
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/debug-names-bad-cu-index.exp b/gdb/testsuite/gdb.dwarf2/debug-names-bad-cu-index.exp
index c758db7..6fdb1b2 100644
--- a/gdb/testsuite/gdb.dwarf2/debug-names-bad-cu-index.exp
+++ b/gdb/testsuite/gdb.dwarf2/debug-names-bad-cu-index.exp
@@ -35,11 +35,13 @@
     }
 
     cu { label cu_label } {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    subprogram {
-		{DW_AT_name _start}
-		{DW_AT_low_pc $_start_start DW_FORM_addr}
-		{DW_AT_high_pc $_start_end DW_FORM_addr}
+		DW_AT_name _start
+		DW_AT_low_pc $_start_start DW_FORM_addr
+		DW_AT_high_pc $_start_end DW_FORM_addr
 	    }
 	}
     }
@@ -49,18 +51,18 @@
 	    declare_labels int_type
 
 	    structure_type {
-		{name struct_with_int_member}
-		{byte_size 4 sdata}
+		DW_AT_name struct_with_int_member
+		DW_AT_byte_size 4 sdata
 	    } {
 		member {
-		    {name member}
-		    {type :$int_type}
+		    DW_AT_name member
+		    DW_AT_type :$int_type
 		}
 	    }
 	    int_type: base_type {
-		{name int}
-		{encoding @DW_ATE_signed}
-		{byte_size 4 sdata}
+		DW_AT_name int
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 4 sdata
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/debug-names-duplicate-cu.exp b/gdb/testsuite/gdb.dwarf2/debug-names-duplicate-cu.exp
index 44d623b..5c84480 100644
--- a/gdb/testsuite/gdb.dwarf2/debug-names-duplicate-cu.exp
+++ b/gdb/testsuite/gdb.dwarf2/debug-names-duplicate-cu.exp
@@ -35,16 +35,18 @@
     }
 
     cu { label cu_label } {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    subprogram {
-		{DW_AT_name _start}
-		{DW_AT_low_pc $_start_start DW_FORM_addr}
-		{DW_AT_high_pc $_start_end DW_FORM_addr}
+		DW_AT_name _start
+		DW_AT_low_pc $_start_start DW_FORM_addr
+		DW_AT_high_pc $_start_end DW_FORM_addr
 	    }
 	    base_type {
-		{name int}
-		{byte_size 4 sdata}
-		{encoding @DW_ATE_signed}
+		DW_AT_name int
+		DW_AT_byte_size 4 sdata
+		DW_AT_encoding @DW_ATE_signed
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/debug-names-missing-cu.exp b/gdb/testsuite/gdb.dwarf2/debug-names-missing-cu.exp
index 1ec4a18..64550ab 100644
--- a/gdb/testsuite/gdb.dwarf2/debug-names-missing-cu.exp
+++ b/gdb/testsuite/gdb.dwarf2/debug-names-missing-cu.exp
@@ -39,16 +39,18 @@
     }
 
     cu { label cu_label } {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    subprogram {
-		{DW_AT_name _start}
-		{DW_AT_low_pc $_start_start DW_FORM_addr}
-		{DW_AT_high_pc $_start_end DW_FORM_addr}
+		DW_AT_name _start
+		DW_AT_low_pc $_start_start DW_FORM_addr
+		DW_AT_high_pc $_start_end DW_FORM_addr
 	    }
 	    base_type {
-		{name int}
-		{byte_size 4 sdata}
-		{encoding @DW_ATE_signed}
+		DW_AT_name int
+		DW_AT_byte_size 4 sdata
+		DW_AT_encoding @DW_ATE_signed
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/debug-names-tu.exp.tcl b/gdb/testsuite/gdb.dwarf2/debug-names-tu.exp.tcl
index 4950458..6ab6142 100644
--- a/gdb/testsuite/gdb.dwarf2/debug-names-tu.exp.tcl
+++ b/gdb/testsuite/gdb.dwarf2/debug-names-tu.exp.tcl
@@ -40,32 +40,36 @@
     }
 
     cu { label cu_label version $dwarf_version } {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    subprogram {
-		{DW_AT_name _start}
-		{DW_AT_low_pc $_start_start DW_FORM_addr}
-		{DW_AT_high_pc $_start_end DW_FORM_addr}
+		DW_AT_name _start
+		DW_AT_low_pc $_start_start DW_FORM_addr
+		DW_AT_high_pc $_start_end DW_FORM_addr
 	    }
 	}
     }
 
     tu { label tu_label version $dwarf_version } 0x8ece66f4224fddb3 "" {
-	type_unit {{language @DW_LANG_C}} {
+	type_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    declare_labels int_type
 
 	    structure_type {
-		{name struct_with_int_member}
-		{byte_size 4 sdata}
+		DW_AT_name struct_with_int_member
+		DW_AT_byte_size 4 sdata
 	    } {
 		member {
-		    {name member}
-		    {type :$int_type}
+		    DW_AT_name member
+		    DW_AT_type :$int_type
 		}
 	    }
 	    int_type: base_type {
-		{name int}
-		{encoding @DW_ATE_signed}
-		{byte_size 4 sdata}
+		DW_AT_name int
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 4 sdata
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/debug-names.exp b/gdb/testsuite/gdb.dwarf2/debug-names.exp
index 67a4f49..5ef21a6 100644
--- a/gdb/testsuite/gdb.dwarf2/debug-names.exp
+++ b/gdb/testsuite/gdb.dwarf2/debug-names.exp
@@ -35,16 +35,18 @@
     }
 
     cu { label cu_label } {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    subprogram {
-		{DW_AT_name _start}
-		{DW_AT_low_pc $_start_start DW_FORM_addr}
-		{DW_AT_high_pc $_start_end DW_FORM_addr}
+		DW_AT_name _start
+		DW_AT_low_pc $_start_start DW_FORM_addr
+		DW_AT_high_pc $_start_end DW_FORM_addr
 	    }
 	    base_type {
-		{name int}
-		{byte_size 4 sdata}
-		{encoding @DW_ATE_signed}
+		DW_AT_name int
+		DW_AT_byte_size 4 sdata
+		DW_AT_encoding @DW_ATE_signed
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw-form-ref-addr-with-type-units.exp b/gdb/testsuite/gdb.dwarf2/dw-form-ref-addr-with-type-units.exp
index 6253629..396fd94 100644
--- a/gdb/testsuite/gdb.dwarf2/dw-form-ref-addr-with-type-units.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw-form-ref-addr-with-type-units.exp
@@ -42,8 +42,8 @@
 	compile_unit {
 	} {
 	    subprogram {
-		{MACRO_AT_func {main}}
-		{type %$int_type}
+		MACRO_AT_func {main}
+		DW_AT_type %$int_type
 	    }
 	}
     }
@@ -61,9 +61,9 @@
 	compile_unit {
 	} {
 	    int_type: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      int}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name int
 	    }
 	}
     }
@@ -79,19 +79,19 @@
 		declare_labels dummy_int_type
 
 		the_type_i: structure_type {
-			{name s}
-			{byte_size 4 sdata}
+		    DW_AT_name s
+		    DW_AT_byte_size 4 sdata
 		} {
-			member {
-			{name i}
-			{type :$dummy_int_type}
-			}
+		    member {
+			DW_AT_name i
+			DW_AT_type :$dummy_int_type
+		    }
 		}
 
 		dummy_int_type: base_type {
-			{name int}
-			{encoding @DW_ATE_signed}
-			{byte_size 4 sdata}
+		    DW_AT_name int
+		    DW_AT_encoding @DW_ATE_signed
+		    DW_AT_byte_size 4 sdata
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dw-form-strx.exp.tcl b/gdb/testsuite/gdb.dwarf2/dw-form-strx.exp.tcl
index bc5a654..0e5cee2 100644
--- a/gdb/testsuite/gdb.dwarf2/dw-form-strx.exp.tcl
+++ b/gdb/testsuite/gdb.dwarf2/dw-form-strx.exp.tcl
@@ -32,23 +32,23 @@
 	version 5
     } {
 	DW_TAG_compile_unit {
-	    {DW_AT_str_offsets_base $base_offset_cu1 sec_offset}
+	    DW_AT_str_offsets_base $base_offset_cu1 sec_offset
 	} {
 	    declare_labels int4_type
 
 	    int4_type: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      $::int_str_idx DW_FORM_strx_id}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      $::int_str_idx DW_FORM_strx_id
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name global_var}
-		{DW_AT_type :$int4_type}
-		{DW_AT_location {
+		DW_AT_name global_var
+		DW_AT_type :$int4_type
+		DW_AT_location {
 		    DW_OP_const1u 12
 		    DW_OP_stack_value
-		} SPECIAL_expr}
+		} SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-align.exp b/gdb/testsuite/gdb.dwarf2/dw2-align.exp
index 4d43816..dfb11af 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-align.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-align.exp
@@ -27,39 +27,39 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_C_plus_plus}
-                {DW_AT_name     $srcfile}
-                {DW_AT_comp_dir /tmp}
-        } {
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name	   $srcfile
+	    DW_AT_comp_dir /tmp
+	} {
 	    declare_labels itype ptype
 
-            itype: DW_TAG_base_type {
-                {DW_AT_byte_size 4 DW_FORM_sdata}
-                {DW_AT_encoding  @DW_ATE_signed}
-                {DW_AT_name int_4096}
-		{DW_AT_alignment 4096 DW_FORM_sdata}
-            }
+	    itype: DW_TAG_base_type {
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name int_4096
+		DW_AT_alignment 4096 DW_FORM_sdata
+	    }
 
-            ptype: DW_TAG_pointer_type {
-                {DW_AT_byte_size 8 DW_FORM_sdata}
-                {DW_AT_type :$itype}
-		{DW_AT_alignment 4096 DW_FORM_sdata}
-            }
+	    ptype: DW_TAG_pointer_type {
+		DW_AT_byte_size 8 DW_FORM_sdata
+		DW_AT_type :$itype
+		DW_AT_alignment 4096 DW_FORM_sdata
+	    }
 
-            DW_TAG_typedef {
-                {DW_AT_name ptr_4096}
-                {DW_AT_type :$ptype}
-            }
+	    DW_TAG_typedef {
+		DW_AT_name ptr_4096
+		DW_AT_type :$ptype
+	    }
 
 	    DW_TAG_structure_type {
-		{DW_AT_name "struct_4096"}
-		{DW_AT_byte_size 4096 DW_FORM_sdata}
-		{DW_AT_alignment 4096 DW_FORM_udata}
+		DW_AT_name "struct_4096"
+		DW_AT_byte_size 4096 DW_FORM_sdata
+		DW_AT_alignment 4096 DW_FORM_udata
 	    } {
 		member {
-		    {name a}
-		    {type :$itype}
-		    {data_member_location 0 data1}
+		    DW_AT_name a
+		    DW_AT_type :$itype
+		    DW_AT_data_member_location 0 data1
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-aranges.exp b/gdb/testsuite/gdb.dwarf2/dw2-aranges.exp
index 0dd59bb..928edf0 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-aranges.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-aranges.exp
@@ -25,7 +25,9 @@
 
 Dwarf::assemble $asm_file {
     cu { label cu_start } {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	}
     }
     aranges { addr_zero true } cu_start {
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-bad-abstract-origin.exp b/gdb/testsuite/gdb.dwarf2/dw2-bad-abstract-origin.exp
index 9c1f424..0ee06b0 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-bad-abstract-origin.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-bad-abstract-origin.exp
@@ -93,75 +93,75 @@
 
 	cu { version $dwarf_version } {
 	    compile_unit {
-		{producer "GNU C 14.1.0"}
-		{language @DW_LANG_C}
-		{name $::srcfile}
-		{comp_dir /tmp}
-		{stmt_list $lines_table DW_FORM_sec_offset}
-		{low_pc 0 addr}
+		DW_AT_producer "GNU C 14.1.0"
+		DW_AT_language @DW_LANG_C
+		DW_AT_name $::srcfile
+		DW_AT_comp_dir /tmp
+		DW_AT_stmt_list $lines_table DW_FORM_sec_offset
+		DW_AT_low_pc 0 addr
 	    } {
 		int_label: base_type {
-		    {name "int"}
-		    {byte_size 4 sdata}
-		    {encoding @DW_ATE_signed}
+		    DW_AT_name "int"
+		    DW_AT_byte_size 4 sdata
+		    DW_AT_encoding @DW_ATE_signed
 		}
 		foo_func: subprogram {
-		    {name foo}
-		    {inline @DW_INL_declared_inlined}
-		    {decl_file 1 data1}
-		    {decl_line $::func_a_decl_line data1}
+		    DW_AT_name foo
+		    DW_AT_inline @DW_INL_declared_inlined
+		    DW_AT_decl_file 1 data1
+		    DW_AT_decl_line $::func_a_decl_line data1
 		} {
 		    foo_block: lexical_block {
 		    } {
 			value_label: DW_TAG_variable {
-			    {name value}
-			    {type :$int_label}
+			    DW_AT_name value
+			    DW_AT_type :$int_label
 			}
 		    }
 		}
 		subprogram {
-		    {abstract_origin %$foo_func}
-		    {low_pc func_a_0 addr}
-		    {high_pc func_a_6 addr}
-		    {external 1 flag}
+		    DW_AT_abstract_origin %$foo_func
+		    DW_AT_low_pc func_a_0 addr
+		    DW_AT_high_pc func_a_6 addr
+		    DW_AT_external 1 flag
 		} {
 		    bad_block: lexical_block {
-			{abstract_origin %$foo_block}
-			{ranges $block_ranges DW_FORM_sec_offset}
+			DW_AT_abstract_origin %$foo_block
+			DW_AT_ranges $block_ranges DW_FORM_sec_offset
 		    } {
 			DW_TAG_variable {
-			    {abstract_origin %$value_label}
-			    {DW_AT_location {
+			    DW_AT_abstract_origin %$value_label
+			    DW_AT_location {
 				DW_OP_const1u 23
 				DW_OP_stack_value
-			    } SPECIAL_expr}
+			    } SPECIAL_expr
 			}
 		    }
 		}
 		subprogram {
-		    {name baz}
-		    {low_pc func_b_0 addr}
-		    {high_pc func_b_5 addr}
-		    {external 1 flag}
+		    DW_AT_name baz
+		    DW_AT_low_pc func_b_0 addr
+		    DW_AT_high_pc func_b_5 addr
+		    DW_AT_external 1 flag
 		} {
 		    inlined_subroutine {
-			{abstract_origin %$foo_func}
-			{call_file 1 data1}
-			{call_line $::call_line data1}
-			{low_pc func_b_1 addr}
-			{high_pc func_b_4 addr}
+			DW_AT_abstract_origin %$foo_func
+			DW_AT_call_file 1 data1
+			DW_AT_call_line $::call_line data1
+			DW_AT_low_pc func_b_1 addr
+			DW_AT_high_pc func_b_4 addr
 		    } {
 			lexical_block {
-			    {abstract_origin %$bad_block}
-			    {low_pc func_b_2 addr}
-			    {high_pc func_b_3 addr}
+			    DW_AT_abstract_origin %$bad_block
+			    DW_AT_low_pc func_b_2 addr
+			    DW_AT_high_pc func_b_3 addr
 			} {
 			    DW_TAG_variable {
-				{abstract_origin %$value_label}
-				{DW_AT_location {
+				DW_AT_abstract_origin %$value_label
+				DW_AT_location {
 				    DW_OP_const1u 99
 				    DW_OP_stack_value
-				} SPECIAL_expr}
+				} SPECIAL_expr
 			    }
 			}
 		    }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-bad-elf.exp b/gdb/testsuite/gdb.dwarf2/dw2-bad-elf.exp
index ed03c27..a0ae498 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-bad-elf.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-bad-elf.exp
@@ -54,56 +54,56 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C}
-	    {DW_AT_name     $srcfile}
-	    {DW_AT_comp_dir ${srcdir}/${subdir}}
-	    {stmt_list $L1 DW_FORM_sec_offset}
-	    {ranges ${ranges_label_1} DW_FORM_sec_offset}
-	    {DW_AT_low_pc   0 addr}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name     $srcfile
+	    DW_AT_comp_dir ${srcdir}/${subdir}
+	    DW_AT_stmt_list $L1 DW_FORM_sec_offset
+	    DW_AT_ranges ${ranges_label_1} DW_FORM_sec_offset
+	    DW_AT_low_pc   0 addr
 	} {
 	    declare_labels integer_label
 
 	    DW_TAG_subprogram {
-		{name main}
-		{low_pc $main_start addr}
-		{high_pc $main_length data8}
-		{DW_AT_type :$integer_label}
-		{DW_AT_decl_file 1 data1}
-		{DW_AT_decl_line 10 data1}
+		DW_AT_name main
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc $main_length data8
+		DW_AT_type :$integer_label
+		DW_AT_decl_file 1 data1
+		DW_AT_decl_line 10 data1
 	    }
 
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size $int_size DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      integer}
+		DW_AT_byte_size $int_size DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      integer
 	    }
 	}
     }
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C}
-	    {DW_AT_name     $srcfile2}
-	    {DW_AT_comp_dir ${srcdir}/${subdir}}
-	    {stmt_list $L2 DW_FORM_sec_offset}
-	    {ranges ${ranges_label_2} DW_FORM_sec_offset}
-	    {DW_AT_low_pc   0 addr}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name     $srcfile2
+	    DW_AT_comp_dir ${srcdir}/${subdir}
+	    DW_AT_stmt_list $L2 DW_FORM_sec_offset
+	    DW_AT_ranges ${ranges_label_2} DW_FORM_sec_offset
+	    DW_AT_low_pc   0 addr
 	} {
 	    declare_labels integer_label
 
 	    DW_TAG_subprogram {
-		{name some_func}
-		{low_pc some_func addr}
-		{high_pc some_func_end addr}
-		{DW_AT_type :$integer_label}
-		{DW_AT_decl_file 2 data1}
-		{DW_AT_decl_line 5 data1}
+		DW_AT_name some_func
+		DW_AT_low_pc some_func addr
+		DW_AT_high_pc some_func_end addr
+		DW_AT_type :$integer_label
+		DW_AT_decl_file 2 data1
+		DW_AT_decl_line 5 data1
 	    }
 
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size $int_size DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      integer}
+		DW_AT_byte_size $int_size DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      integer
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.exp b/gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.exp
index f2534cb..ad65842 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.exp
@@ -28,27 +28,26 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_C_plus_plus}
-                {DW_AT_name     $srcfile}
-                {DW_AT_comp_dir /tmp}
-
-        } {
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name	   $srcfile
+	    DW_AT_comp_dir /tmp
+	} {
 	    declare_labels b_l
 
 	    b_l: DW_TAG_base_type {
-		{DW_AT_byte_size 1 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      bool}
+		DW_AT_byte_size 1 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	bool
 	    }
-            DW_TAG_subprogram {
-                {MACRO_AT_func {f}}
-                {type :$b_l}
-		{DW_AT_MIPS_linkage_name _Z1fv}
+	    DW_TAG_subprogram {
+		MACRO_AT_func {f}
+		DW_AT_type :$b_l
+		DW_AT_MIPS_linkage_name _Z1fv
 	    }
-            DW_TAG_subprogram {
-                {MACRO_AT_func {g}}
-                {type :$b_l}
-		{DW_AT_MIPS_linkage_name 42 DW_FORM_data1}
+	    DW_TAG_subprogram {
+		MACRO_AT_func {g}
+		DW_AT_type :$b_l
+		DW_AT_MIPS_linkage_name 42 DW_FORM_data1
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-bad-unresolved.exp b/gdb/testsuite/gdb.dwarf2/dw2-bad-unresolved.exp
index fd2c899..dba8d5e 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-bad-unresolved.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-bad-unresolved.exp
@@ -30,21 +30,21 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C}
-	    {DW_AT_name     $srcfile}
-	    {DW_AT_comp_dir /tmp}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name     $srcfile
+	    DW_AT_comp_dir /tmp
 	} {
 	    declare_labels b_l
 
 	    b_l: DW_TAG_base_type {
-		{DW_AT_byte_size 1 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      bool}
+		DW_AT_byte_size 1 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      bool
 	    }
 	    DW_TAG_variable {
-		{name var}
-		{type :$b_l}
-		{external 1 flag}
+		DW_AT_name var
+		DW_AT_type :$b_l
+		DW_AT_external 1 flag
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-bfloat16.exp b/gdb/testsuite/gdb.dwarf2/dw2-bfloat16.exp
index c611ad2..b8f96a1 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-bfloat16.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-bfloat16.exp
@@ -32,35 +32,35 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_C}
-                {DW_AT_name     $srcfile}
-                {DW_AT_comp_dir /tmp}
-        } {
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name	   $srcfile
+	    DW_AT_comp_dir /tmp
+	} {
 	    declare_labels bf16_type fp16_type \
 		bf16_var fp16_var
 
-            bf16_type: DW_TAG_base_type {
-                {DW_AT_name __bf16}
-		{encoding @DW_ATE_float}
-                {DW_AT_byte_size 2 DW_FORM_sdata}
-            }
+	    bf16_type: DW_TAG_base_type {
+		DW_AT_name __bf16
+		DW_AT_encoding @DW_ATE_float
+		DW_AT_byte_size 2 DW_FORM_sdata
+	    }
 
-            fp16_type: DW_TAG_base_type {
-                {DW_AT_name __fp16}
-		{encoding @DW_ATE_float}
-                {DW_AT_byte_size 2 DW_FORM_sdata}
-            }
+	    fp16_type: DW_TAG_base_type {
+		DW_AT_name __fp16
+		DW_AT_encoding @DW_ATE_float
+		DW_AT_byte_size 2 DW_FORM_sdata
+	    }
 
 	    bf16_var: DW_TAG_variable {
-		{DW_AT_name "bf16_1"}
-		{DW_AT_type :${bf16_type}}
-		{DW_AT_const_value 0x4049 DW_FORM_sdata}
+		DW_AT_name "bf16_1"
+		DW_AT_type :${bf16_type}
+		DW_AT_const_value 0x4049 DW_FORM_sdata
 	    }
 
 	    fp16_var: DW_TAG_variable {
-		{DW_AT_name "fp16_1"}
-		{DW_AT_type :${fp16_type}}
-		{DW_AT_const_value 0x4248 DW_FORM_sdata}
+		DW_AT_name "fp16_1"
+		DW_AT_type :${fp16_type}
+		DW_AT_const_value 0x4248 DW_FORM_sdata
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-complex-parts.exp b/gdb/testsuite/gdb.dwarf2/dw2-complex-parts.exp
index 34746f2..509924a 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-complex-parts.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-complex-parts.exp
@@ -52,14 +52,14 @@
 	    declare_labels int_type
 
 	    int_type: DW_TAG_base_type {
-		{DW_AT_byte_size $::int_size DW_FORM_sdata}
-		{DW_AT_encoding	 @DW_ATE_signed}
-		{DW_AT_name int}
+		DW_AT_byte_size $::int_size DW_FORM_sdata
+		DW_AT_encoding	 @DW_ATE_signed
+		DW_AT_name int
 	    }
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func {main}}
-		{type :$int_type}
+		MACRO_AT_func {main}
+		DW_AT_type :$int_type
 	    }
 
 	    # GCC complex float.
@@ -67,36 +67,36 @@
 	    declare_labels cf_type cd_type cld_type
 
 	    cf_type: DW_TAG_base_type {
-		{DW_AT_byte_size [expr 2 * $::float_size] DW_FORM_sdata}
-		{DW_AT_encoding	 @DW_ATE_complex_float}
-		{DW_AT_name	 "complex float"}
+		DW_AT_byte_size [expr 2 * $::float_size] DW_FORM_sdata
+		DW_AT_encoding	 @DW_ATE_complex_float
+		DW_AT_name	 "complex float"
 	    }
 
 	    cd_type: DW_TAG_base_type {
-		{DW_AT_byte_size [expr 2 * $::double_size] DW_FORM_sdata}
-		{DW_AT_encoding	 @DW_ATE_complex_float}
-		{DW_AT_name	 "complex double"}
+		DW_AT_byte_size [expr 2 * $::double_size] DW_FORM_sdata
+		DW_AT_encoding	 @DW_ATE_complex_float
+		DW_AT_name	 "complex double"
 	    }
 
 	    cld_type: DW_TAG_base_type {
-		{DW_AT_byte_size [expr 2 * $::long_double_size] DW_FORM_sdata}
-		{DW_AT_encoding	 @DW_ATE_complex_float}
-		{DW_AT_name	 "complex long double"}
+		DW_AT_byte_size [expr 2 * $::long_double_size] DW_FORM_sdata
+		DW_AT_encoding	 @DW_ATE_complex_float
+		DW_AT_name	 "complex long double"
 	    }
 
 	    DW_TAG_variable {
-		{name var_complex_float}
-		{DW_AT_type :$cf_type}
+		DW_AT_name var_complex_float
+		DW_AT_type :$cf_type
 	    }
 
 	    DW_TAG_variable {
-		{name var_complex_double}
-		{DW_AT_type :$cd_type}
+		DW_AT_name var_complex_double
+		DW_AT_type :$cd_type
 	    }
 
 	    DW_TAG_variable {
-		{name var_complex_long_double}
-		{DW_AT_type :$cld_type}
+		DW_AT_name var_complex_long_double
+		DW_AT_type :$cld_type
 	    }
 
 	    # GCC complex int.
@@ -105,14 +105,14 @@
 	    declare_labels ci_type
 
 	    ci_type: DW_TAG_base_type {
-		{DW_AT_byte_size [expr 2 * $::int_size] DW_FORM_sdata}
-		{DW_AT_encoding	 @DW_ATE_lo_user}
-		{DW_AT_name	 "complex int"}
+		DW_AT_byte_size [expr 2 * $::int_size] DW_FORM_sdata
+		DW_AT_encoding	 @DW_ATE_lo_user
+		DW_AT_name	 "complex int"
 	    }
 
 	    DW_TAG_variable {
-		{name var_complex_int}
-		{DW_AT_type :$ci_type}
+		DW_AT_name var_complex_int
+		DW_AT_type :$ci_type
 	    }
 
 	    # Clang complex float.
@@ -122,36 +122,36 @@
 	    declare_labels clang_cf_type clang_cd_type clang_cld_type
 
 	    clang_cf_type: DW_TAG_base_type {
-		{DW_AT_byte_size [expr 2 * $::float_size] DW_FORM_sdata}
-		{DW_AT_encoding	 @DW_ATE_complex_float}
-		{DW_AT_name	 "complex"}
+		DW_AT_byte_size [expr 2 * $::float_size] DW_FORM_sdata
+		DW_AT_encoding	 @DW_ATE_complex_float
+		DW_AT_name	 "complex"
 	    }
 
 	    DW_TAG_variable {
-		{name var_complex_clang_float}
-		{DW_AT_type :$clang_cf_type}
+		DW_AT_name var_complex_clang_float
+		DW_AT_type :$clang_cf_type
 	    }
 
 	    clang_cd_type: DW_TAG_base_type {
-		{DW_AT_byte_size [expr 2 * $::double_size] DW_FORM_sdata}
-		{DW_AT_encoding	 @DW_ATE_complex_float}
-		{DW_AT_name	 "complex"}
+		DW_AT_byte_size [expr 2 * $::double_size] DW_FORM_sdata
+		DW_AT_encoding	 @DW_ATE_complex_float
+		DW_AT_name	 "complex"
 	    }
 
 	    DW_TAG_variable {
-		{name var_complex_clang_double}
-		{DW_AT_type :$clang_cd_type}
+		DW_AT_name var_complex_clang_double
+		DW_AT_type :$clang_cd_type
 	    }
 
 	    clang_cld_type: DW_TAG_base_type {
-		{DW_AT_byte_size [expr 2 * $::long_double_size] DW_FORM_sdata}
-		{DW_AT_encoding	 @DW_ATE_complex_float}
-		{DW_AT_name	 "complex"}
+		DW_AT_byte_size [expr 2 * $::long_double_size] DW_FORM_sdata
+		DW_AT_encoding	 @DW_ATE_complex_float
+		DW_AT_name	 "complex"
 	    }
 
 	    DW_TAG_variable {
-		{name var_complex_clang_long_double}
-		{DW_AT_type :$clang_cld_type}
+		DW_AT_name var_complex_clang_long_double
+		DW_AT_type :$clang_cld_type
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-disasm-over-non-stmt.exp b/gdb/testsuite/gdb.dwarf2/dw2-disasm-over-non-stmt.exp
index cec1017..ddbab26 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-disasm-over-non-stmt.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-disasm-over-non-stmt.exp
@@ -43,15 +43,15 @@
 
     cu {} {
 	compile_unit {
-	    {producer "gcc" }
-	    {language @DW_LANG_C}
-	    {name ${srcfile3}}
-	    {low_pc 0 addr}
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	    DW_AT_producer "gcc"
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name ${srcfile3}
+	    DW_AT_low_pc 0 addr
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
 	} {
 	    subprogram {
-		{external 1 flag}
-		{MACRO_AT_func {main}}
+		DW_AT_external 1 flag
+		MACRO_AT_func {main}
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-empty-file-name.exp b/gdb/testsuite/gdb.dwarf2/dw2-empty-file-name.exp
index 85b6f8b..2a32433 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-empty-file-name.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-empty-file-name.exp
@@ -33,13 +33,13 @@
 
     cu { version 5 } {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name $srcfile}
-	    {stmt_list $Llines DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name $srcfile
+	    DW_AT_stmt_list $Llines DW_FORM_sec_offset
 	} {
 	    subprogram {
-		{external 1 flag}
-		{MACRO_AT_func {main}}
+		DW_AT_external 1 flag
+		MACRO_AT_func {main}
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp b/gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp
index e795040..1a0eeba 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp
@@ -159,20 +159,20 @@
 
 	cu { version $::dwarf_version } {
 	    compile_unit {
-		{producer "gcc"}
-		{language @DW_LANG_C}
-		{name ${srcfile}}
-		{comp_dir /tmp}
-		{stmt_list $lines_table DW_FORM_sec_offset}
+		DW_AT_producer "gcc"
+		DW_AT_language @DW_LANG_C
+		DW_AT_name ${srcfile}
+		DW_AT_comp_dir /tmp
+		DW_AT_stmt_list $lines_table DW_FORM_sec_offset
 	    } {
 		subprogram {
-		    {name foo}
-		    {decl_file 1 data1}
-		    {decl_line $::foo_decl_line data1}
-		    {decl_column 1 data1}
-		    {low_pc $::foo_start addr}
-		    {high_pc $::foo_len $::ptr_type}
-		    {external 1 flag}
+		    DW_AT_name foo
+		    DW_AT_decl_file 1 data1
+		    DW_AT_decl_line $::foo_decl_line data1
+		    DW_AT_decl_column 1 data1
+		    DW_AT_low_pc $::foo_start addr
+		    DW_AT_high_pc $::foo_len $::ptr_type
+		    DW_AT_external 1 flag
 		}
 	    }
 	}
@@ -202,21 +202,21 @@
 
 	cu { version $::dwarf_version } {
 	    compile_unit {
-		{producer "gcc"}
-		{language @DW_LANG_C}
-		{name ${srcfile}}
-		{comp_dir /tmp}
-		{stmt_list $lines_table DW_FORM_sec_offset}
+		DW_AT_producer "gcc"
+		DW_AT_language @DW_LANG_C
+		DW_AT_name ${srcfile}
+		DW_AT_comp_dir /tmp
+		DW_AT_stmt_list $lines_table DW_FORM_sec_offset
 	    } {
 		subprogram {
-		    {name foo}
-		    {decl_file 1 data1}
-		    {decl_line $::foo_decl_line data1}
-		    {decl_column 1 data1}
-		    {low_pc $::foo_start addr}
-		    {high_pc $::foo_len $::ptr_type}
-		    {external 1 flag}
-		    {entry_pc foo_middle addr}
+		    DW_AT_name foo
+		    DW_AT_decl_file 1 data1
+		    DW_AT_decl_line $::foo_decl_line data1
+		    DW_AT_decl_column 1 data1
+		    DW_AT_low_pc $::foo_start addr
+		    DW_AT_high_pc $::foo_len $::ptr_type
+		    DW_AT_external 1 flag
+		    DW_AT_entry_pc foo_middle addr
 		}
 	    }
 	}
@@ -248,21 +248,21 @@
 
 	cu { version $::dwarf_version } {
 	    compile_unit {
-		{producer "gcc"}
-		{language @DW_LANG_C}
-		{name ${srcfile}}
-		{comp_dir /tmp}
-		{stmt_list $lines_table DW_FORM_sec_offset}
+		DW_AT_producer "gcc"
+		DW_AT_language @DW_LANG_C
+		DW_AT_name ${srcfile}
+		DW_AT_comp_dir /tmp
+		DW_AT_stmt_list $lines_table DW_FORM_sec_offset
 	    } {
 		subprogram {
-		    {name foo}
-		    {decl_file 1 data1}
-		    {decl_line $::foo_decl_line data1}
-		    {decl_column 1 data1}
-		    {low_pc $::foo_start addr}
-		    {high_pc $::foo_len $::ptr_type}
-		    {external 1 flag}
-		    {entry_pc $foo_offset data4}
+		    DW_AT_name foo
+		    DW_AT_decl_file 1 data1
+		    DW_AT_decl_line $::foo_decl_line data1
+		    DW_AT_decl_column 1 data1
+		    DW_AT_low_pc $::foo_start addr
+		    DW_AT_high_pc $::foo_len $::ptr_type
+		    DW_AT_external 1 flag
+		    DW_AT_entry_pc $foo_offset data4
 		}
 	    }
 	}
@@ -293,20 +293,20 @@
 
 	cu { version $::dwarf_version } {
 	    compile_unit {
-		{producer "gcc"}
-		{language @DW_LANG_C}
-		{name ${srcfile}}
-		{comp_dir /tmp}
-		{stmt_list $lines_table DW_FORM_sec_offset}
-		{low_pc 0 addr}
+		DW_AT_producer "gcc"
+		DW_AT_language @DW_LANG_C
+		DW_AT_name ${srcfile}
+		DW_AT_comp_dir /tmp
+		DW_AT_stmt_list $lines_table DW_FORM_sec_offset
+		DW_AT_low_pc 0 addr
 	    } {
 		subprogram {
-		    {name foo}
-		    {decl_file 1 data1}
-		    {decl_line $::foo_decl_line data1}
-		    {decl_column 1 data1}
-		    {external 1 flag}
-		    {ranges ${ranges_label} DW_FORM_sec_offset}
+		    DW_AT_name foo
+		    DW_AT_decl_file 1 data1
+		    DW_AT_decl_line $::foo_decl_line data1
+		    DW_AT_decl_column 1 data1
+		    DW_AT_external 1 flag
+		    DW_AT_ranges ${ranges_label} DW_FORM_sec_offset
 		}
 	    }
 	}
@@ -357,21 +357,21 @@
 
 	cu { version $::dwarf_version } {
 	    compile_unit {
-		{producer "gcc"}
-		{language @DW_LANG_C}
-		{name ${srcfile}}
-		{comp_dir /tmp}
-		{stmt_list $lines_table DW_FORM_sec_offset}
-		{low_pc 0 addr}
+		DW_AT_producer "gcc"
+		DW_AT_language @DW_LANG_C
+		DW_AT_name ${srcfile}
+		DW_AT_comp_dir /tmp
+		DW_AT_stmt_list $lines_table DW_FORM_sec_offset
+		DW_AT_low_pc 0 addr
 	    } {
 		subprogram {
-		    {name foo}
-		    {decl_file 1 data1}
-		    {decl_line $::foo_decl_line data1}
-		    {decl_column 1 data1}
-		    {external 1 flag}
-		    {ranges ${ranges_label} DW_FORM_sec_offset}
-		    {entry_pc foo_middle addr}
+		    DW_AT_name foo
+		    DW_AT_decl_file 1 data1
+		    DW_AT_decl_line $::foo_decl_line data1
+		    DW_AT_decl_column 1 data1
+		    DW_AT_external 1 flag
+		    DW_AT_ranges ${ranges_label} DW_FORM_sec_offset
+		    DW_AT_entry_pc foo_middle addr
 		}
 	    }
 	}
@@ -424,21 +424,21 @@
 
 	cu { version $::dwarf_version } {
 	    compile_unit {
-		{producer "gcc"}
-		{language @DW_LANG_C}
-		{name ${srcfile}}
-		{comp_dir /tmp}
-		{stmt_list $lines_table DW_FORM_sec_offset}
-		{low_pc 0 addr}
+		DW_AT_producer "gcc"
+		DW_AT_language @DW_LANG_C
+		DW_AT_name ${srcfile}
+		DW_AT_comp_dir /tmp
+		DW_AT_stmt_list $lines_table DW_FORM_sec_offset
+		DW_AT_low_pc 0 addr
 	    } {
 		subprogram {
-		    {name foo}
-		    {decl_file 1 data1}
-		    {decl_line $::foo_decl_line data1}
-		    {decl_column 1 data1}
-		    {external 1 flag}
-		    {ranges ${ranges_label} DW_FORM_sec_offset}
-		    {entry_pc $foo_offset data4}
+		    DW_AT_name foo
+		    DW_AT_decl_file 1 data1
+		    DW_AT_decl_line $::foo_decl_line data1
+		    DW_AT_decl_column 1 data1
+		    DW_AT_external 1 flag
+		    DW_AT_ranges ${ranges_label} DW_FORM_sec_offset
+		    DW_AT_entry_pc $foo_offset data4
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-entry-points.exp b/gdb/testsuite/gdb.dwarf2/dw2-entry-points.exp
index bba4cfb..97194d5 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-entry-points.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-entry-points.exp
@@ -51,69 +51,69 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_Fortran90}
-	    {name dw2-entry-points.f90}
-	    {comp_dir /tmp}
+	    DW_AT_language @DW_LANG_Fortran90
+	    DW_AT_name dw2-entry-points.f90
+	    DW_AT_comp_dir /tmp
 	} {
 	    int_label: base_type {
-		{name "int"}
-		{byte_size $int_size sdata}
-		{encoding @DW_ATE_signed}
+		DW_AT_name "int"
+		DW_AT_byte_size $int_size sdata
+		DW_AT_encoding @DW_ATE_signed
 	    }
 	    subprogram {
-		{name prog}
-		{decl_file 1 data1}
-		{decl_line $prog_line data1}
-		{low_pc $main_start addr}
-		{high_pc "$main_start + $main_len" addr}
-		{external 1 flag}
-		{main_subprogram 1 flag}
+		DW_AT_name prog
+		DW_AT_decl_file 1 data1
+		DW_AT_decl_line $prog_line data1
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc "$main_start + $main_len" addr
+		DW_AT_external 1 flag
+		DW_AT_main_subprogram 1 flag
 	    }
 	    subprogram {
-		{name bar}
-		{decl_file 1 data1}
-		{decl_line $bar_line data1}
-		{external 1 flag}
-		{low_pc $bar_helper_start addr}
-		{high_pc "$bar_helper_start + $bar_helper_len" addr}
+		DW_AT_name bar
+		DW_AT_decl_file 1 data1
+		DW_AT_decl_line $bar_line data1
+		DW_AT_external 1 flag
+		DW_AT_low_pc $bar_helper_start addr
+		DW_AT_high_pc "$bar_helper_start + $bar_helper_len" addr
 	    } {
 		formal_parameter {
-		    {name I}
-		    {type :$int_label}
-		    {location {addr $global_I} SPECIAL_expr}
+		    DW_AT_name I
+		    DW_AT_type :$int_label
+		    DW_AT_location [subst {addr $global_I}] SPECIAL_expr
 		}
 		formal_parameter {
-		    {name J}
-		    {type :$int_label}
-		    {location {addr $global_J} SPECIAL_expr}
+		    DW_AT_name J
+		    DW_AT_type :$int_label
+		    DW_AT_location [subst {addr $global_J}] SPECIAL_expr
 		}
 		entry_point {
-		    {name foo}
-		    {decl_file 1 data1}
-		    {decl_line $foo_line data1}
-		    {low_pc foo_entry_label addr}
+		    DW_AT_name foo
+		    DW_AT_decl_file 1 data1
+		    DW_AT_decl_line $foo_line data1
+		    DW_AT_low_pc foo_entry_label addr
 		} {
 		    formal_parameter {
-			{name J}
-			{type :$int_label}
-			{location {addr $global_J} SPECIAL_expr}
+			DW_AT_name J
+			DW_AT_type :$int_label
+			DW_AT_location [subst {addr $global_J}] SPECIAL_expr
 		    }
 		    formal_parameter {
-			{name K}
-			{type :$int_label}
-			{location {addr $global_K} SPECIAL_expr}
+			DW_AT_name K
+			DW_AT_type :$int_label
+			DW_AT_location [subst {addr $global_K}] SPECIAL_expr
 		    }
 		}
 		entry_point {
-			{name foobar}
-			{decl_file 1 data1}
-			{decl_line $foobar_line data1}
-			{low_pc foobar_entry_label addr}
+			DW_AT_name foobar
+			DW_AT_decl_file 1 data1
+			DW_AT_decl_line $foobar_line data1
+			DW_AT_low_pc foobar_entry_label addr
 		    } {
 		    formal_parameter {
-			{name J}
-			{type :$int_label}
-			{location {addr $global_J} SPECIAL_expr}
+			DW_AT_name J
+			DW_AT_type :$int_label
+			DW_AT_location [subst {addr $global_J}] SPECIAL_expr
 		    }
 		}
 	    }
@@ -122,48 +122,48 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_Fortran90}
-	    {name dw2-entry-points-2.f90}
-	    {comp_dir /tmp}
+	    DW_AT_language @DW_LANG_Fortran90
+	    DW_AT_name dw2-entry-points-2.f90
+	    DW_AT_comp_dir /tmp
 	} {
 	    int2_label: base_type {
-		{name "int"}
-		{byte_size $int_size sdata}
-		{encoding @DW_ATE_signed}
+		DW_AT_name "int"
+		DW_AT_byte_size $int_size sdata
+		DW_AT_encoding @DW_ATE_signed
 	    }
 	    subprogram {
-		{name barso}
-		{decl_file 1 data1}
-		{decl_line $bar_line data1}
-		{external 1 flag}
-		{low_pc $barso_helper_start addr}
-		{high_pc "$barso_helper_start + $barso_helper_len" addr}
+		DW_AT_name barso
+		DW_AT_decl_file 1 data1
+		DW_AT_decl_line $bar_line data1
+		DW_AT_external 1 flag
+		DW_AT_low_pc $barso_helper_start addr
+		DW_AT_high_pc "$barso_helper_start + $barso_helper_len" addr
 	    } {
 		formal_parameter {
-		    {name I}
-		    {type :$int2_label}
-		    {location {addr $global_I} SPECIAL_expr}
+		    DW_AT_name I
+		    DW_AT_type :$int2_label
+		    DW_AT_location [subst {addr $global_I}] SPECIAL_expr
 		}
 		formal_parameter {
-		    {name J}
-		    {type :$int2_label}
-		    {location {addr $global_J} SPECIAL_expr}
+		    DW_AT_name J
+		    DW_AT_type :$int2_label
+		    DW_AT_location [subst {addr $global_J}] SPECIAL_expr
 		}
 		entry_point {
-		    {name fooso}
-		    {decl_file 1 data1}
-		    {decl_line $foo_line data1}
-		    {low_pc fooso_entry_label addr}
+		    DW_AT_name fooso
+		    DW_AT_decl_file 1 data1
+		    DW_AT_decl_line $foo_line data1
+		    DW_AT_low_pc fooso_entry_label addr
 		} {
 		    formal_parameter {
-			{name J}
-			{type :$int2_label}
-			{location {addr $global_J} SPECIAL_expr}
+			DW_AT_name J
+			DW_AT_type :$int2_label
+			DW_AT_location [subst {addr $global_J}] SPECIAL_expr
 		    }
 		    formal_parameter {
-			{name K}
-			{type :$int2_label}
-			{location {addr $global_K} SPECIAL_expr}
+			DW_AT_name K
+			DW_AT_type :$int2_label
+			DW_AT_location [subst {addr $global_K}] SPECIAL_expr
 		    }
 		}
 	    }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-entry-value-2.exp b/gdb/testsuite/gdb.dwarf2/dw2-entry-value-2.exp
index 55ecf9c..7dd859c 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-entry-value-2.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-entry-value-2.exp
@@ -45,47 +45,47 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-		{DW_AT_name $srcfile}
+	    DW_AT_name $srcfile
 	} {
 	    declare_labels integer
 
 	    integer: DW_TAG_base_type {
-		{DW_AT_byte_size 8 DW_FORM_sdata}
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_name integer}
+		DW_AT_byte_size 8 DW_FORM_sdata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name integer
 	    }
 
 	    DW_TAG_subprogram {
-		{ DW_AT_name main }
-		{ DW_AT_low_pc $main_start DW_FORM_addr }
-		{ DW_AT_high_pc $main_end DW_FORM_addr }
+		 DW_AT_name main
+		 DW_AT_low_pc $main_start DW_FORM_addr
+		 DW_AT_high_pc $main_end DW_FORM_addr
 	    } {
 		DW_TAG_variable {
-		    { DW_AT_name argc }
-		    { DW_AT_type :$integer }
-		    { DW_AT_location {
+		     DW_AT_name argc
+		     DW_AT_type :$integer
+		     DW_AT_location [subst {
 			DW_OP_entry_value {
 			    DW_OP_regx $::dwarf_regnum
 			}
-		    } SPECIAL_expr }
+		    }] SPECIAL_expr
 		}
 	    }
 
 	    DW_TAG_subprogram {
-		{ DW_AT_name bar }
-		{ DW_AT_low_pc $bar_start DW_FORM_addr }
-		{ DW_AT_high_pc $bar_end DW_FORM_addr }
+		 DW_AT_name bar
+		 DW_AT_low_pc $bar_start DW_FORM_addr
+		 DW_AT_high_pc $bar_end DW_FORM_addr
 	    } {
 		DW_TAG_variable {
-		    { DW_AT_name foo }
-		    { DW_AT_type :$integer }
-		    { DW_AT_location {
+		     DW_AT_name foo
+		     DW_AT_type :$integer
+		     DW_AT_location [subst {
 			DW_OP_entry_value {
 			    DW_OP_bregx $::dwarf_regnum 0
 			    DW_OP_deref_size 4
 			}
 			DW_OP_stack_value
-		    } SPECIAL_expr }
+		    }] SPECIAL_expr
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-epilogue-begin.exp.tcl b/gdb/testsuite/gdb.dwarf2/dw2-epilogue-begin.exp.tcl
index 954a252..7e60b6e 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-epilogue-begin.exp.tcl
+++ b/gdb/testsuite/gdb.dwarf2/dw2-epilogue-begin.exp.tcl
@@ -56,42 +56,42 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name dw2-prologue-end.c}
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
-	    {producer "clang version 17.0.1"}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name dw2-prologue-end.c
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
+	    DW_AT_producer "clang version 17.0.1"
 	} {
 	    declare_labels char_label
 
 	    char_label: base_type {
-		{name char}
-		{encoding @DW_ATE_signed}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name char
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    }
 
 	    subprogram {
-		{external 1 flag}
-		{name trivial}
-		{low_pc $trivial_start addr}
-		{high_pc "$trivial_start + $trivial_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name trivial
+		DW_AT_low_pc $trivial_start addr
+		DW_AT_high_pc "$trivial_start + $trivial_len" addr
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name watch}
-		{low_pc $watch_start addr}
-		{high_pc "$watch_start + $watch_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name watch
+		DW_AT_low_pc $watch_start addr
+		DW_AT_high_pc "$watch_start + $watch_len" addr
 	    } {
 		DW_TAG_variable {
-		    {name local}
-		    {type :$char_label}
-		    {DW_AT_location {DW_OP_reg0} SPECIAL_expr}
+		    DW_AT_name local
+		    DW_AT_type :$char_label
+		    DW_AT_location {DW_OP_reg0} SPECIAL_expr
 		}
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name main}
-		{low_pc $main_start addr}
-		{high_pc "$main_start + $main_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name main
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc "$main_start + $main_len" addr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-fixed-point.exp b/gdb/testsuite/gdb.dwarf2/dw2-fixed-point.exp
index a8ade90..7666089 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-fixed-point.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-fixed-point.exp
@@ -23,91 +23,91 @@
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
     cu {} {
- 	DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_Ada95}
-                {DW_AT_name     pck.ads}
-                {DW_AT_comp_dir /tmp}
-        } {
-            declare_labels fp1_base_type fp2_base_type fp3_small \
-                fp3_base_type fp1_range_type
+	DW_TAG_compile_unit {
+	    DW_AT_language @DW_LANG_Ada95
+	    DW_AT_name	   pck.ads
+	    DW_AT_comp_dir /tmp
+	} {
+	    declare_labels fp1_base_type fp2_base_type fp3_small \
+		fp3_base_type fp1_range_type
 
-            fp1_base_type: DW_TAG_base_type {
-                {DW_AT_byte_size     1 DW_FORM_sdata}
-                {DW_AT_encoding      @DW_ATE_signed_fixed}
-                {DW_AT_name          pck__fp1_type}
-                {DW_AT_binary_scale  -4 DW_FORM_sdata}
-            }
+	    fp1_base_type: DW_TAG_base_type {
+		DW_AT_byte_size	    1 DW_FORM_sdata
+		DW_AT_encoding	    @DW_ATE_signed_fixed
+		DW_AT_name	    pck__fp1_type
+		DW_AT_binary_scale  -4 DW_FORM_sdata
+	    }
 
-            DW_TAG_variable {
-                {DW_AT_name pck__fp1_var}
-                {DW_AT_type :$fp1_base_type}
-                {DW_AT_location {
-                    DW_OP_addr [gdb_target_symbol pck__fp1_var]
-                } SPECIAL_expr}
-                {external 1 flag}
-            }
+	    DW_TAG_variable {
+		DW_AT_name pck__fp1_var
+		DW_AT_type :$fp1_base_type
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol pck__fp1_var]
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
+	    }
 
-            DW_TAG_variable {
-                {DW_AT_name pck__fp1_var2}
-                {DW_AT_type :$fp1_base_type}
-                {DW_AT_location {
-                    DW_OP_addr [gdb_target_symbol pck__fp1_var2]
-                } SPECIAL_expr}
-                {external 1 flag}
-            }
+	    DW_TAG_variable {
+		DW_AT_name pck__fp1_var2
+		DW_AT_type :$fp1_base_type
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol pck__fp1_var2]
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
+	    }
 
-            fp2_base_type: DW_TAG_base_type {
-                {DW_AT_byte_size     1 DW_FORM_sdata}
-                {DW_AT_encoding      @DW_ATE_signed_fixed}
-                {DW_AT_name          pck__fp2_type}
-                {DW_AT_decimal_scale -2 DW_FORM_sdata}
-            }
+	    fp2_base_type: DW_TAG_base_type {
+		DW_AT_byte_size	    1 DW_FORM_sdata
+		DW_AT_encoding	    @DW_ATE_signed_fixed
+		DW_AT_name	    pck__fp2_type
+		DW_AT_decimal_scale -2 DW_FORM_sdata
+	    }
 
-            DW_TAG_variable {
-                {DW_AT_name pck__fp2_var}
-                {DW_AT_type :$fp2_base_type}
-                {DW_AT_location {
-                    DW_OP_addr [gdb_target_symbol pck__fp2_var]
-                } SPECIAL_expr}
-                {external 1 flag}
-            }
+	    DW_TAG_variable {
+		DW_AT_name pck__fp2_var
+		DW_AT_type :$fp2_base_type
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol pck__fp2_var]
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
+	    }
 
-            fp3_small: DW_TAG_constant {
-                {DW_AT_GNU_numerator   1 DW_FORM_data1}
-                {DW_AT_GNU_denominator 30 DW_FORM_sdata}
-            }
+	    fp3_small: DW_TAG_constant {
+		DW_AT_GNU_numerator   1 DW_FORM_data1
+		DW_AT_GNU_denominator 30 DW_FORM_sdata
+	    }
 
-            fp3_base_type: DW_TAG_base_type {
-                {DW_AT_byte_size     1 DW_FORM_sdata}
-                {DW_AT_encoding      @DW_ATE_signed_fixed}
-                {DW_AT_name          pck__fp3_type}
-                {DW_AT_small         :$fp3_small}
-            }
+	    fp3_base_type: DW_TAG_base_type {
+		DW_AT_byte_size	    1 DW_FORM_sdata
+		DW_AT_encoding	    @DW_ATE_signed_fixed
+		DW_AT_name	    pck__fp3_type
+		DW_AT_small	    :$fp3_small
+	    }
 
-            DW_TAG_variable {
-                {DW_AT_name pck__fp3_var}
-                {DW_AT_type :$fp3_base_type}
-                {DW_AT_location {
-                    DW_OP_addr [gdb_target_symbol pck__fp3_var]
-                } SPECIAL_expr}
-                {external 1 flag}
-            }
+	    DW_TAG_variable {
+		DW_AT_name pck__fp3_var
+		DW_AT_type :$fp3_base_type
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol pck__fp3_var]
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
+	    }
 
-            fp1_range_type: DW_TAG_subrange_type {
-                 {DW_AT_lower_bound 0xf0 DW_FORM_data1}
-                 {DW_AT_upper_bound 0x10 DW_FORM_data1}
-                 {DW_AT_name foo__fp1_range_type}
-                 {DW_AT_type :$fp1_base_type}
-             }
+	    fp1_range_type: DW_TAG_subrange_type {
+		 DW_AT_lower_bound 0xf0 DW_FORM_data1
+		 DW_AT_upper_bound 0x10 DW_FORM_data1
+		 DW_AT_name foo__fp1_range_type
+		 DW_AT_type :$fp1_base_type
+	     }
 
-             DW_TAG_variable {
-                 {DW_AT_name pck__fp1_range_var}
-                 {DW_AT_type :$fp1_range_type}
-                 {DW_AT_location {
-                     DW_OP_addr [gdb_target_symbol pck__fp1_range_var]
-                 } SPECIAL_expr}
-                 {external 1 flag}
-             }
+	     DW_TAG_variable {
+		 DW_AT_name pck__fp1_range_var
+		 DW_AT_type :$fp1_range_type
+		 DW_AT_location [subst {
+		     DW_OP_addr [gdb_target_symbol pck__fp1_range_var]
+		 }] SPECIAL_expr
+		 DW_AT_external 1 flag
+	     }
 	}
     }
 }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-gas-workaround.exp b/gdb/testsuite/gdb.dwarf2/dw2-gas-workaround.exp
index 25a73a6..2c8213e 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-gas-workaround.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-gas-workaround.exp
@@ -44,17 +44,17 @@
 
     cu { version 5 } {
 	compile_unit {
-	    {language @DW_LANG_Mips_Assembler}
-	    {name $srcfile}
-	    {comp_dir $objdir}
-	    {stmt_list $Llines DW_FORM_sec_offset}
-	    {producer "GNU AS 2.35.2"}
+	    DW_AT_language @DW_LANG_Mips_Assembler
+	    DW_AT_name $srcfile
+	    DW_AT_comp_dir $objdir
+	    DW_AT_stmt_list $Llines DW_FORM_sec_offset
+	    DW_AT_producer "GNU AS 2.35.2"
 	} {
 	    subprogram {
-		{external 1 flag}
-		{name bar}
-		{low_pc $bar_start addr}
-		{high_pc "$bar_start + $bar_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name bar
+		DW_AT_low_pc $bar_start addr
+		DW_AT_high_pc "$bar_start + $bar_len" addr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ifort-parameter.exp b/gdb/testsuite/gdb.dwarf2/dw2-ifort-parameter.exp
index 309f9d8..ef48038 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-ifort-parameter.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-ifort-parameter.exp
@@ -29,28 +29,28 @@
 
     cu {} {
 	compile_unit {
-	    {name file1.txt}
-	    {language @DW_LANG_C}
-	    {MACRO_AT_range { func }}
+	    DW_AT_name file1.txt
+	    DW_AT_language @DW_LANG_C
+	    MACRO_AT_range { func }
 	} {
 	    int_label: base_type {
-		{name int}
-		{byte_size 4 sdata}
-		{encoding @DW_ATE_signed}
+		DW_AT_name int
+		DW_AT_byte_size 4 sdata
+		DW_AT_encoding @DW_ATE_signed
 	    }
 
 	    subprogram {
-		{external 1 flag}
-		{MACRO_AT_func { func }}
+		DW_AT_external 1 flag
+		MACRO_AT_func { func }
 	    } {
 		formal_parameter {
-		    {name param}
-		    {variable_parameter 1 flag}
-		    {type :$int_label}
-		    {location {
+		    DW_AT_name param
+		    DW_AT_variable_parameter 1 flag
+		    DW_AT_type :$int_label
+		    DW_AT_location [subst {
 			addr [gdb_target_symbol ptr]
 			deref
-		    } SPECIAL_expr}
+		    }] SPECIAL_expr
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp
index 2781cf3..ecf0614 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp
@@ -78,29 +78,29 @@
 
 	cu {} {
 	    compile_unit {
-		{producer "gcc" }
-		{language @DW_LANG_C}
-		{name ${srcfile3}}
-		{low_pc 0 addr}
-		{stmt_list ${lines_label} DW_FORM_sec_offset}
+		DW_AT_producer "gcc"
+		DW_AT_language @DW_LANG_C
+		DW_AT_name ${srcfile3}
+		DW_AT_low_pc 0 addr
+		DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
 	    } {
 		callee_subprog_label: subprogram {
-		    {external 1 flag}
-		    {name callee}
-		    {inline 3 data1}
+		    DW_AT_external 1 flag
+		    DW_AT_name callee
+		    DW_AT_inline 3 data1
 		}
 		subprogram {
-		    {external 1 flag}
-		    {name main}
-		    {low_pc $main_start addr}
-		    {high_pc "$main_start + $main_len" addr}
+		    DW_AT_external 1 flag
+		    DW_AT_name main
+		    DW_AT_low_pc $main_start addr
+		    DW_AT_high_pc "$main_start + $main_len" addr
 		} {
 		    inlined_subroutine {
-			{abstract_origin %$callee_subprog_label}
-			{low_pc $start_label addr}
-			{high_pc line_label_6 addr}
-			{call_file 1 data1}
-			{call_line 18 data1}
+			DW_AT_abstract_origin %$callee_subprog_label
+			DW_AT_low_pc $start_label addr
+			DW_AT_high_pc line_label_6 addr
+			DW_AT_call_file 1 data1
+			DW_AT_call_line 18 data1
 		    }
 		}
 	    }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp
index 2004dfb..3d08ac0 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp
@@ -68,29 +68,29 @@
 
     cu {} {
 	compile_unit {
-	    {producer "gcc" }
-	    {language @DW_LANG_C}
-	    {name ${srcfile3}}
-	    {low_pc 0 addr}
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	    DW_AT_producer "gcc"
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name ${srcfile3}
+	    DW_AT_low_pc 0 addr
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
 	} {
 	    callee_subprog_label: subprogram {
-		{external 1 flag}
-		{name callee}
-		{inline 3 data1}
+		DW_AT_external 1 flag
+		DW_AT_name callee
+		DW_AT_inline 3 data1
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name main}
-		{low_pc $main_start addr}
-		{high_pc "$main_start + $main_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name main
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc "$main_start + $main_len" addr
 	    } {
 		inlined_subroutine {
-		    {abstract_origin %$callee_subprog_label}
-		    {low_pc line_label_3 addr}
-		    {high_pc line_label_5 addr}
-		    {call_file 1 data1}
-		    {call_line 18 data1}
+		    DW_AT_abstract_origin %$callee_subprog_label
+		    DW_AT_low_pc line_label_3 addr
+		    DW_AT_high_pc line_label_5 addr
+		    DW_AT_call_file 1 data1
+		    DW_AT_call_line 18 data1
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp
index f7d220c..ad914b9 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp
@@ -57,29 +57,29 @@
 
     cu {} {
 	compile_unit {
-	    {producer "gcc" }
-	    {language @DW_LANG_C}
-	    {name ${srcfile3}}
-	    {low_pc 0 addr}
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	    DW_AT_producer "gcc"
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name ${srcfile3}
+	    DW_AT_low_pc 0 addr
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
 	} {
 	    callee_subprog_label: subprogram {
-		{external 1 flag}
-		{name callee}
-		{inline 3 data1}
+		DW_AT_external 1 flag
+		DW_AT_name callee
+		DW_AT_inline 3 data1
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name main}
-		{low_pc $main_start addr}
-		{high_pc "$main_start + $main_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name main
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc "$main_start + $main_len" addr
 	    } {
 		inlined_subroutine {
-		    {abstract_origin %$callee_subprog_label}
-		    {low_pc line_label_3 addr}
-		    {high_pc line_label_5 addr}
-		    {call_file 1 data1}
-		    {call_line 18 data1}
+		    DW_AT_abstract_origin %$callee_subprog_label
+		    DW_AT_low_pc line_label_3 addr
+		    DW_AT_high_pc line_label_5 addr
+		    DW_AT_call_file 1 data1
+		    DW_AT_call_line 18 data1
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.exp
index 795f1e0..e8668e0 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.exp
@@ -58,116 +58,116 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name dw2-inline-stepping.c}
-	    {low_pc 0 addr}
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
-	    {ranges ${ranges_label} DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name dw2-inline-stepping.c
+	    DW_AT_low_pc 0 addr
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
+	    DW_AT_ranges ${ranges_label} DW_FORM_sec_offset
 	} {
 	    subprogram {
-		{external 1 flag}
-		{name ddd}
-		{low_pc $ddd_start addr}
-		{high_pc "$ddd_start + $ddd_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name ddd
+		DW_AT_low_pc $ddd_start addr
+		DW_AT_high_pc "$ddd_start + $ddd_len" addr
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name eee}
-		{low_pc $eee_start addr}
-		{high_pc "$eee_start + $eee_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name eee
+		DW_AT_low_pc $eee_start addr
+		DW_AT_high_pc "$eee_start + $eee_len" addr
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name jjj}
-		{low_pc $jjj_start addr}
-		{high_pc "$jjj_start + $jjj_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name jjj
+		DW_AT_low_pc $jjj_start addr
+		DW_AT_high_pc "$jjj_start + $jjj_len" addr
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name kkk}
-		{low_pc $kkk_start addr}
-		{high_pc "$kkk_start + $kkk_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name kkk
+		DW_AT_low_pc $kkk_start addr
+		DW_AT_high_pc "$kkk_start + $kkk_len" addr
 	    }
 	    aaa_label: subprogram {
-		{name aaa}
-		{inline 3 data1}
+		DW_AT_name aaa
+		DW_AT_inline 3 data1
 	    }
 	    bbb_label: subprogram {
-		{name bbb}
-		{inline 3 data1}
+		DW_AT_name bbb
+		DW_AT_inline 3 data1
 	    }
 	    ccc_label: subprogram {
-		{name ccc}
-		{inline 3 data1}
+		DW_AT_name ccc
+		DW_AT_inline 3 data1
 	    }
 	    ggg_label: subprogram {
-		{name ggg}
-		{inline 3 data1}
+		DW_AT_name ggg
+		DW_AT_inline 3 data1
 	    }
 	    hhh_label: subprogram {
-		{name hhh}
-		{inline 3 data1}
+		DW_AT_name hhh
+		DW_AT_inline 3 data1
 	    }
 	    iii_label: subprogram {
-		{name iii}
-		{inline 3 data1}
+		DW_AT_name iii
+		DW_AT_inline 3 data1
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name main}
-		{low_pc $main_start addr}
-		{high_pc "$main_start + $main_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name main
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc "$main_start + $main_len" addr
 	    } {
 		inlined_subroutine {
-		    {abstract_origin %$aaa_label}
-		    {low_pc main_label2 addr}
-		    {high_pc main_label3 addr}
-		    {call_file 1 data1}
-		    {call_line $call_in_main data1}
+		    DW_AT_abstract_origin %$aaa_label
+		    DW_AT_low_pc main_label2 addr
+		    DW_AT_high_pc main_label3 addr
+		    DW_AT_call_file 1 data1
+		    DW_AT_call_line $call_in_main data1
 		} {
 		    inlined_subroutine {
-			{abstract_origin %$bbb_label}
-			{low_pc main_label2 addr}
-			{high_pc main_label3 addr}
-			{call_file 1 data1}
-			{call_line $call_in_aaa data1}
+			DW_AT_abstract_origin %$bbb_label
+			DW_AT_low_pc main_label2 addr
+			DW_AT_high_pc main_label3 addr
+			DW_AT_call_file 1 data1
+			DW_AT_call_line $call_in_aaa data1
 		    }  {
 			inlined_subroutine {
-			    {abstract_origin %$ccc_label}
-			    {low_pc main_label2 addr}
-			    {high_pc main_label3 addr}
-			    {call_file 1 data1}
-			    {call_line $call_in_bbb data1}
+			    DW_AT_abstract_origin %$ccc_label
+			    DW_AT_low_pc main_label2 addr
+			    DW_AT_high_pc main_label3 addr
+			    DW_AT_call_file 1 data1
+			    DW_AT_call_line $call_in_bbb data1
 			}
 		    }
 		}
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name fff}
-		{low_pc $fff_start addr}
-		{high_pc "$fff_start + $fff_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name fff
+		DW_AT_low_pc $fff_start addr
+		DW_AT_high_pc "$fff_start + $fff_len" addr
 	    }  {
 		inlined_subroutine {
-		    {abstract_origin %$ggg_label}
-		    {low_pc fff_label addr}
-		    {high_pc main_label2 addr}
-		    {call_file 1 data1}
-		    {call_line $call_in_fff data1}
+		    DW_AT_abstract_origin %$ggg_label
+		    DW_AT_low_pc fff_label addr
+		    DW_AT_high_pc main_label2 addr
+		    DW_AT_call_file 1 data1
+		    DW_AT_call_line $call_in_fff data1
 		} {
 		    inlined_subroutine {
-			{abstract_origin %$hhh_label}
-			{low_pc fff_label addr}
-			{high_pc fff_label2 addr}
-			{call_file 1 data1}
-			{call_line $call_in_ggg data1}
+			DW_AT_abstract_origin %$hhh_label
+			DW_AT_low_pc fff_label addr
+			DW_AT_high_pc fff_label2 addr
+			DW_AT_call_file 1 data1
+			DW_AT_call_line $call_in_ggg data1
 		    }  {
 			inlined_subroutine {
-			    {abstract_origin %$iii_label}
-			    {low_pc fff_label addr}
-			    {high_pc fff_label2 addr}
-			    {call_file 1 data1}
-			    {call_line $call_in_hhh data1}
+			    DW_AT_abstract_origin %$iii_label
+			    DW_AT_low_pc fff_label addr
+			    DW_AT_high_pc fff_label2 addr
+			    DW_AT_call_file 1 data1
+			    DW_AT_call_line $call_in_hhh data1
 			}
 		    }
 		}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp
index 12812dd..a4309d4 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp
@@ -47,29 +47,29 @@
 	# time of writing this, GCC for x86-64 doesn't make use of
 	# skip_prologue_using_sal, while clang does.
 	compile_unit {
-	    {producer "clang xxxx" }
-	    {language @DW_LANG_C}
-	    {name ${srcfile3}}
-	    {low_pc 0 addr}
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	    DW_AT_producer "clang xxxx"
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name ${srcfile3}
+	    DW_AT_low_pc 0 addr
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
 	} {
 	    callee_subprog_label: subprogram {
-		{external 1 flag}
-		{name callee}
-		{inline 3 data1}
+		DW_AT_external 1 flag
+		DW_AT_name callee
+		DW_AT_inline 3 data1
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name main}
-		{low_pc $main_start addr}
-		{high_pc "$main_start + $main_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name main
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc "$main_start + $main_len" addr
 	    } {
 		inlined_subroutine {
-		    {abstract_origin %$callee_subprog_label}
-		    {low_pc line_label_1 addr}
-		    {high_pc line_label_2 addr}
-		    {call_file 1 data1}
-		    {call_line 21 data1}
+		    DW_AT_abstract_origin %$callee_subprog_label
+		    DW_AT_low_pc line_label_1 addr
+		    DW_AT_high_pc line_label_2 addr
+		    DW_AT_call_file 1 data1
+		    DW_AT_call_line 21 data1
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.exp
index 840d813..a544616 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.exp
@@ -49,34 +49,34 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name dw2-inline-stepping.c}
-	    {low_pc 0 addr}
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
-	    {ranges ${ranges_label} DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name dw2-inline-stepping.c
+	    DW_AT_low_pc 0 addr
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
+	    DW_AT_ranges ${ranges_label} DW_FORM_sec_offset
 	} {
 	    subprogram {
-		{external 1 flag}
-		{name bar}
-		{low_pc $bar_start addr}
-		{high_pc "$bar_start + $bar_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name bar
+		DW_AT_low_pc $bar_start addr
+		DW_AT_high_pc "$bar_start + $bar_len" addr
 	    }
 	    foo_prog: subprogram {
-		{name foo}
-		{inline 3 data1}
+		DW_AT_name foo
+		DW_AT_inline 3 data1
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name main}
-		{low_pc $main_start addr}
-		{high_pc "$main_start + $main_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name main
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc "$main_start + $main_len" addr
 	    } {
 		inlined_subroutine {
-		    {abstract_origin %$foo_prog}
-		    {low_pc main_label2 addr}
-		    {high_pc main_label3 addr}
-		    {call_file 1 data1}
-		    {call_line $call_line data1}
+		    DW_AT_abstract_origin %$foo_prog
+		    DW_AT_low_pc main_label2 addr
+		    DW_AT_high_pc main_label3 addr
+		    DW_AT_call_file 1 data1
+		    DW_AT_call_line $call_line data1
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-with-lexical-scope.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-with-lexical-scope.exp
index 320aa34..2674c17 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-inline-with-lexical-scope.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-with-lexical-scope.exp
@@ -43,59 +43,59 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C99}
-	    {name $srcfile}
-	    {low_pc $main_start addr}
-	    {high_pc "$main_start + $main_len" addr}
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C99
+	    DW_AT_name $srcfile
+	    DW_AT_low_pc $main_start addr
+	    DW_AT_high_pc "$main_start + $main_len" addr
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
 	} {
 	    int_label: base_type {
-		{name "int"}
-		{byte_size 4 sdata}
-		{encoding @DW_ATE_signed}
+		DW_AT_name "int"
+		DW_AT_byte_size 4 sdata
+		DW_AT_encoding @DW_ATE_signed
 	    }
 
 	    func_label: subprogram {
-		{name func}
-		{inline @DW_INL_declared_inlined}
+		DW_AT_name func
+		DW_AT_inline @DW_INL_declared_inlined
 	    } {
 		num_label: DW_TAG_variable {
-		    {name num}
-		    {type :$int_label}
+		    DW_AT_name num
+		    DW_AT_type :$int_label
 		}
 		lexical_block {
 		} {
 		    value_label: DW_TAG_variable {
-			{name value}
-			{type :$int_label}
+			DW_AT_name value
+			DW_AT_type :$int_label
 		    }
 		}
 	    }
 
 	    subprogram {
-		{name main}
-		{external 1 flag}
-		{low_pc $main_start addr}
-		{high_pc "$main_start + $main_len" addr}
+		DW_AT_name main
+		DW_AT_external 1 flag
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc "$main_start + $main_len" addr
 	    } {
 		inlined_subroutine {
-		    {abstract_origin %$func_label}
-		    {low_pc main_label addr}
-		    {high_pc main_label2 addr}
-		    {call_file 1 data1}
-		    {call_line $func_call data1}
+		    DW_AT_abstract_origin %$func_label
+		    DW_AT_low_pc main_label addr
+		    DW_AT_high_pc main_label2 addr
+		    DW_AT_call_file 1 data1
+		    DW_AT_call_line $func_call data1
 		} {
 		    DW_TAG_variable {
-			{abstract_origin %$num_label}
-			{location {addr $global_num_addr} SPECIAL_expr}
+			DW_AT_abstract_origin %$num_label
+			DW_AT_location [subst {addr $global_num_addr}] SPECIAL_expr
 		    }
 		    lexical_block {
-			{low_pc scope_label1 addr}
-			{high_pc scope_label2 addr}
+			DW_AT_low_pc scope_label1 addr
+			DW_AT_high_pc scope_label2 addr
 		    } {
 			DW_TAG_variable {
-			    {abstract_origin %$value_label}
-			    {location {addr $global_value_addr} SPECIAL_expr}
+			    DW_AT_abstract_origin %$value_label
+			    DW_AT_location [subst {addr $global_value_addr}] SPECIAL_expr
 			}
 		    }
 		}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inter-cu-error-2.exp b/gdb/testsuite/gdb.dwarf2/dw2-inter-cu-error-2.exp
index e65d1b9..8e99cb4 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-inter-cu-error-2.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inter-cu-error-2.exp
@@ -29,10 +29,12 @@
     declare_labels label1
 
     cu {} {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    subprogram {
-		{MACRO_AT_range { main }}
-		{DW_AT_specification %$label1}
+		MACRO_AT_range { main }
+		DW_AT_specification %$label1
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inter-cu-error.exp b/gdb/testsuite/gdb.dwarf2/dw2-inter-cu-error.exp
index bfdd1a7..ded5f10 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-inter-cu-error.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inter-cu-error.exp
@@ -26,16 +26,20 @@
     declare_labels label1
 
     cu {} {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    subprogram {
-		{MACRO_AT_range { main }}
-		{DW_AT_specification %$label1}
+		MACRO_AT_range { main }
+		DW_AT_specification %$label1
 	    }
 	}
     }
 
     cu {} {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    label1:
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inter-cu-forth-and-back.exp b/gdb/testsuite/gdb.dwarf2/dw2-inter-cu-forth-and-back.exp
index 3e91a51..0ae6004 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-inter-cu-forth-and-back.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inter-cu-forth-and-back.exp
@@ -30,22 +30,26 @@
     declare_labels label1 label2
 
     cu {} {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    subprogram {
-		{MACRO_AT_range { main }}
-		{DW_AT_specification %$label1}
+		MACRO_AT_range { main }
+		DW_AT_specification %$label1
 	    }
 
 	    label2: subprogram {
-		{DW_AT_name main}
+		DW_AT_name main
 	    }
 	}
     }
 
     cu {} {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    label1: subprogram {
-		{DW_AT_specification %$label2}
+		DW_AT_specification %$label2
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inter-cu-symbol.exp b/gdb/testsuite/gdb.dwarf2/dw2-inter-cu-symbol.exp
index dba8b83..fc72cf7 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-inter-cu-symbol.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inter-cu-symbol.exp
@@ -27,36 +27,36 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {stmt_list $L1 DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_stmt_list $L1 DW_FORM_sec_offset
 	} {
 	    tag_variable {
-		{name var1}
-		{abstract_origin %$var_label}
-		{const_value 1 DW_FORM_sdata}
+		DW_AT_name var1
+		DW_AT_abstract_origin %$var_label
+		DW_AT_const_value 1 DW_FORM_sdata
 	    }
 	    subprogram {
-		{external 1 flag}
-		{MACRO_AT_func {main}}
+		DW_AT_external 1 flag
+		MACRO_AT_func {main}
 	    }
 	    int_label: base_type {
-		{byte_size 4 udata}
-		{encoding @DW_ATE_signed}
-		{name int}
+		DW_AT_byte_size 4 udata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name int
 	    }
 	}
     }
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {stmt_list $L2 DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_stmt_list $L2 DW_FORM_sec_offset
 	} {
 	    var_label: tag_variable {
-		{name "var1"}
-		{type %$int_label}
-		{decl_file 1}
-		{decl_line 1}
+		DW_AT_name "var1"
+		DW_AT_type %$int_label
+		DW_AT_decl_file 1
+		DW_AT_decl_line 1
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-is-stmt-2.exp b/gdb/testsuite/gdb.dwarf2/dw2-is-stmt-2.exp
index ff91d63..77bac52 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-is-stmt-2.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-is-stmt-2.exp
@@ -42,16 +42,16 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name dw2-is-stmt.c}
-	    {low_pc 0 addr}
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name dw2-is-stmt.c
+	    DW_AT_low_pc 0 addr
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
 	} {
 	    subprogram {
-		{external 1 flag}
-		{name main}
-		{low_pc $main_start addr}
-		{high_pc "$main_start + $main_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name main
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc "$main_start + $main_len" addr
 	    } {}
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-is-stmt.exp b/gdb/testsuite/gdb.dwarf2/dw2-is-stmt.exp
index d304963..1b9ccaa 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-is-stmt.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-is-stmt.exp
@@ -42,16 +42,16 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name dw2-is-stmt.c}
-	    {low_pc 0 addr}
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name dw2-is-stmt.c
+	    DW_AT_low_pc 0 addr
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
 	} {
 	    subprogram {
-		{external 1 flag}
-		{name main}
-		{low_pc $main_start addr}
-		{high_pc "$main_start + $main_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name main
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc "$main_start + $main_len" addr
 	    } {}
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-lexical-block-bare.exp b/gdb/testsuite/gdb.dwarf2/dw2-lexical-block-bare.exp
index ae7f97e..a973a11 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-lexical-block-bare.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-lexical-block-bare.exp
@@ -24,29 +24,29 @@
 Dwarf::assemble $asm_file {
     cu {} {
 	compile_unit {
-	    {MACRO_AT_range {main}}
+	    MACRO_AT_range {main}
 	} {
 	    declare_labels integer_label
 
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      integer}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      integer
 	    }
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func {main}}
-		{DW_AT_external 1 flag}
+		MACRO_AT_func {main}
+		DW_AT_external 1 flag
 	    } {
 		DW_TAG_lexical_block {
 		} {
 		    DW_TAG_variable {
-			{DW_AT_name testvar}
-			    {DW_AT_type :$integer_label}
-			    {DW_AT_external 1 flag}
-			{DW_AT_location {
+			DW_AT_name testvar
+			DW_AT_type :$integer_label
+			DW_AT_external 1 flag
+			DW_AT_location [subst {
 			    DW_OP_addr [gdb_target_symbol main]
-			} SPECIAL_expr}
+			}] SPECIAL_expr
 		    }
 		}
 	    }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-line-number-zero.exp b/gdb/testsuite/gdb.dwarf2/dw2-line-number-zero.exp
index d46f003..144e62e 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-line-number-zero.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-line-number-zero.exp
@@ -32,21 +32,21 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name dw2-line-number-zero.c}
-	    {stmt_list $Llines DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name dw2-line-number-zero.c
+	    DW_AT_stmt_list $Llines DW_FORM_sec_offset
 	} {
 	    subprogram {
-		{external 1 flag}
-		{MACRO_AT_func {main}}
+		DW_AT_external 1 flag
+		MACRO_AT_func {main}
 	    }
 	    subprogram {
-		{external 1 flag}
-		{MACRO_AT_func {bar1}}
+		DW_AT_external 1 flag
+		MACRO_AT_func {bar1}
 	    }
 	    subprogram {
-		{external 1 flag}
-		{MACRO_AT_func {bar2}}
+		DW_AT_external 1 flag
+		MACRO_AT_func {bar2}
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-lines.exp b/gdb/testsuite/gdb.dwarf2/dw2-lines.exp
index 16ca54e7..6eacf0b 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-lines.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-lines.exp
@@ -59,21 +59,21 @@
 
 	cu { version $cv is_64 $cdw64 } {
 	    compile_unit {
-		{language @DW_LANG_C}
-		{name $srcfile}
-		{stmt_list $Llines DW_FORM_sec_offset}
+		DW_AT_language @DW_LANG_C
+		DW_AT_name $srcfile
+		DW_AT_stmt_list $Llines DW_FORM_sec_offset
 	    } {
 		subprogram {
-		    {external 1 flag}
-		    {name main}
-		    {low_pc $main_start addr}
-		    {high_pc "$main_start + $main_len" addr}
+		    DW_AT_external 1 flag
+		    DW_AT_name main
+		    DW_AT_low_pc $main_start addr
+		    DW_AT_high_pc "$main_start + $main_len" addr
 		}
 		subprogram {
-		    {external 1 flag}
-		    {name bar}
-		    {low_pc $bar_start addr}
-		    {high_pc "$bar_start + $bar_len" addr}
+		    DW_AT_external 1 flag
+		    DW_AT_name bar
+		    DW_AT_low_pc $bar_start addr
+		    DW_AT_high_pc "$bar_start + $bar_len" addr
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-main-no-line-number.exp b/gdb/testsuite/gdb.dwarf2/dw2-main-no-line-number.exp
index 309875a..e05e4c9 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-main-no-line-number.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-main-no-line-number.exp
@@ -33,12 +33,12 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name $srcfile}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name $srcfile
 	} {
 	    subprogram {
-		{external 1 flag}
-		{MACRO_AT_func {main}}
+		DW_AT_external 1 flag
+		MACRO_AT_func {main}
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-missing-cu-tag.exp b/gdb/testsuite/gdb.dwarf2/dw2-missing-cu-tag.exp
index 44b1726..998b614 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-missing-cu-tag.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-missing-cu-tag.exp
@@ -31,8 +31,8 @@
 	# We should have either one of DW_TAG_compile_unit,
 	# DW_TAG_partial_unit, or DW_TAG_type_unit here.
 	subprogram {
-	    {external 1 flag}
-	    {MACRO_AT_func {main}}
+	    DW_AT_external 1 flag
+	    MACRO_AT_func {main}
 	}
     }
 }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.exp b/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.exp
index d930801..ebbe6c0 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.exp
@@ -27,26 +27,26 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
-	    {DW_AT_name     $srcfile}
-	    {DW_AT_comp_dir /tmp}
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name     $srcfile
+	    DW_AT_comp_dir /tmp
 	} {
 	    declare_labels myint
 
 	    myint: DW_TAG_base_type {
-		{DW_AT_byte_size 1 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      myint}
+		DW_AT_byte_size 1 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      myint
 	    }
 
 	    DW_TAG_namespace {} {
 		DW_TAG_variable {
-		    {DW_AT_name v}
-		    {DW_AT_linkage_name _ZN12_GLOBAL__N_11vE}
-		    {DW_AT_location {
+		    DW_AT_name v
+		    DW_AT_linkage_name _ZN12_GLOBAL__N_11vE
+		    DW_AT_location [subst {
 			DW_OP_addr [gdb_target_symbol _ZN12_GLOBAL__N_11vE]
-		    } SPECIAL_expr}
-		    {DW_AT_type :$myint}
+		    }] SPECIAL_expr
+		    DW_AT_type :$myint
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-noloc.exp b/gdb/testsuite/gdb.dwarf2/dw2-noloc.exp
index 86ea143..526f88a 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-noloc.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-noloc.exp
@@ -28,167 +28,167 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name $srcfile}
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name $srcfile
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
 	} {
 	    declare_labels integer_label
 	    set int_size [get_sizeof "int" 4]
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size $int_size DW_FORM_sdata}
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_name int}
+		DW_AT_byte_size $int_size DW_FORM_sdata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name int
 	    }
 
 	    DW_TAG_subprogram {
-		{external 1 flag}
-		{name main}
-		{low_pc $main_start addr}
-		{high_pc "$main_start + $main_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name main
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc "$main_start + $main_len" addr
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name file_locno_resolvable}
-		{DW_AT_type :$integer_label}
+		DW_AT_name file_locno_resolvable
+		DW_AT_type :$integer_label
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name file_locno_unresolvable}
-		{DW_AT_type :$integer_label}
+		DW_AT_name file_locno_unresolvable
+		DW_AT_type :$integer_label
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name file_locempty_resolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_location {} DW_FORM_block1}
+		DW_AT_name file_locempty_resolvable
+		DW_AT_type :$integer_label
+		DW_AT_location {} DW_FORM_block1
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name file_locempty_unresolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_location {} DW_FORM_block1}
+		DW_AT_name file_locempty_unresolvable
+		DW_AT_type :$integer_label
+		DW_AT_location {} DW_FORM_block1
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name file_locaddr_resolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_location {
+		DW_AT_name file_locaddr_resolvable
+		DW_AT_type :$integer_label
+		DW_AT_location [subst {
 		    DW_OP_addr [gdb_target_symbol file_locaddr_resolvable]
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name file_locaddr_unresolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_location {
+		DW_AT_name file_locaddr_unresolvable
+		DW_AT_type :$integer_label
+		DW_AT_location [subst {
 		    DW_OP_addr [gdb_target_symbol file_locaddr_resolvable]
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name file_extern_locno_resolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_external 1 flag}
+		DW_AT_name file_extern_locno_resolvable
+		DW_AT_type :$integer_label
+		DW_AT_external 1 flag
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name file_extern_locno_unresolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_external 1 flag}
+		DW_AT_name file_extern_locno_unresolvable
+		DW_AT_type :$integer_label
+		DW_AT_external 1 flag
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name file_extern_locempty_resolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_external 1 flag}
-		{DW_AT_location {} DW_FORM_block1}
+		DW_AT_name file_extern_locempty_resolvable
+		DW_AT_type :$integer_label
+		DW_AT_external 1 flag
+		DW_AT_location {} DW_FORM_block1
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name file_extern_locempty_unresolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_external 1 flag}
-		{DW_AT_location {} DW_FORM_block1}
+		DW_AT_name file_extern_locempty_unresolvable
+		DW_AT_type :$integer_label
+		DW_AT_external 1 flag
+		DW_AT_location {} DW_FORM_block1
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name file_extern_locaddr_resolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_external 1 flag}
-		{DW_AT_location {
+		DW_AT_name file_extern_locaddr_resolvable
+		DW_AT_type :$integer_label
+		DW_AT_external 1 flag
+		DW_AT_location [subst {
 		    DW_OP_addr [gdb_target_symbol file_extern_locaddr_resolvable]
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name file_extern_locaddr_unresolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_external 1 flag}
-		{DW_AT_location {
+		DW_AT_name file_extern_locaddr_unresolvable
+		DW_AT_type :$integer_label
+		DW_AT_external 1 flag
+		DW_AT_location [subst {
 		    DW_OP_addr [gdb_target_symbol file_extern_locaddr_resolvable]
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name main_local_locno_resolvable}
-		{DW_AT_type :$integer_label}
+		DW_AT_name main_local_locno_resolvable
+		DW_AT_type :$integer_label
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name main_local_locno_unresolvable}
-		{DW_AT_type :$integer_label}
+		DW_AT_name main_local_locno_unresolvable
+		DW_AT_type :$integer_label
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name main_local_locempty_resolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_location {} DW_FORM_block1}
+		DW_AT_name main_local_locempty_resolvable
+		DW_AT_type :$integer_label
+		DW_AT_location {} DW_FORM_block1
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name main_local_locempty_unresolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_location {} DW_FORM_block1}
+		DW_AT_name main_local_locempty_unresolvable
+		DW_AT_type :$integer_label
+		DW_AT_location {} DW_FORM_block1
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name main_local_locaddr_resolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_location {
+		DW_AT_name main_local_locaddr_resolvable
+		DW_AT_type :$integer_label
+		DW_AT_location [subst {
 		    DW_OP_addr [gdb_target_symbol main_local_locaddr_resolvable]
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name main_local_locaddr_unresolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_location {
+		DW_AT_name main_local_locaddr_unresolvable
+		DW_AT_type :$integer_label
+		DW_AT_location [subst {
 		    DW_OP_addr [gdb_target_symbol main_local_locaddr_resolvable]
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name main_extern_locno_resolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_external 1 flag}
+		DW_AT_name main_extern_locno_resolvable
+		DW_AT_type :$integer_label
+		DW_AT_external 1 flag
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name main_extern_locno_unresolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_external 1 flag}
+		DW_AT_name main_extern_locno_unresolvable
+		DW_AT_type :$integer_label
+		DW_AT_external 1 flag
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name main_extern_locempty_resolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_external 1 flag}
-		{DW_AT_location {} DW_FORM_block1}
+		DW_AT_name main_extern_locempty_resolvable
+		DW_AT_type :$integer_label
+		DW_AT_external 1 flag
+		DW_AT_location {} DW_FORM_block1
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name main_extern_locempty_unresolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_external 1 flag}
-		{DW_AT_location {} DW_FORM_block1}
+		DW_AT_name main_extern_locempty_unresolvable
+		DW_AT_type :$integer_label
+		DW_AT_external 1 flag
+		DW_AT_location {} DW_FORM_block1
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name main_extern_locaddr_resolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_external 1 flag}
-		{DW_AT_location {
+		DW_AT_name main_extern_locaddr_resolvable
+		DW_AT_type :$integer_label
+		DW_AT_external 1 flag
+		DW_AT_location [subst {
 		    DW_OP_addr [gdb_target_symbol main_extern_locaddr_resolvable]
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    }
 	    DW_TAG_variable {
-		{DW_AT_name main_extern_locaddr_unresolvable}
-		{DW_AT_type :$integer_label}
-		{DW_AT_external 1 flag}
-		{DW_AT_location {
+		DW_AT_name main_extern_locaddr_unresolvable
+		DW_AT_type :$integer_label
+		DW_AT_external 1 flag
+		DW_AT_location [subst {
 		    DW_OP_addr [gdb_target_symbol main_extern_locaddr_resolvable]
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.exp b/gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.exp
index 870c8c1..866df3a 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.exp
@@ -46,74 +46,74 @@
 	cu { addr_size 4 } {
     
 	    DW_TAG_compile_unit {
-		{DW_AT_language @DW_LANG_C99}
-		{DW_AT_name     $srcfile}
-		{DW_AT_comp_dir /tmp}
+		DW_AT_language @DW_LANG_C99
+		DW_AT_name     $srcfile
+		DW_AT_comp_dir /tmp
 	    } {
 		declare_labels int_label struct_label pointer_label \
 			       array_label
 
 		int_label: DW_TAG_base_type {
-		    {DW_AT_byte_size 4 DW_FORM_sdata}
-		    {DW_AT_encoding  @DW_ATE_signed}
-		    {DW_AT_name      integer}
+		    DW_AT_byte_size 4 DW_FORM_sdata
+		    DW_AT_encoding  @DW_ATE_signed
+		    DW_AT_name      integer
 		}
     
 		array_label: DW_TAG_array_type {
-		    {DW_AT_name foo__array_type}
-		    {DW_AT_type :$int_label}
+		    DW_AT_name foo__array_type
+		    DW_AT_type :$int_label
 		} {
 		    DW_TAG_subrange_type {
-			{DW_AT_type	   :$int_label}
-			{DW_AT_lower_bound 0   DW_FORM_data1}
-			{DW_AT_upper_bound 127 DW_FORM_data1}
+			DW_AT_type	   :$int_label
+			DW_AT_lower_bound 0   DW_FORM_data1
+			DW_AT_upper_bound 127 DW_FORM_data1
 		    }   
 		}
     
 		struct_label: DW_TAG_structure_type {
-		    {DW_AT_name "foo"}
-		    {DW_AT_byte_size 12 DW_FORM_sdata}
+		    DW_AT_name "foo"
+		    DW_AT_byte_size 12 DW_FORM_sdata
 		} {
 		    member {
-			{name a}
-			{type :$int_label}
-			{data_member_location 0 data1}
+			DW_AT_name a
+			DW_AT_type :$int_label
+			DW_AT_data_member_location 0 data1
 		    }
 		    member {
-			{name x}
-			{type :$array_label}
-			{data_member_location 4 data1}
+			DW_AT_name x
+			DW_AT_type :$array_label
+			DW_AT_data_member_location 4 data1
 		    }
 		    member {
-			{name y}
-			{type :$pointer_label}
-			{data_member_location 8 data1}
+			DW_AT_name y
+			DW_AT_type :$pointer_label
+			DW_AT_data_member_location 8 data1
 		    }
 		}
     
 		pointer_label: DW_TAG_pointer_type {
-		    {DW_AT_byte_size 4 DW_FORM_sdata}
-		    {DW_AT_type  :$struct_label}
+		    DW_AT_byte_size 4 DW_FORM_sdata
+		    DW_AT_type  :$struct_label
 		}
     
 		DW_TAG_subprogram {
-		    {DW_AT_name func01}
-		    {DW_AT_type :$int_label}
-		    {external   1 flag}
-		    {MACRO_AT_func {func01}}
+		    DW_AT_name func01
+		    DW_AT_type :$int_label
+		    DW_AT_external   1 flag
+		    MACRO_AT_func {func01}
 		} {
 		    DW_TAG_variable {
-			{DW_AT_name ptr}
-			{DW_AT_type :$pointer_label}
-			{DW_AT_location {} DW_FORM_block1}
+			DW_AT_name ptr
+			DW_AT_type :$pointer_label
+			DW_AT_location {} DW_FORM_block1
 		    }
 		}
     
 		DW_TAG_subprogram {
-		    {DW_AT_name main}
-		    {DW_AT_type :$int_label}
-		    {external   1 flag}
-		    {MACRO_AT_func {main}}
+		    DW_AT_name main
+		    DW_AT_type :$int_label
+		    DW_AT_external   1 flag
+		    MACRO_AT_func {main}
 		} {
 		}
 	    }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-out-of-range-end-of-seq.exp b/gdb/testsuite/gdb.dwarf2/dw2-out-of-range-end-of-seq.exp
index 79c03c7..70db471 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-out-of-range-end-of-seq.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-out-of-range-end-of-seq.exp
@@ -39,15 +39,15 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name $srcfile}
-	    {stmt_list $Llines DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name $srcfile
+	    DW_AT_stmt_list $Llines DW_FORM_sec_offset
 	} {
 	    subprogram {
-		{external 1 flag}
-		{name main}
-		{low_pc $main_start}
-		{high_pc $main_end addr}
+		DW_AT_external 1 flag
+		DW_AT_name main
+		DW_AT_low_pc $main_start
+		DW_AT_high_pc $main_end addr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-prologue-end-2.exp b/gdb/testsuite/gdb.dwarf2/dw2-prologue-end-2.exp
index eea17b0..cf94c71 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-prologue-end-2.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-prologue-end-2.exp
@@ -30,21 +30,21 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name dw2-prologue-end.c}
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name dw2-prologue-end.c
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
 	} {
 	    subprogram {
-		{external 1 flag}
-		{name foo}
-		{low_pc foo_label addr}
-		{high_pc foo_end addr}
+		DW_AT_external 1 flag
+		DW_AT_name foo
+		DW_AT_low_pc foo_label addr
+		DW_AT_high_pc foo_end addr
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name bar}
-		{low_pc bar_label addr}
-		{high_pc bar_end addr}
+		DW_AT_external 1 flag
+		DW_AT_name bar
+		DW_AT_low_pc bar_label addr
+		DW_AT_high_pc bar_end addr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-prologue-end.exp b/gdb/testsuite/gdb.dwarf2/dw2-prologue-end.exp
index 070865b..8e66abe 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-prologue-end.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-prologue-end.exp
@@ -32,15 +32,15 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name dw2-prologue-end.c}
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name dw2-prologue-end.c
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
 	} {
 	    subprogram {
-		{external 1 flag}
-		{name main}
-		{low_pc $main_start addr}
-		{high_pc "$main_start + $main_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name main
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc "$main_start + $main_len" addr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ranges-base.exp b/gdb/testsuite/gdb.dwarf2/dw2-ranges-base.exp
index e63bbc3..9e39f6b 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-ranges-base.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-ranges-base.exp
@@ -45,22 +45,22 @@
     # .debug_ranges data then the test achieves its objective.
     cu { label cu_label } {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name dw-ranges-base.c}
-	    {stmt_list $L DW_FORM_sec_offset}
-	    {ranges ${ranges_label} DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name dw-ranges-base.c
+	    DW_AT_stmt_list $L DW_FORM_sec_offset
+	    DW_AT_ranges ${ranges_label} DW_FORM_sec_offset
 	} {
 	    subprogram {
-		{external 1 flag}
-		{name main}
+		DW_AT_external 1 flag
+		DW_AT_name main
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name frame2}
+		DW_AT_external 1 flag
+		DW_AT_name frame2
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name frame3}
+		DW_AT_external 1 flag
+		DW_AT_name frame3
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ranges-func.exp b/gdb/testsuite/gdb.dwarf2/dw2-ranges-func.exp
index 9fea8a8..56aab60 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-ranges-func.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-ranges-func.exp
@@ -70,49 +70,49 @@
 
 	cu {} {
 	    compile_unit {
-		{language @DW_LANG_C}
-		{name dw-ranges-func2.c}
-		{stmt_list $L DW_FORM_sec_offset}
-		{low_pc 0 addr}
-		{ranges ${cu_ranges_label} DW_FORM_sec_offset}
+		DW_AT_language @DW_LANG_C
+		DW_AT_name dw-ranges-func2.c
+		DW_AT_stmt_list $L DW_FORM_sec_offset
+		DW_AT_low_pc 0 addr
+		DW_AT_ranges ${cu_ranges_label} DW_FORM_sec_offset
 	    } {
 		integer_label: DW_TAG_base_type {
-		    {DW_AT_byte_size $int_size DW_FORM_sdata}
-		    {DW_AT_encoding  @DW_ATE_signed}
-		    {DW_AT_name      integer}
+		    DW_AT_byte_size $int_size DW_FORM_sdata
+		    DW_AT_encoding  @DW_ATE_signed
+		    DW_AT_name      integer
 		}
 		volatile_label: DW_TAG_volatile_type {
-		    {type :$integer_label}
+		    DW_AT_type :$integer_label
 		}
 		DW_TAG_variable {
-		    {name e}
-		    {external 1 flag}
-		    {type :$volatile_label}
-		    {location {addr $e_var} SPECIAL_expr}
+		    DW_AT_name e
+		    DW_AT_external 1 flag
+		    DW_AT_type :$volatile_label
+		    DW_AT_location [subst {addr $e_var}] SPECIAL_expr
 		}
 		subprogram {
-		    {external 1 flag}
-		    {name main}
-		    {DW_AT_type :$integer_label}
-		    {low_pc $main_start addr}
-		    {high_pc $main_len DW_FORM_data4}
+		    DW_AT_external 1 flag
+		    DW_AT_name main
+		    DW_AT_type :$integer_label
+		    DW_AT_low_pc $main_start addr
+		    DW_AT_high_pc $main_len DW_FORM_data4
 		}
 		subprogram {
-		    {external 1 flag}
-		    {name foo}
-		    {ranges ${func_ranges_label} DW_FORM_sec_offset}
+		    DW_AT_external 1 flag
+		    DW_AT_name foo
+		    DW_AT_ranges ${func_ranges_label} DW_FORM_sec_offset
 		}
 		subprogram {
-		    {external 1 flag}
-		    {name bar}
-		    {low_pc $bar_start addr}
-		    {high_pc $bar_len DW_FORM_data4}
+		    DW_AT_external 1 flag
+		    DW_AT_name bar
+		    DW_AT_low_pc $bar_start addr
+		    DW_AT_high_pc $bar_len DW_FORM_data4
 		}
 		subprogram {
-		    {external 1 flag}
-		    {name baz}
-		    {low_pc $baz_start addr}
-		    {high_pc $baz_len DW_FORM_data4}
+		    DW_AT_external 1 flag
+		    DW_AT_name baz
+		    DW_AT_low_pc $baz_start addr
+		    DW_AT_high_pc $baz_len DW_FORM_data4
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ranges-overlap.exp b/gdb/testsuite/gdb.dwarf2/dw2-ranges-overlap.exp
index 8e7d51e..75c874e 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-ranges-overlap.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-ranges-overlap.exp
@@ -44,13 +44,13 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C_plus_plus}
-	    {name $srcfile}
-	    {ranges ${ranges_label} DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name $srcfile
+	    DW_AT_ranges ${ranges_label} DW_FORM_sec_offset
 	} {
 	    subprogram {
-		{external 1 flag}
-		{name quux}
+		DW_AT_external 1 flag
+		DW_AT_name quux
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ranges-psym-warning.exp b/gdb/testsuite/gdb.dwarf2/dw2-ranges-psym-warning.exp
index 6120878..fa1e03b 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-ranges-psym-warning.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-ranges-psym-warning.exp
@@ -61,31 +61,31 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name dw-ranges-psym.c}
-	    {low_pc 0 addr}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name dw-ranges-psym.c
+	    DW_AT_low_pc 0 addr
 	} {
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size $int_size DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      integer}
+		DW_AT_byte_size $int_size DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      integer
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name foo}
-		{ranges ${func_ranges_label} DW_FORM_sec_offset}
+		DW_AT_external 1 flag
+		DW_AT_name foo
+		DW_AT_ranges ${func_ranges_label} DW_FORM_sec_offset
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name bar}
-		{low_pc $bar_start addr}
-		{high_pc $bar_len DW_FORM_data4}
+		DW_AT_external 1 flag
+		DW_AT_name bar
+		DW_AT_low_pc $bar_start addr
+		DW_AT_high_pc $bar_len DW_FORM_data4
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name baz}
-		{low_pc $baz_start addr}
-		{high_pc $baz_len DW_FORM_data4}
+		DW_AT_external 1 flag
+		DW_AT_name baz
+		DW_AT_low_pc $baz_start addr
+		DW_AT_high_pc $baz_len DW_FORM_data4
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.exp b/gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.exp
index e8c9890..6440722 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.exp
@@ -63,35 +63,35 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name dw-ranges-psym.c}
-	    {low_pc 0 addr}
-	    {ranges ${cu_ranges_label} DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name dw-ranges-psym.c
+	    DW_AT_low_pc 0 addr
+	    DW_AT_ranges ${cu_ranges_label} DW_FORM_sec_offset
 	} {
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size $int_size DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      integer}
+		DW_AT_byte_size $int_size DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      integer
 	    }
 	    volatile_label: DW_TAG_volatile_type {
-		{type :$integer_label}
+		DW_AT_type :$integer_label
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name someothername}
-		{ranges ${func_ranges_label} DW_FORM_sec_offset}
+		DW_AT_external 1 flag
+		DW_AT_name someothername
+		DW_AT_ranges ${func_ranges_label} DW_FORM_sec_offset
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name bar}
-		{low_pc $bar_start addr}
-		{high_pc $bar_len DW_FORM_data4}
+		DW_AT_external 1 flag
+		DW_AT_name bar
+		DW_AT_low_pc $bar_start addr
+		DW_AT_high_pc $bar_len DW_FORM_data4
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name baz}
-		{low_pc $baz_start addr}
-		{high_pc $baz_len DW_FORM_data4}
+		DW_AT_external 1 flag
+		DW_AT_name baz
+		DW_AT_low_pc $baz_start addr
+		DW_AT_high_pc $baz_len DW_FORM_data4
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-regno-invalid.exp b/gdb/testsuite/gdb.dwarf2/dw2-regno-invalid.exp
index 5f3c324..7cfeb58 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-regno-invalid.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-regno-invalid.exp
@@ -27,27 +27,27 @@
 Dwarf::assemble $asm_file {
     cu {} {
 	compile_unit {
-	    {MACRO_AT_range {main}}
+	    MACRO_AT_range {main}
 	} {
 	    declare_labels integer_label
 
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      integer}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      integer
 	    }
 
 	    DW_TAG_subprogram {
-		{DW_AT_external 1 flag}
-		{MACRO_AT_func {main}}
+		DW_AT_external 1 flag
+		MACRO_AT_func {main}
 	    } {
 		DW_TAG_variable {
-		    {DW_AT_name bregx}
-			{DW_AT_type :$integer_label}
-			{DW_AT_external 1 flag}
-		    {DW_AT_location {
+		    DW_AT_name bregx
+			DW_AT_type :$integer_label
+			DW_AT_external 1 flag
+		    DW_AT_location {
 			DW_OP_bregx 0xffffffff 0
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-skipped-line-entries.exp b/gdb/testsuite/gdb.dwarf2/dw2-skipped-line-entries.exp
index 2c2b5ff..1d86c61 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-skipped-line-entries.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-skipped-line-entries.exp
@@ -40,14 +40,14 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name $::srcfile}
-	    {low_pc 0 addr}
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name $::srcfile
+	    DW_AT_low_pc 0 addr
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
 	} {
 	    subprogram {
-		{external 1 flag}
-		{MACRO_AT_func {main}}
+		DW_AT_external 1 flag
+		MACRO_AT_func {main}
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-step-between-different-inline-functions.exp b/gdb/testsuite/gdb.dwarf2/dw2-step-between-different-inline-functions.exp
index a2f36cf..1eb1e38 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-step-between-different-inline-functions.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-step-between-different-inline-functions.exp
@@ -79,48 +79,48 @@
 
     cu { version 4 } {
 	compile_unit {
-	    {producer "gcc"}
-	    {language @DW_LANG_C}
-	    {name ${srcfile}}
-	    {comp_dir /tmp}
-	    {stmt_list $lines_table DW_FORM_sec_offset}
-	    {low_pc 0 addr}
+	    DW_AT_producer "gcc"
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name ${srcfile}
+	    DW_AT_comp_dir /tmp
+	    DW_AT_stmt_list $lines_table DW_FORM_sec_offset
+	    DW_AT_low_pc 0 addr
 	} {
 	    bar_label: subprogram {
-		{external 1 flag}
-		{name bar}
-		{decl_file 1 data1}
-		{decl_line $bar_decl_line data1}
-		{decl_column 1 data1}
-		{inline 3 data1}
+		DW_AT_external 1 flag
+		DW_AT_name bar
+		DW_AT_decl_file 1 data1
+		DW_AT_decl_line $bar_decl_line data1
+		DW_AT_decl_column 1 data1
+		DW_AT_inline 3 data1
 	    }
 	    baz_label: subprogram {
-		{external 1 flag}
-		{name baz}
-		{decl_file 1 data1}
-		{decl_line $baz_decl_line data1}
-		{decl_column 1 data1}
-		{inline 3 data1}
+		DW_AT_external 1 flag
+		DW_AT_name baz
+		DW_AT_decl_file 1 data1
+		DW_AT_decl_line $baz_decl_line data1
+		DW_AT_decl_column 1 data1
+		DW_AT_inline 3 data1
 	    }
 	    subprogram {
-		{name foo}
-		{decl_file 1 data1}
-		{decl_line $foo_decl_line data1}
-		{decl_column 1 data1}
-		{ranges ${ranges_label_foo} DW_FORM_sec_offset}
-		{external 1 flag}
+		DW_AT_name foo
+		DW_AT_decl_file 1 data1
+		DW_AT_decl_line $foo_decl_line data1
+		DW_AT_decl_column 1 data1
+		DW_AT_ranges ${ranges_label_foo} DW_FORM_sec_offset
+		DW_AT_external 1 flag
 	    } {
 		inlined_subroutine {
-		    {abstract_origin %$bar_label}
-		    {call_file 1 data1}
-		    {call_line $foo_src_2 data1}
-		    {ranges ${ranges_label_bar} DW_FORM_sec_offset}
+		    DW_AT_abstract_origin %$bar_label
+		    DW_AT_call_file 1 data1
+		    DW_AT_call_line $foo_src_2 data1
+		    DW_AT_ranges ${ranges_label_bar} DW_FORM_sec_offset
 		}
 		inlined_subroutine {
-		    {abstract_origin %$baz_label}
-		    {call_file 1 data1}
-		    {call_line $foo_src_3 data1}
-		    {ranges ${ranges_label_baz} DW_FORM_sec_offset}
+		    DW_AT_abstract_origin %$baz_label
+		    DW_AT_call_file 1 data1
+		    DW_AT_call_line $foo_src_3 data1
+		    DW_AT_ranges ${ranges_label_baz} DW_FORM_sec_offset
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-step-between-inline-func-blocks.exp b/gdb/testsuite/gdb.dwarf2/dw2-step-between-inline-func-blocks.exp
index ea8c7d3..1a76c58 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-step-between-inline-func-blocks.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-step-between-inline-func-blocks.exp
@@ -71,34 +71,34 @@
 
     cu { version 4 } {
 	compile_unit {
-	    {producer "gcc"}
-	    {language @DW_LANG_C}
-	    {name ${srcfile}}
-	    {comp_dir /tmp}
-	    {stmt_list $lines_table DW_FORM_sec_offset}
-	    {low_pc 0 addr}
+	    DW_AT_producer "gcc"
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name ${srcfile}
+	    DW_AT_comp_dir /tmp
+	    DW_AT_stmt_list $lines_table DW_FORM_sec_offset
+	    DW_AT_low_pc 0 addr
 	} {
 	    bar_label: subprogram {
-		{external 1 flag}
-		{name bar}
-		{decl_file 1 data1}
-		{decl_line $bar_decl_line data1}
-		{decl_column 1 data1}
-		{inline 3 data1}
+		DW_AT_external 1 flag
+		DW_AT_name bar
+		DW_AT_decl_file 1 data1
+		DW_AT_decl_line $bar_decl_line data1
+		DW_AT_decl_column 1 data1
+		DW_AT_inline 3 data1
 	    }
 	    subprogram {
-		{name foo}
-		{decl_file 1 data1}
-		{decl_line $foo_decl_line data1}
-		{decl_column 1 data1}
-		{ranges ${ranges_label_foo} DW_FORM_sec_offset}
-		{external 1 flag}
+		DW_AT_name foo
+		DW_AT_decl_file 1 data1
+		DW_AT_decl_line $foo_decl_line data1
+		DW_AT_decl_column 1 data1
+		DW_AT_ranges ${ranges_label_foo} DW_FORM_sec_offset
+		DW_AT_external 1 flag
 	    } {
 		inlined_subroutine {
-		    {abstract_origin %$bar_label}
-		    {call_file 1 data1}
-		    {call_line $foo_src_3 data1}
-		    {ranges ${ranges_label_bar} DW_FORM_sec_offset}
+		    DW_AT_abstract_origin %$bar_label
+		    DW_AT_call_file 1 data1
+		    DW_AT_call_line $foo_src_3 data1
+		    DW_AT_ranges ${ranges_label_bar} DW_FORM_sec_offset
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-step-out-of-function-no-stmt.exp b/gdb/testsuite/gdb.dwarf2/dw2-step-out-of-function-no-stmt.exp
index a2d197b..3eaaa52 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-step-out-of-function-no-stmt.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-step-out-of-function-no-stmt.exp
@@ -50,17 +50,17 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name $srcfile}
-	    {stmt_list $Llines DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name $srcfile
+	    DW_AT_stmt_list $Llines DW_FORM_sec_offset
 	} {
 	    subprogram {
-		{external 1 flag}
-		{MACRO_AT_func {main}}
+		DW_AT_external 1 flag
+		MACRO_AT_func {main}
 	    }
 	    subprogram {
-		{external 1 flag}
-		{MACRO_AT_func {bar}}
+		DW_AT_external 1 flag
+		MACRO_AT_func {bar}
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes-lookup.exp b/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes-lookup.exp
index aaa32ae..ccee277 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes-lookup.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes-lookup.exp
@@ -54,23 +54,23 @@
 
     cu {} {
 	partial_label: partial_unit {
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
 	} {
 	    DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      myint}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      myint
 	    }
 	}
     }
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {DW_AT_name bla.c}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name bla.c
 	} {
 	    imported_unit {
-		{import $partial_label ref_addr}
+		DW_AT_import $partial_label ref_addr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes.exp b/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes.exp
index fce4346..3e34c3c 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes.exp
@@ -38,11 +38,11 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
 	} {
 	    imported_unit {
-		{import $partial_label ref_addr}
+		DW_AT_import $partial_label ref_addr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-unexpected-entry-pc.exp b/gdb/testsuite/gdb.dwarf2/dw2-unexpected-entry-pc.exp
index d8b738d..fb257f0 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-unexpected-entry-pc.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-unexpected-entry-pc.exp
@@ -102,32 +102,32 @@
 
 	cu { version $dwarf_version } {
 	    compile_unit {
-		{producer "gcc"}
-		{language @DW_LANG_C}
-		{name $::srcfile}
-		{comp_dir /tmp}
-		{stmt_list $lines_table DW_FORM_sec_offset}
-		{low_pc 0 addr}
+		DW_AT_producer "gcc"
+		DW_AT_language @DW_LANG_C
+		DW_AT_name $::srcfile
+		DW_AT_comp_dir /tmp
+		DW_AT_stmt_list $lines_table DW_FORM_sec_offset
+		DW_AT_low_pc 0 addr
 	    } {
 		inline_func: subprogram {
-		    {name bar}
-		    {inline @DW_INL_declared_inlined}
+		    DW_AT_name bar
+		    DW_AT_inline @DW_INL_declared_inlined
 		}
 		subprogram {
-		    {name foo}
-		    {decl_file 1 data1}
-		    {decl_line $::foo_decl_line data1}
-		    {decl_column 1 data1}
-		    {low_pc $::foo_start addr}
-		    {high_pc $::foo_len $::ptr_type}
-		    {external 1 flag}
+		    DW_AT_name foo
+		    DW_AT_decl_file 1 data1
+		    DW_AT_decl_line $::foo_decl_line data1
+		    DW_AT_decl_column 1 data1
+		    DW_AT_low_pc $::foo_start addr
+		    DW_AT_high_pc $::foo_len $::ptr_type
+		    DW_AT_external 1 flag
 		} {
 		    inlined_subroutine {
-			{abstract_origin %$inline_func}
-			{call_file 1 data1}
-			{call_line $::bar_call_line data1}
-			{entry_pc $entry_label addr}
-			{ranges ${ranges_label} DW_FORM_sec_offset}
+			DW_AT_abstract_origin %$inline_func
+			DW_AT_call_file 1 data1
+			DW_AT_call_line $::bar_call_line data1
+			DW_AT_entry_pc $entry_label addr
+			DW_AT_ranges ${ranges_label} DW_FORM_sec_offset
 		    }
 		}
 	    }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-unspecified-type.exp b/gdb/testsuite/gdb.dwarf2/dw2-unspecified-type.exp
index 0822c98..fece767 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-unspecified-type.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-unspecified-type.exp
@@ -51,41 +51,41 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_Mips_Assembler}
+	    DW_AT_language @DW_LANG_Mips_Assembler
 	} {
 	    unspecified_type_label: unspecified_type {}
 
 	    DW_TAG_subprogram {
-		{name foo}
-		{low_pc $foo_start addr}
-		{high_pc $foo_end addr}
-		{type :$unspecified_type_label}
+		DW_AT_name foo
+		DW_AT_low_pc $foo_start addr
+		DW_AT_high_pc $foo_end addr
+		DW_AT_type :$unspecified_type_label
 	    }
 	}
     }
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_Mips_Assembler}
-	    {producer "GNU AS 2.39.0"}
+	    DW_AT_language @DW_LANG_Mips_Assembler
+	    DW_AT_producer "GNU AS 2.39.0"
 	} {
 	    DW_TAG_subprogram {
-		{name bar}
-		{low_pc $bar_start addr}
-		{high_pc $bar_end addr}
+		DW_AT_name bar
+		DW_AT_low_pc $bar_start addr
+		DW_AT_high_pc $bar_end addr
 	    }
 	}
     }
 
     cu { version 2 } {
 	compile_unit {
-	    {language @DW_LANG_Mips_Assembler}
-	    {producer "GNU AS 2.40.0"}
+	    DW_AT_language @DW_LANG_Mips_Assembler
+	    DW_AT_producer "GNU AS 2.40.0"
 	} {
 	    DW_TAG_subprogram {
-		{name foo2}
-		{low_pc $foo2_start addr}
-		{high_pc $foo2_end addr}
+		DW_AT_name foo2
+		DW_AT_low_pc $foo2_start addr
+		DW_AT_high_pc $foo2_end addr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-unusual-field-names.exp b/gdb/testsuite/gdb.dwarf2/dw2-unusual-field-names.exp
index 0a306dd..6632a86 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-unusual-field-names.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-unusual-field-names.exp
@@ -59,49 +59,49 @@
 
 	cu {} {
 	    DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_C}
-                {DW_AT_name     $srcfile}
-                {DW_AT_comp_dir /tmp}
+		DW_AT_language @DW_LANG_C
+		DW_AT_name     $srcfile
+		DW_AT_comp_dir /tmp
 	    } {
 		declare_labels itype ptype stype
 
 		itype: DW_TAG_base_type {
-		    {DW_AT_byte_size $int_size DW_FORM_sdata}
-		    {DW_AT_encoding  @DW_ATE_signed}
-		    {DW_AT_name int}
+		    DW_AT_byte_size $int_size DW_FORM_sdata
+		    DW_AT_encoding  @DW_ATE_signed
+		    DW_AT_name int
 		}
 
 		stype: DW_TAG_structure_type {
-		    {DW_AT_name "foo"}
-		    {DW_AT_byte_size $int_size DW_FORM_sdata}
+		    DW_AT_name "foo"
+		    DW_AT_byte_size $int_size DW_FORM_sdata
 		} {
 		    member {
-			{name $field_name}
-			{type :$itype}
-			{data_member_location 0 data1}
+			DW_AT_name $field_name
+			DW_AT_type :$itype
+			DW_AT_data_member_location 0 data1
 		    }
 		}
 
 		ptype: DW_TAG_pointer_type {
-		    {DW_AT_type :$stype}
+		    DW_AT_type :$stype
 		}
 
 		DW_TAG_variable {
-		    {DW_AT_name obj}
-		    {DW_AT_type :$stype}
-		    {DW_AT_location {
+		    DW_AT_name obj
+		    DW_AT_type :$stype
+		    DW_AT_location [subst {
 			DW_OP_addr [gdb_target_symbol obj]
-		    } SPECIAL_expr}
-		    {external 1 flag}
+		    }] SPECIAL_expr
+		    DW_AT_external 1 flag
 		}
 
 		DW_TAG_variable {
-		    {DW_AT_name ptr}
-		    {DW_AT_type :$ptype}
-		    {DW_AT_location {
+		    DW_AT_name ptr
+		    DW_AT_type :$ptype
+		    DW_AT_location [subst {
 			DW_OP_addr [gdb_target_symbol ptr]
-		    } SPECIAL_expr}
-		    {external 1 flag}
+		    }] SPECIAL_expr
+		    DW_AT_external 1 flag
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-using-debug-str.exp b/gdb/testsuite/gdb.dwarf2/dw2-using-debug-str.exp
index e46cbe5..6d8d9b1 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-using-debug-str.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-using-debug-str.exp
@@ -34,51 +34,51 @@
 
     cu {} {
 	compile_unit {
-            {language @DW_LANG_C}
-            {name ${srcfile}}
-        } {
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name ${srcfile}
+	} {
 	    declare_labels int4_type struct_type
 
 	    int4_type: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      integer}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	integer
 	    }
 
 	    struct_type: DW_TAG_structure_type {
-		{DW_AT_name "foo_t" DW_FORM_strp}
-		{DW_AT_byte_size 12 DW_FORM_sdata}
+		DW_AT_name "foo_t" DW_FORM_strp
+		DW_AT_byte_size 12 DW_FORM_sdata
 	    } {
 		member {
-		    {name "aa" DW_FORM_strp}
-		    {type :$int4_type}
-		    {data_member_location 0 data1}
+		    DW_AT_name "aa" DW_FORM_strp
+		    DW_AT_type :$int4_type
+		    DW_AT_data_member_location 0 data1
 		}
 		member {
-		    {name "bb" DW_FORM_strp}
-		    {type :$int4_type}
-		    {data_member_location 4 data1}
+		    DW_AT_name "bb" DW_FORM_strp
+		    DW_AT_type :$int4_type
+		    DW_AT_data_member_location 4 data1
 		}
 		member {
-		    {name "cc" DW_FORM_strp}
-		    {type :$int4_type}
-		    {data_member_location 8 data1}
+		    DW_AT_name "cc" DW_FORM_strp
+		    DW_AT_type :$int4_type
+		    DW_AT_data_member_location 8 data1
 		}
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name global_var DW_FORM_strp}
-		{DW_AT_type :$struct_type}
-		{DW_AT_location {
+		DW_AT_name global_var DW_FORM_strp
+		DW_AT_type :$struct_type
+		DW_AT_location [subst {
 		    DW_OP_addr [gdb_target_symbol global_var]
-		} SPECIAL_expr}
-		{external 1 flag}
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
 	    }
 
 	    subprogram {
-		{external 1 flag}
-		{name main DW_FORM_strp}
-		{MACRO_AT_range {main}}
+		DW_AT_external 1 flag
+		DW_AT_name main DW_FORM_strp
+		MACRO_AT_range {main}
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-vendor-extended-opcode.exp b/gdb/testsuite/gdb.dwarf2/dw2-vendor-extended-opcode.exp
index 3e4ffc4..6432c9d 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-vendor-extended-opcode.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-vendor-extended-opcode.exp
@@ -34,13 +34,13 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name dw2-vendor-extended-opcode.c}
-	    {stmt_list $Llines DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name dw2-vendor-extended-opcode.c
+	    DW_AT_stmt_list $Llines DW_FORM_sec_offset
 	} {
 	    subprogram {
-		{external 1 flag}
-		{MACRO_AT_func {main}}
+		DW_AT_external 1 flag
+		MACRO_AT_func {main}
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-weird-type-len.exp b/gdb/testsuite/gdb.dwarf2/dw2-weird-type-len.exp
index 0c76c87..35eaa16 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-weird-type-len.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-weird-type-len.exp
@@ -35,52 +35,52 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C}
-	    {DW_AT_name     $srcfile}
-	    {DW_AT_comp_dir /tmp}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name     $srcfile
+	    DW_AT_comp_dir /tmp
 	} {
 	    declare_labels integer_label foo_t_label bar_t_label
 
 	    foo_t_label: DW_TAG_structure_type {
-		{name foo_t}
-		{byte_size 3 DW_FORM_sdata}
+		DW_AT_name foo_t
+		DW_AT_byte_size 3 DW_FORM_sdata
 	    } {
 		member {
-		    {name field}
-		    {type :$integer_label}
-		    {data_member_location 0 DW_FORM_sdata}
+		    DW_AT_name field
+		    DW_AT_type :$integer_label
+		    DW_AT_data_member_location 0 DW_FORM_sdata
 		}
 	    }
 
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size 3 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      integer}
+		DW_AT_byte_size 3 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      integer
 	    }
 
 	    bar_t_label: DW_TAG_structure_type {
-		{name bar_t}
-		{byte_size 3 DW_FORM_sdata}
+		DW_AT_name bar_t
+		DW_AT_byte_size 3 DW_FORM_sdata
 	    } {
 		member {
-		    {name f}
-		    {type :$foo_t_label}
-		    {data_member_location 0 DW_FORM_sdata}
+		    DW_AT_name f
+		    DW_AT_type :$foo_t_label
+		    DW_AT_data_member_location 0 DW_FORM_sdata
 		}
 	    }
 
 	    DW_TAG_subprogram {
-		{name main}
-		{low_pc $main_start addr}
-		{high_pc $main_len data8}
-		{DW_AT_type :$integer_label}
+		DW_AT_name main
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc $main_len data8
+		DW_AT_type :$integer_label
 	    }
 
 	    DW_TAG_subprogram {
-		{name get_bar}
-		{low_pc $get_bar_start addr}
-		{high_pc $get_bar_len data8}
-		{DW_AT_type :$bar_t_label}
+		DW_AT_name get_bar
+		DW_AT_low_pc $get_bar_start addr
+		DW_AT_high_pc $get_bar_len data8
+		DW_AT_type :$bar_t_label
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-wrong-mangled-name.exp b/gdb/testsuite/gdb.dwarf2/dw2-wrong-mangled-name.exp
index 33b1515..f892d70 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-wrong-mangled-name.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-wrong-mangled-name.exp
@@ -33,20 +33,20 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C_plus_plus}
-	    {name $srcfile}
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name $srcfile
 	} {
 	    subprogram {
-		{MACRO_AT_range {func_demangled_test}}
-		{linkage_name "_FUNC_WRONG_MANGLED__"}
-		{name "func_demangled_test"}
-		{external 1 flag}
+		MACRO_AT_range {func_demangled_test}
+		DW_AT_linkage_name "_FUNC_WRONG_MANGLED__"
+		DW_AT_name "func_demangled_test"
+		DW_AT_external 1 flag
 	    }
 	    subprogram {
-		{MACRO_AT_range {main}}
-		{external 1 flag}
-		{name main}
-		{main_subprogram 1 flag}
+		MACRO_AT_range {main}
+		DW_AT_external 1 flag
+		DW_AT_name main
+		DW_AT_main_subprogram 1 flag
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-zero-range.exp b/gdb/testsuite/gdb.dwarf2/dw2-zero-range.exp
index 1d20688..d5faf6f 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-zero-range.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-zero-range.exp
@@ -96,13 +96,13 @@
 
 	    cu {} {
 		compile_unit {
-		    {language @DW_LANG_C}
-		    {name $srcfile2}
-		    {ranges ${ranges_label} DW_FORM_sec_offset}
+		    DW_AT_language @DW_LANG_C
+		    DW_AT_name $srcfile2
+		    DW_AT_ranges ${ranges_label} DW_FORM_sec_offset
 		} {
 		    subprogram {
-			{external 1 flag}
-			{name foo}
+			DW_AT_external 1 flag
+			DW_AT_name foo
 		    }
 		}
 	    }
@@ -123,13 +123,13 @@
 		version 5
 	    } {
 		compile_unit {
-		    {language @DW_LANG_C}
-		    {name $srcfile2}
-		    {ranges ${rnglists_label} DW_FORM_sec_offset}
+		    DW_AT_language @DW_LANG_C
+		    DW_AT_name $srcfile2
+		    DW_AT_ranges ${rnglists_label} DW_FORM_sec_offset
 		} {
 		    subprogram {
-			{external 1 flag}
-			{name foo}
+			DW_AT_external 1 flag
+			DW_AT_name foo
 		    }
 		}
 	    }
diff --git a/gdb/testsuite/gdb.dwarf2/dwz-unused-pu.exp b/gdb/testsuite/gdb.dwarf2/dwz-unused-pu.exp
index b7dc275..d9daedf 100644
--- a/gdb/testsuite/gdb.dwarf2/dwz-unused-pu.exp
+++ b/gdb/testsuite/gdb.dwarf2/dwz-unused-pu.exp
@@ -28,9 +28,11 @@
     declare_labels partial_label int_label int_label2
 
     cu {} {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    subprogram {
-		{MACRO_AT_func { main }}
+		MACRO_AT_func { main }
 	    }
 	}
     }
@@ -38,15 +40,15 @@
     cu {} {
 	partial_unit {} {
 	    int_label: base_type {
-		{name int}
-		{byte_size 4 sdata}
-		{encoding @DW_ATE_signed}
+		DW_AT_name int
+		DW_AT_byte_size 4 sdata
+		DW_AT_encoding @DW_ATE_signed
 	    }
 
 	    constant {
-		{name the_int}
-		{type :$int_label}
-		{const_value 99 data1}
+		DW_AT_name the_int
+		DW_AT_type :$int_label
+		DW_AT_const_value 99 data1
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dwz.exp b/gdb/testsuite/gdb.dwarf2/dwz.exp
index 1d214c1..ebccea6 100644
--- a/gdb/testsuite/gdb.dwarf2/dwz.exp
+++ b/gdb/testsuite/gdb.dwarf2/dwz.exp
@@ -28,49 +28,53 @@
     cu {} {
 	partial_label: partial_unit {} {
 	    subprogram {
-		{MACRO_AT_func { main }}
+		MACRO_AT_func { main }
 	    }
 	}
     }
 
     cu {} {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    int_label2: base_type {
-		{name int}
-		{byte_size 4 sdata}
-		{encoding @DW_ATE_signed}
+		DW_AT_name int
+		DW_AT_byte_size 4 sdata
+		DW_AT_encoding @DW_ATE_signed
 	    }
 
 	    constant {
-		{name the_int}
-		{type :$int_label2}
-		{const_value 99 data1}
+		DW_AT_name the_int
+		DW_AT_type :$int_label2
+		DW_AT_const_value 99 data1
 	    }
 
 	    constant {
-		{name other_int}
-		{type :$int_label2}
-		{const_value 99 data1}
+		DW_AT_name other_int
+		DW_AT_type :$int_label2
+		DW_AT_const_value 99 data1
 	    }
 	}
     }
 
     cu {} {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    imported_unit {
-		{import $partial_label ref_addr}
+		DW_AT_import $partial_label ref_addr
 	    }
 
 	    int_label: base_type {
-		{name int}
-		{byte_size 4 sdata}
-		{encoding @DW_ATE_signed}
+		DW_AT_name int
+		DW_AT_byte_size 4 sdata
+		DW_AT_encoding @DW_ATE_signed
 	    }
 
 	    constant {
-		{name the_int}
-		{type :$int_label}
-		{const_value 23 data1}
+		DW_AT_name the_int
+		DW_AT_type :$int_label
+		DW_AT_const_value 23 data1
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dwzbuildid.tcl b/gdb/testsuite/gdb.dwarf2/dwzbuildid.tcl
index a9077eb..1aa889a 100644
--- a/gdb/testsuite/gdb.dwarf2/dwzbuildid.tcl
+++ b/gdb/testsuite/gdb.dwarf2/dwzbuildid.tcl
@@ -51,7 +51,9 @@
 	# Only the DWARF reader checks .gnu_debugaltlink, so make sure
 	# there is a bit of DWARF in here.
 	cu { label cu_start } {
-	    compile_unit {{language @DW_LANG_C}} {
+	    compile_unit {
+		DW_AT_language @DW_LANG_C
+	    } {
 	    }
 	}
 	aranges {} cu_start {
@@ -77,17 +79,19 @@
 	}
 
 	cu { label cu_start } {
-	    compile_unit {{language @DW_LANG_C}} {
+	    compile_unit {
+		DW_AT_language @DW_LANG_C
+	    } {
 		int_label2: base_type {
-		    {name int}
-		    {byte_size 4 sdata}
-		    {encoding @DW_ATE_signed}
+		    DW_AT_name int
+		    DW_AT_byte_size 4 sdata
+		    DW_AT_encoding @DW_ATE_signed
 		}
 
 		constant {
-		    {name the_int}
-		    {type :$int_label2}
-		    {const_value $value data1}
+		    DW_AT_name the_int
+		    DW_AT_type :$int_label2
+		    DW_AT_const_value $value data1
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/dwznolink.exp b/gdb/testsuite/gdb.dwarf2/dwznolink.exp
index 0c486ea..b568055 100644
--- a/gdb/testsuite/gdb.dwarf2/dwznolink.exp
+++ b/gdb/testsuite/gdb.dwarf2/dwznolink.exp
@@ -30,11 +30,13 @@
 # one point, this caused gdb crashes.
 Dwarf::assemble $asm_file {
     cu {} {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    constant {
-		{name 0 DW_FORM_GNU_strp_alt}
-		{type 97 DW_FORM_GNU_ref_alt}
-		{const_value 99 data1}
+		DW_AT_name 0 DW_FORM_GNU_strp_alt
+		DW_AT_type 97 DW_FORM_GNU_ref_alt
+		DW_AT_const_value 99 data1
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dyn-type-unallocated.exp b/gdb/testsuite/gdb.dwarf2/dyn-type-unallocated.exp
index 09af96c..e4248d0 100644
--- a/gdb/testsuite/gdb.dwarf2/dyn-type-unallocated.exp
+++ b/gdb/testsuite/gdb.dwarf2/dyn-type-unallocated.exp
@@ -66,57 +66,57 @@
 	global srcfile
 
 	compile_unit {
-	    {producer "gcc" }
-            {language @DW_LANG_Fortran90}
-            {name ${srcfile}}
-            {low_pc 0 addr}
-        } {
+	    DW_AT_producer "gcc"
+	    DW_AT_language @DW_LANG_Fortran90
+	    DW_AT_name ${srcfile}
+	    DW_AT_low_pc 0 addr
+	} {
 	    declare_labels array_type_label integer_type_label
 
-            integer_type_label: DW_TAG_base_type {
-                {DW_AT_byte_size $int_size DW_FORM_sdata}
-                {DW_AT_encoding  @DW_ATE_signed}
-                {DW_AT_name      integer}
-            }
+	    integer_type_label: DW_TAG_base_type {
+		DW_AT_byte_size $int_size DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	integer
+	    }
 
 	    array_type_label: DW_TAG_array_type {
-		{DW_AT_type :$integer_type_label}
-		{DW_AT_data_location {
+		DW_AT_type :$integer_type_label
+		DW_AT_data_location {
 		    DW_OP_push_object_address
 		    DW_OP_deref
-		} SPECIAL_expr}
-		{DW_AT_allocated {
+		} SPECIAL_expr
+		DW_AT_allocated {
 		    DW_OP_lit0
-		} SPECIAL_expr}
+		} SPECIAL_expr
 	    } {
 		DW_TAG_subrange_type {
-		    {DW_AT_type        :$integer_type_label}
-		    {DW_AT_lower_bound {
+		    DW_AT_type	      :$integer_type_label
+		    DW_AT_lower_bound {
 			DW_OP_skip -3
-		    } SPECIAL_expr}
-		    {DW_AT_upper_bound {
+		    } SPECIAL_expr
+		    DW_AT_upper_bound {
 			DW_OP_skip -3
-		    } SPECIAL_expr}
-		    {DW_AT_byte_stride {
+		    } SPECIAL_expr
+		    DW_AT_byte_stride {
 			DW_OP_skip -3
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 	    }
 
 	    DW_TAG_variable {
-                {DW_AT_location {
-                    DW_OP_addr [gdb_target_symbol dyn_object]
-                } SPECIAL_expr}
-		{name "dyn_object"}
-		{type :$array_type_label}
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol dyn_object]
+		}] SPECIAL_expr
+		DW_AT_name "dyn_object"
+		DW_AT_type :$array_type_label
 	    }
 	   subprogram {
-	       {external 1 flag}
-	       {DW_AT_name main}
-	       {DW_AT_low_pc $main_start DW_FORM_addr}
-	       {DW_AT_high_pc $main_end DW_FORM_addr}
+	       DW_AT_external 1 flag
+	       DW_AT_name main
+	       DW_AT_low_pc $main_start DW_FORM_addr
+	       DW_AT_high_pc $main_end DW_FORM_addr
 	   }
-        }
+	}
     }
 }
 
diff --git a/gdb/testsuite/gdb.dwarf2/dynamic-bit-offset.exp b/gdb/testsuite/gdb.dwarf2/dynamic-bit-offset.exp
index f4e02da..a5cf54d 100644
--- a/gdb/testsuite/gdb.dwarf2/dynamic-bit-offset.exp
+++ b/gdb/testsuite/gdb.dwarf2/dynamic-bit-offset.exp
@@ -32,35 +32,35 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-		{DW_AT_language @DW_LANG_Ada95}
-		{DW_AT_name	$srcfile}
+	    DW_AT_language @DW_LANG_Ada95
+	    DW_AT_name	$srcfile
 	} {
 	    declare_labels byte array struct
 
 	    byte: DW_TAG_base_type {
-		{DW_AT_byte_size 1 DW_FORM_sdata}
-		{DW_AT_encoding	 @DW_ATE_unsigned}
-		{DW_AT_name	 byte}
+		DW_AT_byte_size 1 DW_FORM_sdata
+		DW_AT_encoding	 @DW_ATE_unsigned
+		DW_AT_name	 byte
 	    }
 
 	    array: DW_TAG_array_type {
-		{DW_AT_name array_type}
-		{DW_AT_type :$byte}
+		DW_AT_name array_type
+		DW_AT_type :$byte
 	    } {
 		DW_TAG_subrange_type {
-		    {DW_AT_type	       :$byte}
-		    {DW_AT_upper_bound 3 DW_FORM_sdata}
+		    DW_AT_type	       :$byte
+		    DW_AT_upper_bound 3 DW_FORM_sdata
 		}
 	    }
 
 	    struct: DW_TAG_structure_type {
-		{DW_AT_name discriminated}
-		{DW_AT_byte_size 4 DW_FORM_sdata}
+		DW_AT_name discriminated
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    } {
 		DW_TAG_member {
-		    {DW_AT_name disc}
-		    {DW_AT_type :$byte}
-		    {DW_AT_data_member_location 0 DW_FORM_sdata}
+		    DW_AT_name disc
+		    DW_AT_type :$byte
+		    DW_AT_data_member_location 0 DW_FORM_sdata
 		}
 
 		# We know this is always at offset 1 but use an
@@ -68,18 +68,19 @@
 		# DWARF extension.  See
 		# https://dwarfstd.org/issues/250501.1.html.
 		DW_TAG_member {
-		    {DW_AT_name nums}
-		    {DW_AT_type :$array}
-		    {DW_AT_data_bit_offset {DW_OP_lit8} SPECIAL_expr}
+		    DW_AT_name nums
+		    DW_AT_type :$array
+		    DW_AT_data_bit_offset {DW_OP_lit8} SPECIAL_expr
 		}
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "value"}
-		{DW_AT_type :$struct}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "our_data"]}
-		    SPECIAL_expr}
+		DW_AT_name "value"
+		DW_AT_type :$struct
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "our_data"]
+		}] SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp b/gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp
index 1e06212..331cfc2 100644
--- a/gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp
+++ b/gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp
@@ -34,83 +34,83 @@
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
     cu {} {
- 	DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_Ada95}
-                {DW_AT_name     foo.adb}
-                {DW_AT_comp_dir /tmp}
-        } {
-            declare_labels integer_label array_label array_ptr_label \
-                array_typedef_label
-            set ptr_size [get_sizeof "void *" 96]
+	DW_TAG_compile_unit {
+	    DW_AT_language @DW_LANG_Ada95
+	    DW_AT_name	   foo.adb
+	    DW_AT_comp_dir /tmp
+	} {
+	    declare_labels integer_label array_label array_ptr_label \
+		array_typedef_label
+	    set ptr_size [get_sizeof "void *" 96]
 	    set int_size [get_sizeof "int" 4]
 
-            integer_label: DW_TAG_base_type {
-                {DW_AT_byte_size $int_size DW_FORM_sdata}
-                {DW_AT_encoding  @DW_ATE_signed}
-                {DW_AT_name      integer}
-            }
+	    integer_label: DW_TAG_base_type {
+		DW_AT_byte_size $int_size DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	integer
+	    }
 
 	    array_label: DW_TAG_array_type {
-		{DW_AT_name foo__array_type}
-		{DW_AT_type :$integer_label}
-                {external 1 flag}
+		DW_AT_name foo__array_type
+		DW_AT_type :$integer_label
+		DW_AT_external 1 flag
 	    } {
 		DW_TAG_subrange_type {
-		    {DW_AT_type        :$integer_label}
-                    {DW_AT_lower_bound {
-                        DW_OP_push_object_address
-                        DW_OP_const1u [expr {2 * $int_size}]
-                        DW_OP_minus
-                        DW_OP_deref_size $int_size
-                    } SPECIAL_expr}
-                    {DW_AT_upper_bound {
-                        DW_OP_push_object_address
+		    DW_AT_type	      :$integer_label
+		    DW_AT_lower_bound [subst {
+			DW_OP_push_object_address
+			DW_OP_const1u [expr {2 * $int_size}]
+			DW_OP_minus
+			DW_OP_deref_size $int_size
+		    }] SPECIAL_expr
+		    DW_AT_upper_bound [subst {
+			DW_OP_push_object_address
 			DW_OP_const1u $int_size
-                        DW_OP_minus
-                        DW_OP_deref_size $int_size
-                    } SPECIAL_expr}
+			DW_OP_minus
+			DW_OP_deref_size $int_size
+		    }] SPECIAL_expr
 		}
 	    }
-            array_ptr_label: DW_TAG_pointer_type {
-                {DW_AT_byte_size $ptr_size DW_FORM_data1}
-                {DW_AT_type :$array_label}
-            }
-            array_typedef_label: DW_TAG_typedef {
-                {DW_AT_name "foo__array_ptr"}
-                {DW_AT_type :$array_ptr_label}
-            }
-            DW_TAG_variable {
-                {DW_AT_name foo__three_ptr}
-                {DW_AT_type :$array_ptr_label}
-                {DW_AT_location {
-                    DW_OP_addr [gdb_target_symbol table_1_ptr]
-                } SPECIAL_expr}
-                {external 1 flag}
-            }
-            DW_TAG_variable {
-                {DW_AT_name foo__three_ptr_tdef}
-                {DW_AT_type :$array_typedef_label}
-                {DW_AT_location {
-                    DW_OP_addr [gdb_target_symbol table_1_ptr]
-                } SPECIAL_expr}
-                {external 1 flag}
-            }
-            DW_TAG_variable {
-                {DW_AT_name foo__five_ptr}
-                {DW_AT_type :$array_ptr_label}
-                {DW_AT_location {
-                    DW_OP_addr [gdb_target_symbol table_2_ptr]
-                } SPECIAL_expr}
-                {external 1 flag}
-            }
-            DW_TAG_variable {
-                {DW_AT_name foo__five_ptr_tdef}
-                {DW_AT_type :$array_typedef_label}
-                {DW_AT_location {
-                    DW_OP_addr [gdb_target_symbol table_2_ptr]
-                } SPECIAL_expr}
-                {external 1 flag}
-            }
+	    array_ptr_label: DW_TAG_pointer_type {
+		DW_AT_byte_size $ptr_size DW_FORM_data1
+		DW_AT_type :$array_label
+	    }
+	    array_typedef_label: DW_TAG_typedef {
+		DW_AT_name "foo__array_ptr"
+		DW_AT_type :$array_ptr_label
+	    }
+	    DW_TAG_variable {
+		DW_AT_name foo__three_ptr
+		DW_AT_type :$array_ptr_label
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol table_1_ptr]
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
+	    }
+	    DW_TAG_variable {
+		DW_AT_name foo__three_ptr_tdef
+		DW_AT_type :$array_typedef_label
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol table_1_ptr]
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
+	    }
+	    DW_TAG_variable {
+		DW_AT_name foo__five_ptr
+		DW_AT_type :$array_ptr_label
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol table_2_ptr]
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
+	    }
+	    DW_TAG_variable {
+		DW_AT_name foo__five_ptr_tdef
+		DW_AT_type :$array_typedef_label
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol table_2_ptr]
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
+	    }
 	}
     }
 }
diff --git a/gdb/testsuite/gdb.dwarf2/enqueued-cu-base-addr.exp b/gdb/testsuite/gdb.dwarf2/enqueued-cu-base-addr.exp
index 621b2e7..96287dd 100644
--- a/gdb/testsuite/gdb.dwarf2/enqueued-cu-base-addr.exp
+++ b/gdb/testsuite/gdb.dwarf2/enqueued-cu-base-addr.exp
@@ -37,28 +37,28 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C_plus_plus}
-	    {name "cu1"}
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name "cu1"
 	} {
 	    DW_TAG_variable {
-		{name foo}
-		{type %$int_label}
-		{const_value 1 DW_FORM_sdata}
+		DW_AT_name foo
+		DW_AT_type %$int_label
+		DW_AT_const_value 1 DW_FORM_sdata
 	    }
 	}
     }
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C_plus_plus}
-	    {name "cu2"}
-	    {ranges ${ranges_label} sec_offset}
-	    {low_pc {[lindex $main_func 0]}}
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name "cu2"
+	    DW_AT_ranges ${ranges_label} sec_offset
+	    DW_AT_low_pc [lindex $main_func 0]
 	} {
 	    int_label: base_type {
-		{byte_size 4 udata}
-		{encoding @DW_ATE_signed}
-		{name int}
+		DW_AT_byte_size 4 udata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name int
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/enum-type.exp b/gdb/testsuite/gdb.dwarf2/enum-type.exp
index 121a350..f077c0a 100644
--- a/gdb/testsuite/gdb.dwarf2/enum-type.exp
+++ b/gdb/testsuite/gdb.dwarf2/enum-type.exp
@@ -26,41 +26,41 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_C}
-                {DW_AT_name     $srcfile}
-                {DW_AT_comp_dir /tmp}
-        } {
+		DW_AT_language @DW_LANG_C
+		DW_AT_name     $srcfile
+		DW_AT_comp_dir /tmp
+	} {
 	    declare_labels integer_label uinteger_label
 
-            integer_label: DW_TAG_base_type {
-                {DW_AT_byte_size 4 DW_FORM_sdata}
-                {DW_AT_encoding  @DW_ATE_signed}
-                {DW_AT_name      int}
-            }
+	    integer_label: DW_TAG_base_type {
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	int
+	    }
 
-            uinteger_label: DW_TAG_base_type {
-                {DW_AT_byte_size 4 DW_FORM_sdata}
-                {DW_AT_encoding  @DW_ATE_unsigned}
-		{DW_AT_name      {unsigned int}}
-            }
+	    uinteger_label: DW_TAG_base_type {
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_unsigned
+		DW_AT_name	{unsigned int}
+	    }
 
 	    DW_TAG_enumeration_type {
-		{DW_AT_name E}
-		{DW_AT_type :$integer_label}
+		DW_AT_name E
+		DW_AT_type :$integer_label
 	    } {
 		DW_TAG_enumerator {
-		    {DW_AT_name ONE}
-		    {DW_AT_const_value 1 DW_FORM_sdata}
+		    DW_AT_name ONE
+		    DW_AT_const_value 1 DW_FORM_sdata
 		}
 	    }
 
 	    DW_TAG_enumeration_type {
-		{DW_AT_name EU}
-		{DW_AT_type :$uinteger_label}
+		DW_AT_name EU
+		DW_AT_type :$uinteger_label
 	    } {
 		DW_TAG_enumerator {
-		    {DW_AT_name TWO}
-		    {DW_AT_const_value 2 DW_FORM_sdata}
+		    DW_AT_name TWO
+		    DW_AT_const_value 2 DW_FORM_sdata
 		}
 	    }
 	}
@@ -68,34 +68,34 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-		{DW_AT_language @DW_LANG_C_plus_plus}
-		{DW_AT_name	tmp.c}
-		{DW_AT_comp_dir /tmp}
+		DW_AT_language @DW_LANG_C_plus_plus
+		DW_AT_name	tmp.c
+		DW_AT_comp_dir /tmp
 	} {
 	    declare_labels integer_label forward
 
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding	 @DW_ATE_signed}
-		{DW_AT_name	 int}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	 @DW_ATE_signed
+		DW_AT_name	 int
 	    }
 
 	    DW_TAG_enumeration_type {
-		{DW_AT_specification :$forward}
+		DW_AT_specification :$forward
 	    } {
 		DW_TAG_enumerator {
-		    {DW_AT_name val1}
-		    {DW_AT_const_value 1 DW_FORM_sdata}
+		    DW_AT_name val1
+		    DW_AT_const_value 1 DW_FORM_sdata
 		}
 	    }
 
 	    DW_TAG_namespace {
-		{DW_AT_name ns}
+		DW_AT_name ns
 	    } {
 		forward: DW_TAG_enumeration_type {
-		    {DW_AT_name e}
-		    {DW_AT_type :$integer_label}
-		    {DW_AT_declaration 1 flag}
+		    DW_AT_name e
+		    DW_AT_type :$integer_label
+		    DW_AT_declaration 1 flag
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/fission-absolute-dwo.exp b/gdb/testsuite/gdb.dwarf2/fission-absolute-dwo.exp
index 4f354cd..640d4d2 100644
--- a/gdb/testsuite/gdb.dwarf2/fission-absolute-dwo.exp
+++ b/gdb/testsuite/gdb.dwarf2/fission-absolute-dwo.exp
@@ -40,53 +40,53 @@
 	set debug_addr_lbl [debug_addr_label]
 
 	compile_unit {
-            {language @DW_LANG_C}
-            {name ${srcfile}}
-	    {DW_AT_comp_dir ${objdir}}
-	    {DW_AT_GNU_dwo_id 0x1234 DW_FORM_data8}
-        } {
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name ${srcfile}
+	    DW_AT_comp_dir ${objdir}
+	    DW_AT_GNU_dwo_id 0x1234 DW_FORM_data8
+	} {
 	    declare_labels int4_type struct_type
 
 	    int4_type: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      integer}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	integer
 	    }
 
 	    struct_type: DW_TAG_structure_type {
-		{DW_AT_name "foo_t"}
-		{DW_AT_byte_size 12 DW_FORM_sdata}
+		DW_AT_name "foo_t"
+		DW_AT_byte_size 12 DW_FORM_sdata
 	    } {
 		member {
-		    {name "aa"}
-		    {type :$int4_type}
-		    {data_member_location 0 data1}
+		    DW_AT_name "aa"
+		    DW_AT_type :$int4_type
+		    DW_AT_data_member_location 0 data1
 		}
 		member {
-		    {name "bb"}
-		    {type :$int4_type}
-		    {data_member_location 4 data1}
+		    DW_AT_name "bb"
+		    DW_AT_type :$int4_type
+		    DW_AT_data_member_location 4 data1
 		}
 		member {
-		    {name "cc"}
-		    {type :$int4_type}
-		    {data_member_location 8 data1}
+		    DW_AT_name "cc"
+		    DW_AT_type :$int4_type
+		    DW_AT_data_member_location 8 data1
 		}
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name global_var}
-		{DW_AT_type :$struct_type}
-		{DW_AT_location {
+		DW_AT_name global_var
+		DW_AT_type :$struct_type
+		DW_AT_location [subst {
 		    DW_OP_GNU_addr_index [gdb_target_symbol global_var]
-		} SPECIAL_expr}
-		{external 1 flag}
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
 	    }
 
 	    subprogram {
-		{external 1 flag}
-		{DW_AT_name main DW_FORM_string}
-		{MACRO_AT_func {main}}
+		DW_AT_external 1 flag
+		DW_AT_name main DW_FORM_string
+		MACRO_AT_func {main}
 	    }
 	}
     }
@@ -94,11 +94,11 @@
     # The information that will remain in the .o file.
     cu {} {
 	compile_unit {
-            {DW_AT_GNU_dwo_name ${binfile}.dwo DW_FORM_strp}
-	    {DW_AT_comp_dir ${objdir}}
-	    {DW_AT_GNU_dwo_id 0x1234 DW_FORM_data8}
-	    {DW_AT_GNU_addr_base $debug_addr_lbl}
-        } {
+	    DW_AT_GNU_dwo_name ${binfile}.dwo DW_FORM_strp
+	    DW_AT_comp_dir ${objdir}
+	    DW_AT_GNU_dwo_id 0x1234 DW_FORM_data8
+	    DW_AT_GNU_addr_base $debug_addr_lbl
+	} {
 	    # Nothing.
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/fission-dw-form-strx.exp b/gdb/testsuite/gdb.dwarf2/fission-dw-form-strx.exp
index 7072b7e..5f778e6 100644
--- a/gdb/testsuite/gdb.dwarf2/fission-dw-form-strx.exp
+++ b/gdb/testsuite/gdb.dwarf2/fission-dw-form-strx.exp
@@ -32,7 +32,7 @@
 	dwo_id 0xF00D
     } {
 	compile_unit {
-	    {DW_AT_dwo_name ${::gdb_test_file_name}.dwo DW_FORM_strp}
+	    DW_AT_dwo_name ${::gdb_test_file_name}.dwo DW_FORM_strp
 	} {}
     }
 }
@@ -50,18 +50,18 @@
 	    declare_labels int4_type
 
 	    int4_type: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      0 DW_FORM_strx_id}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      0 DW_FORM_strx_id
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name global_var}
-		{DW_AT_type :$int4_type}
-		{DW_AT_location {
+		DW_AT_name global_var
+		DW_AT_type :$int4_type
+		DW_AT_location {
 		    DW_OP_const1u 12
 		    DW_OP_stack_value
-		} SPECIAL_expr}
+		} SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/fission-multi-cu.exp b/gdb/testsuite/gdb.dwarf2/fission-multi-cu.exp
index 78f2798..ff498c9 100644
--- a/gdb/testsuite/gdb.dwarf2/fission-multi-cu.exp
+++ b/gdb/testsuite/gdb.dwarf2/fission-multi-cu.exp
@@ -51,29 +51,29 @@
 	set debug_addr_lbl [debug_addr_label]
 
 	compile_unit {
-            {language @DW_LANG_C}
-            {name ${srcfile}}
-	    {DW_AT_comp_dir ${objdir}}
-	    {DW_AT_GNU_dwo_id 0x1234 DW_FORM_data8}
-        } {
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name ${srcfile}
+	    DW_AT_comp_dir ${objdir}
+	    DW_AT_GNU_dwo_id 0x1234 DW_FORM_data8
+	} {
 	    int4_type: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      int}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	int
 	    }
 
 	    subprogram {
-		{external 1 flag}
-		{DW_AT_name func DW_FORM_string}
-		{MACRO_AT_func {func}}
-		{DW_AT_type :$int4_type}
+		DW_AT_external 1 flag
+		DW_AT_name func DW_FORM_string
+		MACRO_AT_func {func}
+		DW_AT_type :$int4_type
 	    } {
 		DW_TAG_formal_parameter {
-		    {DW_AT_name arg}
-		    {DW_AT_type :$int4_type}
-		    {DW_AT_location {
+		    DW_AT_name arg
+		    DW_AT_type :$int4_type
+		    DW_AT_location [subst {
 			DW_OP_GNU_addr_index [gdb_target_symbol global_param]
-		    } SPECIAL_expr}
+		    }] SPECIAL_expr
 		}
 	    }
 	}
@@ -100,12 +100,12 @@
     # The information that will remain in the .o file.
     cu {} {
 	compile_unit {
-            {DW_AT_GNU_dwo_name ${binfile}-1-dw.dwo DW_FORM_strp}
-	    {DW_AT_comp_dir ${objdir}}
-	    {DW_AT_GNU_dwo_id 0x1234 DW_FORM_data8}
-	    {DW_AT_GNU_addr_base $debug_addr_lbl}
-	    {stmt_list $lines_table DW_FORM_sec_offset}
-        } {
+	    DW_AT_GNU_dwo_name ${binfile}-1-dw.dwo DW_FORM_strp
+	    DW_AT_comp_dir ${objdir}
+	    DW_AT_GNU_dwo_id 0x1234 DW_FORM_data8
+	    DW_AT_GNU_addr_base $debug_addr_lbl
+	    DW_AT_stmt_list $lines_table DW_FORM_sec_offset
+	} {
 	    # Nothing.
 	}
     }
@@ -131,24 +131,24 @@
 	set debug_addr_lbl [debug_addr_label]
 
 	compile_unit {
-            {language @DW_LANG_C}
-            {name ${srcfile}}
-	    {DW_AT_comp_dir ${objdir}}
-	    {DW_AT_GNU_dwo_id 0x4567 DW_FORM_data8}
-        } {
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name ${srcfile}
+	    DW_AT_comp_dir ${objdir}
+	    DW_AT_GNU_dwo_id 0x4567 DW_FORM_data8
+	} {
 	    int4_type: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      int}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	int
 	    }
 
 	    subprogram {
-		{external 1 flag}
-		{DW_AT_name main DW_FORM_string}
-		{MACRO_AT_func {main}}
-		{DW_AT_type :$int4_type}
-		{DW_AT_decl_file 1 data1}
-		{DW_AT_decl_line 29 data1}
+		DW_AT_external 1 flag
+		DW_AT_name main DW_FORM_string
+		MACRO_AT_func {main}
+		DW_AT_type :$int4_type
+		DW_AT_decl_file 1 data1
+		DW_AT_decl_line 29 data1
 	    }
 	}
     }
@@ -182,12 +182,12 @@
     # The information that will remain in the .o file.
     cu {} {
 	compile_unit {
-            {DW_AT_GNU_dwo_name ${binfile}-2-dw.dwo DW_FORM_strp}
-	    {DW_AT_comp_dir ${objdir}}
-	    {DW_AT_GNU_dwo_id 0x4567 DW_FORM_data8}
-	    {DW_AT_GNU_addr_base $debug_addr_lbl}
-	    {stmt_list $lines_table DW_FORM_sec_offset}
-        } {
+	    DW_AT_GNU_dwo_name ${binfile}-2-dw.dwo DW_FORM_strp
+	    DW_AT_comp_dir ${objdir}
+	    DW_AT_GNU_dwo_id 0x4567 DW_FORM_data8
+	    DW_AT_GNU_addr_base $debug_addr_lbl
+	    DW_AT_stmt_list $lines_table DW_FORM_sec_offset
+	} {
 	    # Nothing.
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/fission-relative-dwo.exp b/gdb/testsuite/gdb.dwarf2/fission-relative-dwo.exp
index 5590156..e605aef 100644
--- a/gdb/testsuite/gdb.dwarf2/fission-relative-dwo.exp
+++ b/gdb/testsuite/gdb.dwarf2/fission-relative-dwo.exp
@@ -37,53 +37,53 @@
 	set debug_addr_base [debug_addr_label]
 
 	compile_unit {
-            {language @DW_LANG_C}
-            {name ${srcfile}}
-	    {DW_AT_comp_dir .}
-	    {DW_AT_GNU_dwo_id 0x1234 DW_FORM_data8}
-        } {
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name ${srcfile}
+	    DW_AT_comp_dir .
+	    DW_AT_GNU_dwo_id 0x1234 DW_FORM_data8
+	} {
 	    declare_labels int4_type struct_type
 
 	    int4_type: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      integer}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	integer
 	    }
 
 	    struct_type: DW_TAG_structure_type {
-		{DW_AT_name "foo_t"}
-		{DW_AT_byte_size 12 DW_FORM_sdata}
+		DW_AT_name "foo_t"
+		DW_AT_byte_size 12 DW_FORM_sdata
 	    } {
 		member {
-		    {name "aa"}
-		    {type :$int4_type}
-		    {data_member_location 0 data1}
+		    DW_AT_name "aa"
+		    DW_AT_type :$int4_type
+		    DW_AT_data_member_location 0 data1
 		}
 		member {
-		    {name "bb"}
-		    {type :$int4_type}
-		    {data_member_location 4 data1}
+		    DW_AT_name "bb"
+		    DW_AT_type :$int4_type
+		    DW_AT_data_member_location 4 data1
 		}
 		member {
-		    {name "cc"}
-		    {type :$int4_type}
-		    {data_member_location 8 data1}
+		    DW_AT_name "cc"
+		    DW_AT_type :$int4_type
+		    DW_AT_data_member_location 8 data1
 		}
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name global_var}
-		{DW_AT_type :$struct_type}
-		{DW_AT_location {
+		DW_AT_name global_var
+		DW_AT_type :$struct_type
+		DW_AT_location [subst {
 		    DW_OP_GNU_addr_index [gdb_target_symbol global_var]
-		} SPECIAL_expr}
-		{external 1 flag}
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
 	    }
 
 	    subprogram {
-		{external 1 flag}
-		{DW_AT_name main DW_FORM_string}
-		{MACRO_AT_func {main}}
+		DW_AT_external 1 flag
+		DW_AT_name main DW_FORM_string
+		MACRO_AT_func {main}
 	    }
 	}
     }
@@ -91,11 +91,11 @@
     # The information that will remain in the .o file.
     cu {} {
 	compile_unit {
-            {DW_AT_GNU_dwo_name ${gdb_test_file_name}.dwo DW_FORM_strp}
-	    {DW_AT_comp_dir .}
-	    {DW_AT_GNU_dwo_id 0x1234 DW_FORM_data8}
-	    {DW_AT_GNU_addr_base $debug_addr_base}
-        } {
+	    DW_AT_GNU_dwo_name ${gdb_test_file_name}.dwo DW_FORM_strp
+	    DW_AT_comp_dir .
+	    DW_AT_GNU_dwo_id 0x1234 DW_FORM_data8
+	    DW_AT_GNU_addr_base $debug_addr_base
+	} {
 	    # Nothing.
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/fission-with-type-unit.exp b/gdb/testsuite/gdb.dwarf2/fission-with-type-unit.exp
index 0a02f7c..58cda29 100644
--- a/gdb/testsuite/gdb.dwarf2/fission-with-type-unit.exp
+++ b/gdb/testsuite/gdb.dwarf2/fission-with-type-unit.exp
@@ -33,7 +33,7 @@
 	dwo_id 0xF00D
     } {
 	compile_unit {
-	    {DW_AT_dwo_name ${::gdb_test_file_name}.dwo DW_FORM_strp}
+	    DW_AT_dwo_name ${::gdb_test_file_name}.dwo DW_FORM_strp
 	} {}
     }
 }
@@ -46,9 +46,9 @@
     } 0xCAFE "the_type" {
 	type_unit {} {
 	    the_type: base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      int}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      int
 	    }
 	}
     }
@@ -62,18 +62,18 @@
 	    declare_labels int4_type
 
 	    int4_type: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      int}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      int
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name global_var}
-		{DW_AT_type :$int4_type}
-		{DW_AT_location {
+		DW_AT_name global_var
+		DW_AT_type :$int4_type
+		DW_AT_location {
 		    DW_OP_const1u 12
 		    DW_OP_stack_value
-		} SPECIAL_expr}
+		} SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/formdata16.exp b/gdb/testsuite/gdb.dwarf2/formdata16.exp
index 70c7cc4..c08183e 100644
--- a/gdb/testsuite/gdb.dwarf2/formdata16.exp
+++ b/gdb/testsuite/gdb.dwarf2/formdata16.exp
@@ -50,33 +50,33 @@
 	    declare_labels int_label sint_label
 
 	    int_label: DW_TAG_base_type {
-		{DW_AT_byte_size 16 DW_FORM_udata}
-		{DW_AT_encoding @DW_ATE_unsigned}
-		{DW_AT_name "__uint128"}
+		DW_AT_byte_size 16 DW_FORM_udata
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_name "__uint128"
 	    }
 
 	    sint_label: DW_TAG_base_type {
-		{DW_AT_byte_size 16 DW_FORM_udata}
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_name "__int128"}
+		DW_AT_byte_size 16 DW_FORM_udata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name "__int128"
 	    }
 
 	    DW_TAG_variable {
-		{name xxx}
-		{type :$int_label}
-		{const_value $pair DW_FORM_data16}
+		DW_AT_name xxx
+		DW_AT_type :$int_label
+		DW_AT_const_value $pair DW_FORM_data16
 	    }
 
 	    DW_TAG_variable {
-		{name yyy}
-		{type :$int_label}
-		{const_value $pair2 DW_FORM_data16}
+		DW_AT_name yyy
+		DW_AT_type :$int_label
+		DW_AT_const_value $pair2 DW_FORM_data16
 	    }
 
 	    DW_TAG_variable {
-		{name sss}
-		{type :$sint_label}
-		{const_value $negative DW_FORM_data16}
+		DW_AT_name sss
+		DW_AT_type :$sint_label
+		DW_AT_const_value $negative DW_FORM_data16
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/fortran-var-string.exp b/gdb/testsuite/gdb.dwarf2/fortran-var-string.exp
index e4a1270..b751900 100644
--- a/gdb/testsuite/gdb.dwarf2/fortran-var-string.exp
+++ b/gdb/testsuite/gdb.dwarf2/fortran-var-string.exp
@@ -40,92 +40,92 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_Fortran90}
-                {DW_AT_name     fortran-var-string.f90}
-                {DW_AT_comp_dir /tmp}
-        } {
+		DW_AT_language @DW_LANG_Fortran90
+		DW_AT_name     fortran-var-string.f90
+		DW_AT_comp_dir /tmp
+	} {
 	    declare_labels integer_label string_label array_lb_label \
 		array_ub_label
 
 	    DW_TAG_subprogram {
-		{name main}
-		{low_pc $main_helper_start addr}
-		{high_pc $main_helper_len data8}
-		{DW_AT_type :$integer_label}
-		{DW_AT_decl_file 1 data1}
-		{DW_AT_decl_line 1 data1}
+		DW_AT_name main
+		DW_AT_low_pc $main_helper_start addr
+		DW_AT_high_pc $main_helper_len data8
+		DW_AT_type :$integer_label
+		DW_AT_decl_file 1 data1
+		DW_AT_decl_line 1 data1
 	    }
 
 	    DW_TAG_subprogram {
-		{name test_1_func}
-		{low_pc $main_start addr}
-		{high_pc $main_len data8}
-		{DW_AT_type :$integer_label}
-		{DW_AT_decl_file 1 data1}
-		{DW_AT_decl_line 2 data1}
+		DW_AT_name test_1_func
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc $main_len data8
+		DW_AT_type :$integer_label
+		DW_AT_decl_file 1 data1
+		DW_AT_decl_line 2 data1
 	    } {
 		formal_parameter {
-		    {name arg1}
-		    {type :$string_label}
+		    DW_AT_name arg1
+		    DW_AT_type :$string_label
 		}
 	    }
 
 	    DW_TAG_subprogram {
-		{name test_2_func}
-		{low_pc $main_start addr}
-		{high_pc $main_len data8}
-		{DW_AT_type :$integer_label}
-		{DW_AT_decl_file 1 data1}
-		{DW_AT_decl_line 3 data1}
+		DW_AT_name test_2_func
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc $main_len data8
+		DW_AT_type :$integer_label
+		DW_AT_decl_file 1 data1
+		DW_AT_decl_line 3 data1
 	    } {
 		formal_parameter {
-		    {name arg1}
-		    {type :$array_ub_label}
+		    DW_AT_name arg1
+		    DW_AT_type :$array_ub_label
 		}
 	    }
 
 	    DW_TAG_subprogram {
-		{name test_3_func}
-		{low_pc $main_start addr}
-		{high_pc $main_len data8}
-		{DW_AT_type :$integer_label}
-		{DW_AT_decl_file 1 data1}
-		{DW_AT_decl_line 4 data1}
+		DW_AT_name test_3_func
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc $main_len data8
+		DW_AT_type :$integer_label
+		DW_AT_decl_file 1 data1
+		DW_AT_decl_line 4 data1
 	    } {
 		formal_parameter {
-		    {name arg1}
-		    {type :$array_lb_label}
+		    DW_AT_name arg1
+		    DW_AT_type :$array_lb_label
 		}
 	    }
 
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size $int_size DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      integer}
+		DW_AT_byte_size $int_size DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	integer
 	    }
 
 	    string_label: DW_TAG_string_type {
-		{DW_AT_byte_size $int_size DW_FORM_sdata}
-		{DW_AT_name      .str.arg}
-		{DW_AT_string_length {} DW_FORM_block1}
+		DW_AT_byte_size $int_size DW_FORM_sdata
+		DW_AT_name	.str.arg
+		DW_AT_string_length {} DW_FORM_block1
 	    }
 
 	    array_lb_label: DW_TAG_array_type {
-		{DW_AT_ordering 1 data1}
-		{DW_AT_type :$integer_label}
+		DW_AT_ordering 1 data1
+		DW_AT_type :$integer_label
 	    } {
 		DW_TAG_subrange_type {
-		    {DW_AT_lower_bound {} DW_FORM_block1}
-		    {DW_AT_upper_bound 10 DW_FORM_data1}
+		    DW_AT_lower_bound {} DW_FORM_block1
+		    DW_AT_upper_bound 10 DW_FORM_data1
 		}
 	    }
 
 	    array_ub_label: DW_TAG_array_type {
-		{DW_AT_ordering 1 data1}
-		{DW_AT_type :$integer_label}
+		DW_AT_ordering 1 data1
+		DW_AT_type :$integer_label
 	    } {
 		DW_TAG_subrange_type {
-		    {DW_AT_upper_bound {} DW_FORM_block1}
+		    DW_AT_upper_bound {} DW_FORM_block1
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/forward-spec-inter-cu.exp b/gdb/testsuite/gdb.dwarf2/forward-spec-inter-cu.exp
index 26d0af6..7d55f73 100644
--- a/gdb/testsuite/gdb.dwarf2/forward-spec-inter-cu.exp
+++ b/gdb/testsuite/gdb.dwarf2/forward-spec-inter-cu.exp
@@ -33,40 +33,40 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
+	    DW_AT_language @DW_LANG_C_plus_plus
 	} {
 	    # The new indexer has special code to compute the full
 	    # name of an object that uses a specification that appears
 	    # later in the DWARF.
 	    DW_TAG_variable {
-		{DW_AT_specification %$spec}
-		{DW_AT_location {
+		DW_AT_specification %$spec
+		DW_AT_location {
 		    DW_OP_const1u 23
 		    DW_OP_stack_value
-		} SPECIAL_expr}
+		} SPECIAL_expr
 	    }
 	}
     }
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
+	    DW_AT_language @DW_LANG_C_plus_plus
 	} {
 	    declare_labels myint
 
 	    myint: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      myint}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      myint
 	    }
 
 	    DW_TAG_namespace {
-		{DW_AT_name ns}
+		DW_AT_name ns
 	    } {
 		spec: DW_TAG_variable {
-		    {DW_AT_name v}
-		    {DW_AT_type :$myint}
-		    {DW_AT_declaration 1 DW_FORM_flag_present}
+		    DW_AT_name v
+		    DW_AT_type :$myint
+		    DW_AT_declaration 1 DW_FORM_flag_present
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/forward-spec.exp b/gdb/testsuite/gdb.dwarf2/forward-spec.exp
index 6c38be8..e534da2 100644
--- a/gdb/testsuite/gdb.dwarf2/forward-spec.exp
+++ b/gdb/testsuite/gdb.dwarf2/forward-spec.exp
@@ -32,9 +32,9 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
-	    {DW_AT_name     $srcfile}
-	    {DW_AT_comp_dir /tmp}
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name     $srcfile
+	    DW_AT_comp_dir /tmp
 
 	} {
 	    declare_labels spec myint
@@ -43,26 +43,26 @@
 	    # name of an object that uses a specification that appears
 	    # later in the DWARF.
 	    DW_TAG_variable {
-		{DW_AT_specification :$spec}
-		{DW_AT_location {
+		DW_AT_specification :$spec
+		DW_AT_location {
 		    DW_OP_const1u 23
 		    DW_OP_stack_value
-		} SPECIAL_expr}
+		} SPECIAL_expr
 	    }
 
 	    myint: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      myint}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      myint
 	    }
 
 	    DW_TAG_namespace {
-		{DW_AT_name ns}
+		DW_AT_name ns
 	    } {
 		spec: DW_TAG_variable {
-		    {DW_AT_name v}
-		    {DW_AT_type :$myint}
-		    {DW_AT_declaration 1 DW_FORM_flag_present}
+		    DW_AT_name v
+		    DW_AT_type :$myint
+		    DW_AT_declaration 1 DW_FORM_flag_present
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp b/gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp
index 6857a08..ad19ce7 100644
--- a/gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp
+++ b/gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp
@@ -46,44 +46,44 @@
 
     cu { label cu_label addr_size 4 } {
 	DW_TAG_compile_unit {
-	    {DW_AT_name $srcfile}
-	    {DW_AT_stmt_list $stmt_list DW_FORM_sec_offset}
-	    {DW_AT_language @DW_LANG_C99}
-	    {DW_AT_low_pc __cu_low_pc DW_FORM_addr}
-	    {DW_AT_high_pc __cu_high_pc DW_FORM_addr}
+	    DW_AT_name $srcfile
+	    DW_AT_stmt_list $stmt_list DW_FORM_sec_offset
+	    DW_AT_language @DW_LANG_C99
+	    DW_AT_low_pc __cu_low_pc DW_FORM_addr
+	    DW_AT_high_pc __cu_high_pc DW_FORM_addr
 	} {
 	    DW_TAG_subprogram {
-		{DW_AT_name "_start"}
-		{DW_AT_low_pc __start_low_pc DW_FORM_addr}
-		{DW_AT_high_pc __start_high_pc DW_FORM_addr}
+		DW_AT_name "_start"
+		DW_AT_low_pc __start_low_pc DW_FORM_addr
+		DW_AT_high_pc __start_high_pc DW_FORM_addr
 	    } {
 		DW_TAG_inlined_subroutine {
-		    {DW_AT_abstract_origin :$foo_subprogram}
-		    {DW_AT_low_pc __foo_low_pc DW_FORM_addr}
-		    {DW_AT_high_pc __foo_high_pc DW_FORM_addr}
-		    {DW_AT_call_file 1 DW_FORM_data1}
-		    {DW_AT_call_line 13 DW_FORM_data1}
+		    DW_AT_abstract_origin :$foo_subprogram
+		    DW_AT_low_pc __foo_low_pc DW_FORM_addr
+		    DW_AT_high_pc __foo_high_pc DW_FORM_addr
+		    DW_AT_call_file 1 DW_FORM_data1
+		    DW_AT_call_line 13 DW_FORM_data1
 		} {
 		    DW_TAG_inlined_subroutine {
-			{DW_AT_abstract_origin :$bar_subprogram}
-			{DW_AT_low_pc __bar_low_pc DW_FORM_addr}
-			{DW_AT_high_pc __bar_high_pc DW_FORM_addr}
-			{DW_AT_call_file 1 DW_FORM_data1}
-			{DW_AT_call_line 7 DW_FORM_data1}
+			DW_AT_abstract_origin :$bar_subprogram
+			DW_AT_low_pc __bar_low_pc DW_FORM_addr
+			DW_AT_high_pc __bar_high_pc DW_FORM_addr
+			DW_AT_call_file 1 DW_FORM_data1
+			DW_AT_call_line 7 DW_FORM_data1
 		    }
 		}
 	    }
 
 	    foo_subprogram: DW_TAG_subprogram {
-		{DW_AT_name "foo"}
-		{DW_AT_prototyped 1 DW_FORM_flag_present}
-		{DW_AT_inline 0x1 DW_FORM_data1}
+		DW_AT_name "foo"
+		DW_AT_prototyped 1 DW_FORM_flag_present
+		DW_AT_inline 0x1 DW_FORM_data1
 	    }
 
 	    bar_subprogram: DW_TAG_subprogram {
-		{DW_AT_name "bar"}
-		{DW_AT_prototyped 1 DW_FORM_flag_present}
-		{DW_AT_inline 0x1 DW_FORM_data1}
+		DW_AT_name "bar"
+		DW_AT_prototyped 1 DW_FORM_flag_present
+		DW_AT_inline 0x1 DW_FORM_data1
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/implptr-64bit.exp b/gdb/testsuite/gdb.dwarf2/implptr-64bit.exp
index c4496f1..be3a648 100644
--- a/gdb/testsuite/gdb.dwarf2/implptr-64bit.exp
+++ b/gdb/testsuite/gdb.dwarf2/implptr-64bit.exp
@@ -39,54 +39,54 @@
 	    is_64 $is_64
 	} {
 	    compile_unit {
-		{ producer "GNU C 4.4.3" }
-		{ language @DW_LANG_C89 }
-		{ name 1.c }
+		 DW_AT_producer "GNU C 4.4.3"
+		 DW_AT_language @DW_LANG_C89
+		 DW_AT_name 1.c
 	    } {
 		declare_labels struct_label variable_label int_label pointer_label
 
 		int_label: base_type {
-		    { byte_size 4 DW_FORM_sdata }
-		    { DW_AT_encoding @DW_ATE_signed }
-		    { name int }
+		     DW_AT_byte_size 4 DW_FORM_sdata
+		     DW_AT_encoding @DW_ATE_signed
+		     DW_AT_name int
 		}
 
 		struct_label: structure_type {
-		    { name s }
-		    { byte_size 4 sdata }
+		     DW_AT_name s
+		     DW_AT_byte_size 4 sdata
 		} {
 		    member {
-			{ name f }
-			{ type :$int_label }
-			{ data_member_location 0 data1 }
+			 DW_AT_name f
+			 DW_AT_type :$int_label
+			 DW_AT_data_member_location 0 data1
 		    }
 		}
 
 		pointer_label: pointer_type {
-		    { byte_size $Dwarf::_cu_addr_size sdata }
-		    { type  :$struct_label }
+		     DW_AT_byte_size $Dwarf::_cu_addr_size sdata
+		     DW_AT_type	 :$struct_label
 		}
 
 		variable_label: DW_TAG_variable {
-		    { name v }
-		    { location {
+		     DW_AT_name v
+		     DW_AT_location {
 			DW_OP_implicit_value 0x1 0x1 0x1 0x1
-		    } SPECIAL_expr}
-		    { type :$struct_label "DW_FORM_ref$ref_addr_size" }
+		    } SPECIAL_expr
+		     DW_AT_type :$struct_label "DW_FORM_ref$ref_addr_size"
 		}
 
 		if { !$two_cu } {
 		    subprogram {
-			{MACRO_AT_func {main}}
-			{ type :$int_label }
-			{ external 1 flag }
+			MACRO_AT_func {main}
+			 DW_AT_type :$int_label
+			 DW_AT_external 1 flag
 		    } {
 			DW_TAG_variable {
-			    { name p }
-			    { location {
+			     DW_AT_name p
+			    DW_AT_location [subst {
 				GNU_implicit_pointer $variable_label 0
-			    } SPECIAL_expr }
-			    { type :$pointer_label "DW_FORM_ref$ref_addr_size" }
+			    }] SPECIAL_expr
+			     DW_AT_type :$pointer_label "DW_FORM_ref$ref_addr_size"
 			}
 		    }
 		}
@@ -100,21 +100,21 @@
 		is_64 $is_64
 	    } {
 		compile_unit {
-		    { producer "GNU C 4.4.3" }
-		    { language @DW_LANG_C89 }
-		    { name 1.c }
+		     DW_AT_producer "GNU C 4.4.3"
+		     DW_AT_language @DW_LANG_C89
+		     DW_AT_name 1.c
 		} {
 		    subprogram {
-			{ MACRO_AT_func {main} }
-			{ type %$int_label }
-			{ external 1 flag }
+			 MACRO_AT_func {main}
+			 DW_AT_type %$int_label
+			 DW_AT_external 1 flag
 		    } {
 			DW_TAG_variable {
-			    { name p }
-			    { location {
+			     DW_AT_name p
+			    DW_AT_location [subst {
 				GNU_implicit_pointer $variable_label 0
-			    } SPECIAL_expr }
-			    { type %$pointer_label }
+			    }] SPECIAL_expr
+			     DW_AT_type %$pointer_label
 			}
 		    }
 		}
diff --git a/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp b/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp
index 79fcf61..7feb983 100644
--- a/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp
+++ b/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp
@@ -25,51 +25,51 @@
 Dwarf::assemble $asm_file {
     cu { version 3 addr_size 4 } {
 	compile_unit {
-	    {producer "GNU C 4.4.3"}
-	    {language @DW_LANG_C89}
-	    {name 1.c}
+	    DW_AT_producer "GNU C 4.4.3"
+	    DW_AT_language @DW_LANG_C89
+	    DW_AT_name 1.c
 	} {
 	    declare_labels int_label struct_label pointer_label variable_label
 
 	    int_label: base_type {
-		{byte_size 4 sdata}
-		{encoding @DW_ATE_signed}
-		{name int}
+		DW_AT_byte_size 4 sdata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name int
 	    }
 
 	    struct_label: structure_type {
-		{name s}
-		{byte_size 4 sdata}
+		DW_AT_name s
+		DW_AT_byte_size 4 sdata
 	    } {
 		member {
-		    {name f}
-		    {type :$int_label}
-		    {data_member_location 0 data1}
+		    DW_AT_name f
+		    DW_AT_type :$int_label
+		    DW_AT_data_member_location 0 data1
 		}
 	    }
 
 	    subprogram {
-		{MACRO_AT_func { main }}
-		{type :$int_label}
-		{external 1 flag}
+		MACRO_AT_func { main }
+		DW_AT_type :$int_label
+		DW_AT_external 1 flag
 	    } {
 		pointer_label: pointer_type {
-		    {byte_size 4 sdata}
-		    {type :$struct_label}
+		    DW_AT_byte_size 4 sdata
+		    DW_AT_type :$struct_label
 		}
 
 		variable_label: DW_TAG_variable {
-		    {name v}
-		    {location {} DW_FORM_block1}
-		    {type :$struct_label}
+		    DW_AT_name v
+		    DW_AT_location {} DW_FORM_block1
+		    DW_AT_type :$struct_label
 		}
 
 		DW_TAG_variable {
-		    {name p}
-		    {location {
+		    DW_AT_name p
+		    DW_AT_location [subst {
 			GNU_implicit_pointer $variable_label 0
-		    } SPECIAL_expr}
-		    {type :$pointer_label}
+		    }] SPECIAL_expr
+		    DW_AT_type :$pointer_label
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/implptrconst.exp b/gdb/testsuite/gdb.dwarf2/implptrconst.exp
index f3d47a2..8e735ca 100644
--- a/gdb/testsuite/gdb.dwarf2/implptrconst.exp
+++ b/gdb/testsuite/gdb.dwarf2/implptrconst.exp
@@ -33,51 +33,51 @@
 	    declare_labels var_label ptr_label
 
 	    byte_label: base_type {
-		{name byte}
-		{encoding @DW_ATE_signed}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name byte
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    }
 
 	    size_type_label: base_type {
-		{name sizetype}
-		{encoding @DW_ATE_unsigned}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name sizetype
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    }
 
 	    array_label: array_type {
-		{type :$byte_label}
+		DW_AT_type :$byte_label
 	    } {
 		subrange_type {
-		    {type :$size_type_label}
-		    {upper_bound 7 DW_FORM_data1}
+		    DW_AT_type :$size_type_label
+		    DW_AT_upper_bound 7 DW_FORM_data1
 		}
 	    }
 
 	    var_label: DW_TAG_variable {
-		{name b}
-		{type :$array_label}
-		{const_value rstuvwxy DW_FORM_block1}
+		DW_AT_name b
+		DW_AT_type :$array_label
+		DW_AT_const_value rstuvwxy DW_FORM_block1
 	    }
 
 	    ptr_label: pointer_type {
-		{byte_size 4 DW_FORM_sdata}
-		{type :$byte_label}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_type :$byte_label
 	    }
 
 	    DW_TAG_variable {
-		{name c}
-		{type :$ptr_label}
-		{location {
+		DW_AT_name c
+		DW_AT_type :$ptr_label
+		DW_AT_location [subst {
 		    GNU_implicit_pointer $var_label 0
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    }
 
 	    DW_TAG_variable {
-		{name d}
-		{type :$ptr_label}
-		{location {
+		DW_AT_name d
+		DW_AT_type :$ptr_label
+		DW_AT_location [subst {
 		    GNU_implicit_pointer $var_label 2
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/implptrpiece.exp b/gdb/testsuite/gdb.dwarf2/implptrpiece.exp
index 9654483..58c5e66 100644
--- a/gdb/testsuite/gdb.dwarf2/implptrpiece.exp
+++ b/gdb/testsuite/gdb.dwarf2/implptrpiece.exp
@@ -36,48 +36,48 @@
 	    declare_labels var_label
 
 	    struct_label: structure_type {
-		{name S}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name S
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    } {
 		member {
-		    {name a}
-		    {type :$short_type_label}
-		    {data_member_location 0 DW_FORM_sdata}
+		    DW_AT_name a
+		    DW_AT_type :$short_type_label
+		    DW_AT_data_member_location 0 DW_FORM_sdata
 		}
 		member {
-		    {name b}
-		    {type :$char_type_label}
-		    {data_member_location 2 DW_FORM_sdata}
+		    DW_AT_name b
+		    DW_AT_type :$char_type_label
+		    DW_AT_data_member_location 2 DW_FORM_sdata
 		}
 		member {
-		    {name c}
-		    {type :$char_type_label}
-		    {data_member_location 3 DW_FORM_sdata}
+		    DW_AT_name c
+		    DW_AT_type :$char_type_label
+		    DW_AT_data_member_location 3 DW_FORM_sdata
 		}
 	    }
 
 	    short_type_label: base_type {
-		{name "short int"}
-		{encoding @DW_ATE_signed}
-		{byte_size 2 DW_FORM_sdata}
+		DW_AT_name "short int"
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 2 DW_FORM_sdata
 	    }
 
 	    char_type_label: base_type {
-		{name "signed char"}
-		{encoding @DW_ATE_signed}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name "signed char"
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    }
 
 	    # See comment above to understand the pointer size.
 	    ptr_label: pointer_type {
-		{byte_size 2 DW_FORM_sdata}
-		{type :$char_type_label}
+		DW_AT_byte_size 2 DW_FORM_sdata
+		DW_AT_type :$char_type_label
 	    }
 
 	    var_label: DW_TAG_variable {
-		{name s}
-		{type :$struct_label}
-		{location {
+		DW_AT_name s
+		DW_AT_type :$struct_label
+		DW_AT_location {
 		    const2u 0x5678
 		    stack_value
 		    piece 2
@@ -87,15 +87,15 @@
 		    const1u 3
 		    stack_value
 		    piece 1
-		} SPECIAL_expr}
+		} SPECIAL_expr
 	    }
 
 	    DW_TAG_variable {
-		{name p}
-		{type :$ptr_label}
-		{location {
+		DW_AT_name p
+		DW_AT_type :$ptr_label
+		DW_AT_location [subst {
 		    GNU_implicit_pointer $var_label 2
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/implref-array.exp b/gdb/testsuite/gdb.dwarf2/implref-array.exp
index 4f7bb4b..1236537 100644
--- a/gdb/testsuite/gdb.dwarf2/implref-array.exp
+++ b/gdb/testsuite/gdb.dwarf2/implref-array.exp
@@ -51,7 +51,7 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
+	    DW_AT_language @DW_LANG_C_plus_plus
 	} {
 	    declare_labels int_label sizetype_label array_label variable_label ref_label
 	    set int_size [get_sizeof "int" -1]
@@ -61,48 +61,52 @@
 	    set addr_size [get_sizeof "void *" -1]
 
 	    int_label: DW_TAG_base_type {
-		{DW_AT_byte_size ${int_size} DW_FORM_udata}
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_name "int"}
+		DW_AT_byte_size ${int_size} DW_FORM_udata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name "int"
 	    }
 
 	    sizetype_label: DW_TAG_base_type {
-		{DW_AT_byte_size ${int_size} DW_FORM_udata}
-		{DW_AT_encoding @DW_ATE_unsigned}
-		{DW_AT_name "sizetype"}
+		DW_AT_byte_size ${int_size} DW_FORM_udata
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_name "sizetype"
 	    }
 
 	    array_label: DW_TAG_array_type {
-		    {DW_AT_type :${int_label}}
+		    DW_AT_type :${int_label}
 	    } {
 		DW_TAG_subrange_type {
-		    {DW_AT_type :${sizetype_label}}
-		    {DW_AT_lower_bound 0 DW_FORM_udata}
-		    {DW_AT_upper_bound ${upper_bound} DW_FORM_udata}
+		    DW_AT_type :${sizetype_label}
+		    DW_AT_lower_bound 0 DW_FORM_udata
+		    DW_AT_upper_bound ${upper_bound} DW_FORM_udata
 		}
 	    }
 
 	    ref_label: DW_TAG_reference_type {
-		{DW_AT_byte_size ${addr_size} DW_FORM_udata}
-		{DW_AT_type :${array_label}}
+		DW_AT_byte_size ${addr_size} DW_FORM_udata
+		DW_AT_type :${array_label}
 	    }
 
 	    variable_label: DW_TAG_variable {
-		{DW_AT_name "array"}
-		{DW_AT_type :${array_label}}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "array"]} SPECIAL_expr}
+		DW_AT_name "array"
+		DW_AT_type :${array_label}
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "array"]
+		}] SPECIAL_expr
 	    }
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func { "main" }}
-		{DW_AT_type :${int_label}}
-		{DW_AT_external 1 DW_FORM_flag}
+		MACRO_AT_func { "main" }
+		DW_AT_type :${int_label}
+		DW_AT_external 1 DW_FORM_flag
 	    } {
 		DW_TAG_variable {
-		    {DW_AT_name "ref"}
-		    {DW_AT_type :${ref_label}}
-		    {DW_AT_location {DW_OP_GNU_implicit_pointer ${variable_label} 0} SPECIAL_expr}
+		    DW_AT_name "ref"
+		    DW_AT_type :${ref_label}
+		    DW_AT_location [subst {
+			DW_OP_GNU_implicit_pointer ${variable_label} 0
+		    }] SPECIAL_expr
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/implref-const.exp b/gdb/testsuite/gdb.dwarf2/implref-const.exp
index 57ccfcd..ec19eed 100644
--- a/gdb/testsuite/gdb.dwarf2/implref-const.exp
+++ b/gdb/testsuite/gdb.dwarf2/implref-const.exp
@@ -45,7 +45,7 @@
 Dwarf::assemble ${asm_file} {
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
+	    DW_AT_language @DW_LANG_C_plus_plus
 	} {
 	    declare_labels int_label const_label variable_label ref_label
 	    set int_size [get_sizeof "int" -1]
@@ -55,35 +55,37 @@
 	    set var_value 42
 
 	    int_label: DW_TAG_base_type {
-		{DW_AT_byte_size ${int_size} DW_FORM_udata}
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_name "int"}
+		DW_AT_byte_size ${int_size} DW_FORM_udata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name "int"
 	    }
 
 	    ref_label: DW_TAG_reference_type {
-		{DW_AT_byte_size ${addr_size} DW_FORM_udata}
-		{DW_AT_type :${int_label}}
+		DW_AT_byte_size ${addr_size} DW_FORM_udata
+		DW_AT_type :${int_label}
 	    }
 
 	    const_label: DW_TAG_const_type {
-		{DW_AT_type :${ref_label}}
+		DW_AT_type :${ref_label}
 	    }
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func { "main" }}
-		{DW_AT_type :${int_label}}
-		{DW_AT_external 1 DW_FORM_flag}
+		MACRO_AT_func { "main" }
+		DW_AT_type :${int_label}
+		DW_AT_external 1 DW_FORM_flag
 	    } {
 		variable_label: DW_TAG_variable {
-		    {DW_AT_name "var"}
-		    {DW_AT_type :${int_label}}
-		    {DW_AT_const_value ${var_value} DW_FORM_udata}
+		    DW_AT_name "var"
+		    DW_AT_type :${int_label}
+		    DW_AT_const_value ${var_value} DW_FORM_udata
 		}
 
 		DW_TAG_variable {
-		    {DW_AT_name "ref"}
-		    {DW_AT_type :${const_label}}
-		    {DW_AT_location {DW_OP_GNU_implicit_pointer ${variable_label} 0} SPECIAL_expr}
+		    DW_AT_name "ref"
+		    DW_AT_type :${const_label}
+		    DW_AT_location [subst {
+			DW_OP_GNU_implicit_pointer ${variable_label} 0
+		    }] SPECIAL_expr
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/implref-global.exp b/gdb/testsuite/gdb.dwarf2/implref-global.exp
index 5d9e679..cb885ef 100644
--- a/gdb/testsuite/gdb.dwarf2/implref-global.exp
+++ b/gdb/testsuite/gdb.dwarf2/implref-global.exp
@@ -47,7 +47,7 @@
 Dwarf::assemble ${asm_file} {
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
+	    DW_AT_language @DW_LANG_C_plus_plus
 	} {
 	    declare_labels int_label variable_label ref_label
 	    set int_size [get_sizeof "int" -1]
@@ -56,32 +56,36 @@
 	    set addr_size [get_sizeof "void *" -1]
 
 	    int_label: DW_TAG_base_type {
-		{DW_AT_byte_size ${int_size} DW_FORM_udata}
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_name "int"}
+		DW_AT_byte_size ${int_size} DW_FORM_udata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name "int"
 	    }
 
 	    ref_label: DW_TAG_reference_type {
-		{DW_AT_byte_size ${addr_size} DW_FORM_udata}
-		{DW_AT_type :${int_label}}
+		DW_AT_byte_size ${addr_size} DW_FORM_udata
+		DW_AT_type :${int_label}
 	    }
 
 	    variable_label: DW_TAG_variable {
-		{DW_AT_name "global_var"}
-		{DW_AT_type :${int_label}}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "global_var"]} SPECIAL_expr}
+		DW_AT_name "global_var"
+		DW_AT_type :${int_label}
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "global_var"]
+		}] SPECIAL_expr
 	    }
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func { "main" }}
-		{DW_AT_type :${int_label}}
-		{DW_AT_external 1 DW_FORM_flag}
+		MACRO_AT_func { "main" }
+		DW_AT_type :${int_label}
+		DW_AT_external 1 DW_FORM_flag
 	    } {
 		DW_TAG_variable {
-		    {DW_AT_name "ref"}
-		    {DW_AT_type :${ref_label}}
-		    {DW_AT_location {DW_OP_GNU_implicit_pointer ${variable_label} 0} SPECIAL_expr}
+		    DW_AT_name "ref"
+		    DW_AT_type :${ref_label}
+		    DW_AT_location [subst {
+			DW_OP_GNU_implicit_pointer ${variable_label} 0
+		    }] SPECIAL_expr
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/implref-struct.exp b/gdb/testsuite/gdb.dwarf2/implref-struct.exp
index 1add485..9dc3b1b 100644
--- a/gdb/testsuite/gdb.dwarf2/implref-struct.exp
+++ b/gdb/testsuite/gdb.dwarf2/implref-struct.exp
@@ -47,7 +47,7 @@
 Dwarf::assemble ${asm_file} {
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
+	    DW_AT_language @DW_LANG_C_plus_plus
 	} {
 	    declare_labels int_label struct_label variable_label ref_label
 	    set int_size [get_sizeof "int" -1]
@@ -61,62 +61,68 @@
 	    set c_offset 8
 
 	    int_label: DW_TAG_base_type {
-		{DW_AT_byte_size ${int_size} DW_FORM_udata}
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_name "int"}
+		DW_AT_byte_size ${int_size} DW_FORM_udata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name "int"
 	    }
 
 	    struct_label: DW_TAG_structure_type {
-		{DW_AT_name "S"}
-		{DW_AT_byte_size ${S_size} DW_FORM_udata}
+		DW_AT_name "S"
+		DW_AT_byte_size ${S_size} DW_FORM_udata
 	    } {
 		DW_TAG_member {
-		    {DW_AT_name "a"}
-		    {DW_AT_type :${int_label}}
-		    {DW_AT_data_member_location 0 DW_FORM_udata}
+		    DW_AT_name "a"
+		    DW_AT_type :${int_label}
+		    DW_AT_data_member_location 0 DW_FORM_udata
 		}
 
 		DW_TAG_member {
-		    {DW_AT_name "b"}
-		    {DW_AT_type :${int_label}}
-		    {DW_AT_data_member_location ${b_offset} DW_FORM_udata}
+		    DW_AT_name "b"
+		    DW_AT_type :${int_label}
+		    DW_AT_data_member_location ${b_offset} DW_FORM_udata
 		}
 
 		DW_TAG_member {
-		    {DW_AT_name "c"}
-		    {DW_AT_type :${int_label}}
-		    {DW_AT_data_member_location ${c_offset} DW_FORM_udata}
+		    DW_AT_name "c"
+		    DW_AT_type :${int_label}
+		    DW_AT_data_member_location ${c_offset} DW_FORM_udata
 		}
 	    }
 
 	    ref_label: DW_TAG_reference_type {
-		{DW_AT_byte_size ${addr_size} DW_FORM_udata}
-		{DW_AT_type :${struct_label}}
+		DW_AT_byte_size ${addr_size} DW_FORM_udata
+		DW_AT_type :${struct_label}
 	    }
 
 	    variable_label: DW_TAG_variable {
-		{DW_AT_name "s1"}
-		{DW_AT_type :${struct_label}}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "s1"]} SPECIAL_expr}
+		DW_AT_name "s1"
+		DW_AT_type :${struct_label}
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "s1"]
+		}] SPECIAL_expr
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "s2"}
-		{DW_AT_type :${struct_label}}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "s2"]} SPECIAL_expr}
+		DW_AT_name "s2"
+		DW_AT_type :${struct_label}
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "s2"]
+		}] SPECIAL_expr
 	    }
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func { "main" }}
-		{DW_AT_type :${int_label}}
-		{DW_AT_external 1 DW_FORM_flag}
+		MACRO_AT_func { "main" }
+		DW_AT_type :${int_label}
+		DW_AT_external 1 DW_FORM_flag
 	    } {
 	        DW_TAG_variable {
-		    {DW_AT_name "ref"}
-		    {DW_AT_type :${ref_label}}
-		    {DW_AT_location {DW_OP_GNU_implicit_pointer ${variable_label} 0} SPECIAL_expr}
+		    DW_AT_name "ref"
+		    DW_AT_type :${ref_label}
+		    DW_AT_location [subst {
+			DW_OP_GNU_implicit_pointer ${variable_label} 0
+		    }] SPECIAL_expr
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/imported-unit-abstract-const-value.exp b/gdb/testsuite/gdb.dwarf2/imported-unit-abstract-const-value.exp
index 2517a2a..7141d6b 100644
--- a/gdb/testsuite/gdb.dwarf2/imported-unit-abstract-const-value.exp
+++ b/gdb/testsuite/gdb.dwarf2/imported-unit-abstract-const-value.exp
@@ -40,40 +40,40 @@
 
     cu {} {
 	cu_label: partial_unit {
-	    {language @DW_LANG_C}
-	    {name "imported_unit.c"}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name "imported_unit.c"
 	} {
 	    int_label: base_type {
-		{byte_size $int_size sdata}
-		{encoding @DW_ATE_signed}
-		{name int}
+		DW_AT_byte_size $int_size sdata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name int
 	    }
 
 	    aaa_label: DW_TAG_variable {
-		{name aaa}
-		{type :$int_label}
-		{const_value 1 DW_FORM_sdata}
+		DW_AT_name aaa
+		DW_AT_type :$int_label
+		DW_AT_const_value 1 DW_FORM_sdata
 	    }
 
 	    main_label: subprogram {
-		{name main}
-		{type :$int_label}
-		{external 1 flag}
+		DW_AT_name main
+		DW_AT_type :$int_label
+		DW_AT_external 1 flag
 	    }
 	}
     }
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name "<artificial>"}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name "<artificial>"
 	} {
 	    DW_TAG_variable {
-		{abstract_origin %$aaa_label}
+		DW_AT_abstract_origin %$aaa_label
 	    }
 	    subprogram {
-		{abstract_origin %$main_label}
-		{MACRO_AT_range {main}}
+		DW_AT_abstract_origin %$main_label
+		MACRO_AT_range {main}
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/imported-unit-bp.exp.tcl b/gdb/testsuite/gdb.dwarf2/imported-unit-bp.exp.tcl
index 65c3466..de1195a 100644
--- a/gdb/testsuite/gdb.dwarf2/imported-unit-bp.exp.tcl
+++ b/gdb/testsuite/gdb.dwarf2/imported-unit-bp.exp.tcl
@@ -38,34 +38,34 @@
 
     cu {} {
 	compile_unit {
-	    {language @$lang}
-	    {name "<artificial>"}
+	    DW_AT_language @$lang
+	    DW_AT_name "<artificial>"
 	} {
 	    imported_unit {
-		{import %$cu_label}
+		DW_AT_import %$cu_label
 	    }
 	}
     }
 
     cu {} {
 	cu_label: compile_unit {
-	    {producer "gcc"}
-	    {language @$lang}
-	    {name ${srcfile}}
-	    {comp_dir "/tmp"}
-	    {low_pc 0 addr}
-	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	    DW_AT_producer "gcc"
+	    DW_AT_language @$lang
+	    DW_AT_name ${srcfile}
+	    DW_AT_comp_dir "/tmp"
+	    DW_AT_low_pc 0 addr
+	    DW_AT_stmt_list ${lines_label} DW_FORM_sec_offset
 	} {
 	    callee_subprog_label: subprogram {
-		{external 1 flag}
-		{name callee}
-		{inline 3 data1}
+		DW_AT_external 1 flag
+		DW_AT_name callee
+		DW_AT_inline 3 data1
 	    }
 	    subprogram {
-		{external 1 flag}
-		{name func}
-		{low_pc $func_start addr}
-		{high_pc "$func_start + $func_len" addr}
+		DW_AT_external 1 flag
+		DW_AT_name func
+		DW_AT_low_pc $func_start addr
+		DW_AT_high_pc "$func_start + $func_len" addr
 	    } {
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/imported-unit-c.exp b/gdb/testsuite/gdb.dwarf2/imported-unit-c.exp
index 521ccc3..4ccda52 100644
--- a/gdb/testsuite/gdb.dwarf2/imported-unit-c.exp
+++ b/gdb/testsuite/gdb.dwarf2/imported-unit-c.exp
@@ -22,52 +22,52 @@
     # imported CU 1: inty unsigned
     cu {} {
 	cu_label: compile_unit {
-	    {language @DW_LANG_C}
-	    {name "<artificial>"}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name "<artificial>"
 	} {
 	    int_label: base_type {
-		{byte_size $int_size sdata}
-		{encoding @DW_ATE_unsigned}
-		{name {unsigned int}}
+		DW_AT_byte_size $int_size sdata
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_name {unsigned int}
 	    }
-            DW_TAG_typedef {
-                {DW_AT_name inty}
-                {DW_AT_type :$int_label}
-            }
+	    DW_TAG_typedef {
+		DW_AT_name inty
+		DW_AT_type :$int_label
+	    }
 	}
     }
 
     # imported CU 2: inty signed
     cu {} {
 	cu2_label: compile_unit {
-	    {language @DW_LANG_C}
-	    {name "<artificial>"}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name "<artificial>"
 	} {
 	    int2_label: base_type {
-		{byte_size $int_size sdata}
-		{encoding @DW_ATE_signed}
-		{name {int}}
+		DW_AT_byte_size $int_size sdata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name {int}
 	    }
-            DW_TAG_typedef {
-                {DW_AT_name inty}
-                {DW_AT_type :$int2_label}
-            }
+	    DW_TAG_typedef {
+		DW_AT_name inty
+		DW_AT_type :$int2_label
+	    }
 	}
     }
 
     # main CU
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name "<artificial>"}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name "<artificial>"
 	} {
 	    imported_unit {
-		{import %$cu2_label}
+		DW_AT_import %$cu2_label
 	    }
 
 	    subprogram {
-		{MACRO_AT_func {main}}
-		{external 1 flag}
+		MACRO_AT_func {main}
+		DW_AT_external 1 flag
 	    }
 	}
     }
@@ -75,16 +75,16 @@
     # foo CU
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name "<artificial>"}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name "<artificial>"
 	} {
 	    imported_unit {
-		{import %$cu_label}
+		DW_AT_import %$cu_label
 	    }
 
 	    subprogram {
-		{MACRO_AT_func {foo}}
-		{external 1 flag}
+		MACRO_AT_func {foo}
+		DW_AT_external 1 flag
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/imported-unit-runto-main.exp b/gdb/testsuite/gdb.dwarf2/imported-unit-runto-main.exp
index cdcb810..12dc69e 100644
--- a/gdb/testsuite/gdb.dwarf2/imported-unit-runto-main.exp
+++ b/gdb/testsuite/gdb.dwarf2/imported-unit-runto-main.exp
@@ -37,31 +37,31 @@
 
     cu {} {
 	cu_label: partial_unit {
-	    {language @DW_LANG_C}
-	    {name "imported_unit.c"}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name "imported_unit.c"
 	} {
 	    int_label: base_type {
-		{byte_size $int_size sdata}
-		{encoding @DW_ATE_signed}
-		{name int}
+		DW_AT_byte_size $int_size sdata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name int
 	    }
 
 	    main_label: subprogram {
-		{name main}
-		{type :$int_label}
-		{external 1 flag}
+		DW_AT_name main
+		DW_AT_type :$int_label
+		DW_AT_external 1 flag
 	    }
 	}
     }
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name "<artificial>"}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name "<artificial>"
 	} {
 	    subprogram {
-		{abstract_origin %$main_label}
-		{MACRO_AT_range {main}}
+		DW_AT_abstract_origin %$main_label
+		MACRO_AT_range {main}
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/imported-unit.exp b/gdb/testsuite/gdb.dwarf2/imported-unit.exp
index e5df67e..2c17f2d 100644
--- a/gdb/testsuite/gdb.dwarf2/imported-unit.exp
+++ b/gdb/testsuite/gdb.dwarf2/imported-unit.exp
@@ -52,27 +52,27 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C_plus_plus}
-	    {name "<artificial>"}
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name "<artificial>"
 	} {
 	    imported_unit {
-		{import %$cu_label}
+		DW_AT_import %$cu_label
 	    }
 	    subprogram {
-		{abstract_origin %$main_label}
-		{MACRO_AT_range {main}}
+		DW_AT_abstract_origin %$main_label
+		MACRO_AT_range {main}
 	    } {
 		subprogram {
-		    {abstract_origin %$doit_label}
-		    {MACRO_AT_range {doit}}
+		    DW_AT_abstract_origin %$doit_label
+		    MACRO_AT_range {doit}
 		} {
 		    formal_parameter {
-			{abstract_origin %$doit_self_label}
+			DW_AT_abstract_origin %$doit_self_label
 		    }
 		}
 	        DW_TAG_variable {
-		    {abstract_origin %$foo_label}
-		    {location 4 data1}
+		    DW_AT_abstract_origin %$foo_label
+		    DW_AT_location 4 data1
 		}
 	    }
 	}
@@ -80,43 +80,43 @@
 
     cu {} {
 	cu_label: compile_unit {
-	    {language @DW_LANG_C_plus_plus}
-	    {name "imported_unit.c"}
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name "imported_unit.c"
 	} {
 	    int_label: base_type {
-		{byte_size $int_size sdata}
-		{encoding @DW_ATE_signed}
-		{name int}
+		DW_AT_byte_size $int_size sdata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name int
 	    }
 
 	    main_label: subprogram {
-		{name main}
-		{type :$int_label}
-		{external 1 flag}
+		DW_AT_name main
+		DW_AT_type :$int_label
+		DW_AT_external 1 flag
 	    } {
 		Foo_label: class_type {
-		    {name Foo}
-		    {byte_size 1 sdata}
+		    DW_AT_name Foo
+		    DW_AT_byte_size 1 sdata
 		} {
 		    doit_label: subprogram {
-			{name doit}
-			{type :$int_label}
-			{accessibility 1 DW_FORM_data1}
+			DW_AT_name doit
+			DW_AT_type :$int_label
+			DW_AT_accessibility 1 DW_FORM_data1
 		    } {
 			doit_self_label: formal_parameter {
-			    {name this}
-			    {artificial 1 DW_FORM_flag_present}
-			    {type :$Foo_pointer_type}
+			    DW_AT_name this
+			    DW_AT_artificial 1 DW_FORM_flag_present
+			    DW_AT_type :$Foo_pointer_type
 			}
 		    }
 		    Foo_pointer_type: pointer_type {
-			{byte_size $addr_size sdata}
-			{type :$Foo_label}
+			DW_AT_byte_size $addr_size sdata
+			DW_AT_type :$Foo_label
 		    }
 		}
 		foo_label: DW_TAG_variable {
-		    {name foo}
-		    {type :$Foo_label}
+		    DW_AT_name foo
+		    DW_AT_type :$Foo_label
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/info-locals-optimized-out.exp b/gdb/testsuite/gdb.dwarf2/info-locals-optimized-out.exp
index 76e20b6..59c9669 100644
--- a/gdb/testsuite/gdb.dwarf2/info-locals-optimized-out.exp
+++ b/gdb/testsuite/gdb.dwarf2/info-locals-optimized-out.exp
@@ -32,31 +32,31 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-		{DW_AT_name $srcfile}
-		{DW_AT_comp_dir /tmp}
+		DW_AT_name $srcfile
+		DW_AT_comp_dir /tmp
 	} {
 	    declare_labels int_type_label
 
 	    # int
 	    int_type_label: base_type {
-		{name "int"}
-		{encoding @DW_ATE_signed}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name "int"
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    }
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func { main }}
-		{DW_AT_external 1 flag}
+		MACRO_AT_func { main }
+		DW_AT_external 1 flag
 	    } {
 		# A variable completely optimized out.
 		DW_TAG_variable {
-		    {name "opt_out"}
-		    {type :$int_type_label}
+		    DW_AT_name "opt_out"
+		    DW_AT_type :$int_type_label
 		}
 		DW_TAG_variable {
-		    {name const_bytes}
-		    {type :$int_type_label}
-		    {const_value "\x01\x01\x01\x01" DW_FORM_block1}
+		    DW_AT_name const_bytes
+		    DW_AT_type :$int_type_label
+		    DW_AT_const_value "\x01\x01\x01\x01" DW_FORM_block1
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/inlined_subroutine-inheritance.exp b/gdb/testsuite/gdb.dwarf2/inlined_subroutine-inheritance.exp
index b26650c..7236662 100644
--- a/gdb/testsuite/gdb.dwarf2/inlined_subroutine-inheritance.exp
+++ b/gdb/testsuite/gdb.dwarf2/inlined_subroutine-inheritance.exp
@@ -38,21 +38,21 @@
 
     cu {} {
 	Db: compile_unit {
-	    {language @DW_LANG_C99}
-	    {name "<artificial>"}
+	    DW_AT_language @DW_LANG_C99
+	    DW_AT_name "<artificial>"
 	} {
 	    D72f8: subprogram {
-		{abstract_origin %$D272519}
-		{low_pc 0xb9e20 addr}
-		{high_pc 0x1f5 data4}
+		DW_AT_abstract_origin %$D272519
+		DW_AT_low_pc 0xb9e20 addr
+		DW_AT_high_pc 0x1f5 data4
 	    } {
 		D736e: inlined_subroutine {
-		    {abstract_origin %$D26b227}
-		    {low_pc 0xb9efc addr}
-		    {high_pc 0xc data4}
+		    DW_AT_abstract_origin %$D26b227
+		    DW_AT_low_pc 0xb9efc addr
+		    DW_AT_high_pc 0xc data4
 		} {
 		    formal_parameter {
-			{abstract_origin %$D274c42}
+			DW_AT_abstract_origin %$D274c42
 		    }
 		}
 	    }
@@ -61,53 +61,53 @@
 
     cu {} {
 	D266465: compile_unit {
-	    {language @DW_LANG_C99}
+	    DW_AT_language @DW_LANG_C99
 	} {
 	    D266477: typedef {
-		{name "size_t"}
-		{type :$D266483}
+		DW_AT_name "size_t"
+		DW_AT_type :$D266483
 	    }
 
 	    D266483: base_type {
-		{byte_size 8 sdata}
-		{encoding @DW_ATE_unsigned}
+		DW_AT_byte_size 8 sdata
+		DW_AT_encoding @DW_ATE_unsigned
 	    }
 
 	    D266496: pointer_type {
-		{byte_size 8 sdata}
+		DW_AT_byte_size 8 sdata
 	    }
 
 	    D266498: restrict_type {
-		{type :$D266496}
+		DW_AT_type :$D266496
 	    }
 
 	    D266ad3: pointer_type {
-		{byte_size 8 sdata}
-		{type :$D266ade}
+		DW_AT_byte_size 8 sdata
+		DW_AT_type :$D266ade
 	    }
 
 	    D266ad9: restrict_type {
-		{type :$D266ad3}
+		DW_AT_type :$D266ad3
 	    }
 
 	    D266ade: const_type {}
 
 	    D26b227: subprogram {
-		{external 1 flag}
-		{name "memcpy"}
-		{type :$D266496}
+		DW_AT_external 1 flag
+		DW_AT_name "memcpy"
+		DW_AT_type :$D266496
 	    } {
 		D26b237: formal_parameter {
-		    {name "__dest"}
-		    {type :$D266498}
+		    DW_AT_name "__dest"
+		    DW_AT_type :$D266498
 		}
 		formal_parameter {
-		    {name "__src"}
-		    {type :$D266ad9}
+		    DW_AT_name "__src"
+		    DW_AT_type :$D266ad9
 		}
 		formal_parameter {
-		    {name "__len"}
-		    {type :$D266477}
+		    DW_AT_name "__len"
+		    DW_AT_type :$D266477
 		}
 	    }
 	}
@@ -115,85 +115,85 @@
 
     cu {} {
 	D26d8b1: compile_unit {
-	    {language @DW_LANG_C99}
+	    DW_AT_language @DW_LANG_C99
 	} {
 	    D26d8c3: typedef {
-		{name "size_t"}
-		{type :$D26d8cf}
+		DW_AT_name "size_t"
+		DW_AT_type :$D26d8cf
 	    }
 
 	    D26d8cf: base_type {
-		{byte_size 8 sdata}
-		{encoding @DW_ATE_unsigned}
-		{name "long unsigned int"}
+		DW_AT_byte_size 8 sdata
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_name "long unsigned int"
 	    }
 
 	    D26d944: pointer_type {
-		{byte_size 8 sdata}
+		DW_AT_byte_size 8 sdata
 	    }
 
 	    D26d946: restrict_type {
-		{type :$D26d944}
+		DW_AT_type :$D26d944
 	    }
 
 	    D26e103: structure_type {
-		{name "__object"}
-		{byte_size 12 sdata}
+		DW_AT_name "__object"
+		DW_AT_byte_size 12 sdata
 	    } {
 		member {
-		    {name "__ob_next"}
-		    {type :$D26e145}
-		    {data_member_location 0 sdata}
+		    DW_AT_name "__ob_next"
+		    DW_AT_type :$D26e145
+		    DW_AT_data_member_location 0 sdata
 		}
 	    }
 
 	    D26e145: pointer_type {
-		{byte_size 8 sdata}
-		{type :$D26e103}
+		DW_AT_byte_size 8 sdata
+		DW_AT_type :$D26e103
 	    }
 
 	    D26e415: typedef {
-		{name "PyObject"}
-		{type :$D26e103}
+		DW_AT_name "PyObject"
+		DW_AT_type :$D26e103
 	    }
 
 	    D26e48c: pointer_type {
-		{byte_size 8 sdata}
-		{type :$D26e415}
+		DW_AT_byte_size 8 sdata
+		DW_AT_type :$D26e415
 	    }
 
 	    D26df00: pointer_type {
-		{byte_size 8 sdata}
-		{type :$D26df0b}
+		DW_AT_byte_size 8 sdata
+		DW_AT_type :$D26df0b
 	    }
 
 	    D26df06: restrict_type {
-		{type :$D26df00}
+		DW_AT_type :$D26df00
 	    }
 
 	    D26df0b: const_type {}
 
 	    D272519: subprogram {
-		{name "bytes_repeat"}
-		{type :$D26e48c}
+		DW_AT_name "bytes_repeat"
+		DW_AT_type :$D26e48c
 	    }
 
 	    D274c1a: subprogram {
-		{external 1 flag}
-		{name "memcpy"}
-		{type :$D26d944}
+		DW_AT_external 1 flag
+		DW_AT_name "memcpy"
+		DW_AT_type :$D26d944
 	    } {
 		formal_parameter {
-		    {name "__dest"}
-		    {type :$D26d946}
+		    DW_AT_name "__dest"
+		    DW_AT_type :$D26d946
 		}
 		formal_parameter {
-		    {name "__src"}
-		    {type :$D26df06}
+		    DW_AT_name "__src"
+		    DW_AT_type :$D26df06
 		}
 		D274c42: formal_parameter {
-		    {name "__len"}
-		    {type :$D26d8c3}
+		    DW_AT_name "__len"
+		    DW_AT_type :$D26d8c3
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/intbits.exp b/gdb/testsuite/gdb.dwarf2/intbits.exp
index ff1d69a..ec77c2d 100644
--- a/gdb/testsuite/gdb.dwarf2/intbits.exp
+++ b/gdb/testsuite/gdb.dwarf2/intbits.exp
@@ -33,153 +33,162 @@
 Dwarf::assemble ${asm_file} {
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
+	    DW_AT_language @DW_LANG_C_plus_plus
 	} {
 	    declare_labels i7_type u1_type u17_type u31_type \
 		u31_1_type u32_0_type u0_0_type be30_1_type just_bit_type
 
 	    i7_type: DW_TAG_base_type {
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_endianity @DW_END_little}
-		{DW_AT_name "i7"}
-		{DW_AT_byte_size 2 DW_FORM_udata}
-		{DW_AT_bit_size 7 DW_FORM_implicit_const}
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_endianity @DW_END_little
+		DW_AT_name "i7"
+		DW_AT_byte_size 2 DW_FORM_udata
+		DW_AT_bit_size 7 DW_FORM_implicit_const
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "v_i16_m1"}
-		{DW_AT_type :${i7_type}}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "i16_m1"]}
-		    SPECIAL_expr}
+		DW_AT_name "v_i16_m1"
+		DW_AT_type :${i7_type}
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "i16_m1"]
+		}] SPECIAL_expr
 	    }
 
 	    u1_type: DW_TAG_base_type {
-		{DW_AT_encoding @DW_ATE_boolean}
-		{DW_AT_endianity @DW_END_little}
-		{DW_AT_name "u1"}
-		{DW_AT_byte_size 2 DW_FORM_udata}
-		{DW_AT_bit_size 1 DW_FORM_udata}
-		{DW_AT_data_bit_offset 2 DW_FORM_udata}
+		DW_AT_encoding @DW_ATE_boolean
+		DW_AT_endianity @DW_END_little
+		DW_AT_name "u1"
+		DW_AT_byte_size 2 DW_FORM_udata
+		DW_AT_bit_size 1 DW_FORM_udata
+		DW_AT_data_bit_offset 2 DW_FORM_udata
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "v_u16_1"}
-		{DW_AT_type :${u1_type}}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "u16_1"]}
-		    SPECIAL_expr}
+		DW_AT_name "v_u16_1"
+		DW_AT_type :${u1_type}
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "u16_1"]
+		}] SPECIAL_expr
 	    }
 
 	    u17_type: DW_TAG_base_type {
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_endianity @DW_END_little}
-		{DW_AT_name "u17"}
-		{DW_AT_byte_size 4 DW_FORM_udata}
-		{DW_AT_bit_size 17 DW_FORM_udata}
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_endianity @DW_END_little
+		DW_AT_name "u17"
+		DW_AT_byte_size 4 DW_FORM_udata
+		DW_AT_bit_size 17 DW_FORM_udata
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "v_u32_m2"}
-		{DW_AT_type :${u17_type}}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "u32_m2"]}
-		    SPECIAL_expr}
+		DW_AT_name "v_u32_m2"
+		DW_AT_type :${u17_type}
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "u32_m2"]
+		}] SPECIAL_expr
 	    }
 
 	    u31_type: DW_TAG_base_type {
-		{DW_AT_encoding @DW_ATE_unsigned}
-		{DW_AT_endianity @DW_END_little}
-		{DW_AT_name "u31"}
-		{DW_AT_byte_size 4 DW_FORM_udata}
-		{DW_AT_bit_size 31 DW_FORM_udata}
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_endianity @DW_END_little
+		DW_AT_name "u31"
+		DW_AT_byte_size 4 DW_FORM_udata
+		DW_AT_bit_size 31 DW_FORM_udata
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "v_u32_1"}
-		{DW_AT_type :${u31_type}}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "u32_1"]}
-		    SPECIAL_expr}
+		DW_AT_name "v_u32_1"
+		DW_AT_type :${u31_type}
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "u32_1"]
+		}] SPECIAL_expr
 	    }
 
 	    u31_1_type: DW_TAG_base_type {
-		{DW_AT_encoding @DW_ATE_unsigned}
-		{DW_AT_endianity @DW_END_little}
-		{DW_AT_name "u31_1"}
-		{DW_AT_byte_size 4 DW_FORM_udata}
-		{DW_AT_bit_size 31 DW_FORM_udata}
-		{DW_AT_data_bit_offset 1 DW_FORM_udata}
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_endianity @DW_END_little
+		DW_AT_name "u31_1"
+		DW_AT_byte_size 4 DW_FORM_udata
+		DW_AT_bit_size 31 DW_FORM_udata
+		DW_AT_data_bit_offset 1 DW_FORM_udata
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "v_u32_1_off"}
-		{DW_AT_type :${u31_1_type}}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "u32_1_off"]}
-		    SPECIAL_expr}
+		DW_AT_name "v_u32_1_off"
+		DW_AT_type :${u31_1_type}
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "u32_1_off"]
+		}] SPECIAL_expr
 	    }
 
 	    be30_1_type: DW_TAG_base_type {
-		{DW_AT_encoding @DW_ATE_unsigned}
-		{DW_AT_endianity @DW_END_big}
-		{DW_AT_name "be30_1"}
-		{DW_AT_byte_size 4 DW_FORM_udata}
-		{DW_AT_bit_size 30 DW_FORM_udata}
-		{DW_AT_data_bit_offset 1 DW_FORM_udata}
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_endianity @DW_END_big
+		DW_AT_name "be30_1"
+		DW_AT_byte_size 4 DW_FORM_udata
+		DW_AT_bit_size 30 DW_FORM_udata
+		DW_AT_data_bit_offset 1 DW_FORM_udata
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "v_be30_1_off"}
-		{DW_AT_type :${be30_1_type}}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "be30_1_off"]}
-		    SPECIAL_expr}
+		DW_AT_name "v_be30_1_off"
+		DW_AT_type :${be30_1_type}
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "be30_1_off"]
+		}] SPECIAL_expr
 	    }
 
 	    u32_0_type: DW_TAG_base_type {
-		{DW_AT_encoding @DW_ATE_unsigned}
-		{DW_AT_endianity @DW_END_little}
-		{DW_AT_name "u32_0"}
-		{DW_AT_byte_size 4 DW_FORM_udata}
-		{DW_AT_bit_size 0 DW_FORM_udata}
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_endianity @DW_END_little
+		DW_AT_name "u32_0"
+		DW_AT_byte_size 4 DW_FORM_udata
+		DW_AT_bit_size 0 DW_FORM_udata
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "v_u32_0"}
-		{DW_AT_type :${u32_0_type}}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "u32_0"]}
-		    SPECIAL_expr}
+		DW_AT_name "v_u32_0"
+		DW_AT_type :${u32_0_type}
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "u32_0"]
+		}] SPECIAL_expr
 	    }
 
 	    u0_0_type: DW_TAG_base_type {
-		{DW_AT_encoding @DW_ATE_unsigned}
-		{DW_AT_endianity @DW_END_little}
-		{DW_AT_name "u0_0"}
-		{DW_AT_byte_size 0 DW_FORM_udata}
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_endianity @DW_END_little
+		DW_AT_name "u0_0"
+		DW_AT_byte_size 0 DW_FORM_udata
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "v_u0_0"}
-		{DW_AT_type :${u0_0_type}}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "u32_0"]}
-		    SPECIAL_expr}
+		DW_AT_name "v_u0_0"
+		DW_AT_type :${u0_0_type}
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "u32_0"]
+		}] SPECIAL_expr
 	    }
 
 	    just_bit_type: DW_TAG_base_type {
-		{DW_AT_encoding @DW_ATE_unsigned}
-		{DW_AT_name "just_bit_type"}
-		{DW_AT_bit_size 3 DW_FORM_udata}
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_name "just_bit_type"
+		DW_AT_bit_size 3 DW_FORM_udata
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "v_just_bit"}
-		{DW_AT_type :${just_bit_type}}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "just_bit_0"]}
-		    SPECIAL_expr}
+		DW_AT_name "v_just_bit"
+		DW_AT_type :${just_bit_type}
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "just_bit_0"]
+		}] SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/loc-sec-offset.exp b/gdb/testsuite/gdb.dwarf2/loc-sec-offset.exp
index 6e10b6c..fb4bf3a 100644
--- a/gdb/testsuite/gdb.dwarf2/loc-sec-offset.exp
+++ b/gdb/testsuite/gdb.dwarf2/loc-sec-offset.exp
@@ -53,27 +53,27 @@
 	    DW_TAG_compile_unit {
 	    } {
 		int_type1: DW_TAG_base_type {
-		    {DW_AT_byte_size 4 DW_FORM_data1}
-		    {DW_AT_encoding @DW_ATE_signed}
-		    {DW_AT_name "int"}
+		    DW_AT_byte_size 4 DW_FORM_data1
+		    DW_AT_encoding @DW_ATE_signed
+		    DW_AT_name "int"
 		}
 
 		DW_TAG_variable {
-		    {DW_AT_name "foo"}
-		    {DW_AT_location $foo_location_list DW_FORM_sec_offset}
-		    {DW_AT_type :$int_type1}
+		    DW_AT_name "foo"
+		    DW_AT_location $foo_location_list DW_FORM_sec_offset
+		    DW_AT_type :$int_type1
 		}
 
 		DW_TAG_subprogram {
-		    {DW_AT_name "func1"}
-		    {DW_AT_low_pc $func1_addr}
-		    {DW_AT_high_pc $func1_len DW_FORM_udata}
+		    DW_AT_name "func1"
+		    DW_AT_low_pc $func1_addr
+		    DW_AT_high_pc $func1_len DW_FORM_udata
 		}
 
 		DW_TAG_subprogram {
-		    {DW_AT_name "func2"}
-		    {DW_AT_low_pc $func2_addr}
-		    {DW_AT_high_pc $func2_len DW_FORM_udata}
+		    DW_AT_name "func2"
+		    DW_AT_low_pc $func2_addr
+		    DW_AT_high_pc $func2_len DW_FORM_udata
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/locexpr-data-member-location.exp b/gdb/testsuite/gdb.dwarf2/locexpr-data-member-location.exp
index 7665680..2a8b457 100644
--- a/gdb/testsuite/gdb.dwarf2/locexpr-data-member-location.exp
+++ b/gdb/testsuite/gdb.dwarf2/locexpr-data-member-location.exp
@@ -154,38 +154,38 @@
 
     cu { label cu_label } {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
-	    {name ${::srcfile}}
-	    {stmt_list $L DW_FORM_sec_offset}
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name ${::srcfile}
+	    DW_AT_stmt_list $L DW_FORM_sec_offset
         } {
 	    declare_labels int_label class_A_label class_B_label \
 	                   B_ptr_label
 
 	    int_label: DW_TAG_base_type {
-		{DW_AT_byte_size ${::long_size} DW_FORM_udata}
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_name "int"}
+		DW_AT_byte_size ${::long_size} DW_FORM_udata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name "int"
 	    }
 
 	    class_A_label: DW_TAG_class_type {
-		{DW_AT_name "A"}
-		{DW_AT_byte_size ${::struct_A_size} DW_FORM_sdata}
+		DW_AT_name "A"
+		DW_AT_byte_size ${::struct_A_size} DW_FORM_sdata
 	    } {
 		DW_TAG_member {
-		    {DW_AT_name "a"}
-		    {DW_AT_type :$int_label}
-		    {DW_AT_data_member_location ${::A_a} DW_FORM_udata}
+		    DW_AT_name "a"
+		    DW_AT_type :$int_label
+		    DW_AT_data_member_location ${::A_a} DW_FORM_udata
 		}
 		DW_TAG_member {
-		    {DW_AT_name "x"}
-		    {DW_AT_type :$int_label}
-		    {DW_AT_data_member_location ${::A_x} DW_FORM_udata}
+		    DW_AT_name "x"
+		    DW_AT_type :$int_label
+		    DW_AT_data_member_location ${::A_x} DW_FORM_udata
 		}
 	    }
 
 	    class_B_label: DW_TAG_class_type {
-		{DW_AT_name "B"}
-		{DW_AT_byte_size ${::struct_B_size} DW_FORM_sdata}
+		DW_AT_name "B"
+		DW_AT_byte_size ${::struct_B_size} DW_FORM_sdata
 	    } {
 		# While there are easier / better ways to specify an
 		# offset used by DW_AT_data_member_location than that
@@ -201,45 +201,47 @@
 		# by decode_locdesc(); this is why those opcodes were
 		# chosen.
 		DW_TAG_inheritance {
-		    {DW_AT_type :$class_A_label}
-		    {DW_AT_data_member_location {
+		    DW_AT_type :$class_A_label
+		    DW_AT_data_member_location [subst {
 			DW_OP_constu ${::B_a}
 			DW_OP_plus
 			DW_OP_pick 0
-			DW_OP_drop} SPECIAL_expr}
-		    {DW_AT_accessibility 1 DW_FORM_data1}
+			DW_OP_drop}] SPECIAL_expr
+		    DW_AT_accessibility 1 DW_FORM_data1
 		}
 		DW_TAG_member {
-		    {DW_AT_name "b"}
-		    {DW_AT_type :$int_label}
-		    {DW_AT_data_member_location ${::B_b} DW_FORM_udata}
+		    DW_AT_name "b"
+		    DW_AT_type :$int_label
+		    DW_AT_data_member_location ${::B_b} DW_FORM_udata
 		}
 		DW_TAG_member {
-		    {DW_AT_name "x2"}
-		    {DW_AT_type :$int_label}
-		    {DW_AT_data_member_location ${::B_x2} DW_FORM_udata}
+		    DW_AT_name "x2"
+		    DW_AT_type :$int_label
+		    DW_AT_data_member_location ${::B_x2} DW_FORM_udata
 		}
 	    }
 
 	    B_ptr_label: DW_TAG_pointer_type {
-		{DW_AT_type :$class_B_label}
-		{DW_AT_byte_size ${::addr_size} DW_FORM_sdata}
+		DW_AT_type :$class_B_label
+		DW_AT_byte_size ${::addr_size} DW_FORM_sdata
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "g_A"}
-		{DW_AT_type :$class_A_label}
-		{DW_AT_external 1 flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "g_A"]} \
-		                 SPECIAL_expr}
+		DW_AT_name "g_A"
+		DW_AT_type :$class_A_label
+		DW_AT_external 1 flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "g_A"]
+		}] SPECIAL_expr
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "g_B"}
-		{DW_AT_type :$class_B_label}
-		{DW_AT_external 1 flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "g_B"]} \
-		                 SPECIAL_expr}
+		DW_AT_name "g_B"
+		DW_AT_type :$class_B_label
+		DW_AT_external 1 flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "g_B"]
+		}] SPECIAL_expr
 	    }
 
 	    # We can't use MACRO_AT for the definitions of foo and bar
@@ -247,23 +249,23 @@
 	    # flags.  Therefore, we list the name, low_pc, and high_pc
 	    # explicitly.
 	    DW_TAG_subprogram {
-		{DW_AT_name foo}
-		{DW_AT_low_pc $foo_start DW_FORM_addr}
-		{DW_AT_high_pc $foo_end DW_FORM_addr}
-		{DW_AT_type :${B_ptr_label}}
-		{DW_AT_external 1 flag}
+		DW_AT_name foo
+		DW_AT_low_pc $foo_start DW_FORM_addr
+		DW_AT_high_pc $foo_end DW_FORM_addr
+		DW_AT_type :${B_ptr_label}
+		DW_AT_external 1 flag
 	    }
 
 	    DW_TAG_subprogram {
-		{DW_AT_name bar}
-		{DW_AT_low_pc $bar_start DW_FORM_addr}
-		{DW_AT_high_pc $bar_end DW_FORM_addr}
-		{DW_AT_type :${B_ptr_label}}
-		{DW_AT_external 1 flag}
+		DW_AT_name bar
+		DW_AT_low_pc $bar_start DW_FORM_addr
+		DW_AT_high_pc $bar_end DW_FORM_addr
+		DW_AT_type :${B_ptr_label}
+		DW_AT_external 1 flag
 	    } {
 		DW_TAG_formal_parameter {
-		    {DW_AT_name v}
-		    {DW_AT_type :${B_ptr_label}}
+		    DW_AT_name v
+		    DW_AT_type :${B_ptr_label}
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/loclists-multiple-cus.exp b/gdb/testsuite/gdb.dwarf2/loclists-multiple-cus.exp
index b0c9d7d..021129d 100644
--- a/gdb/testsuite/gdb.dwarf2/loclists-multiple-cus.exp
+++ b/gdb/testsuite/gdb.dwarf2/loclists-multiple-cus.exp
@@ -57,30 +57,30 @@
 	    declare_labels int_type
 
 	    DW_TAG_compile_unit {
-		{DW_AT_loclists_base cu_table DW_FORM_sec_offset}
+		DW_AT_loclists_base cu_table DW_FORM_sec_offset
 	    } {
 		int_type: DW_TAG_base_type {
-		    {DW_AT_byte_size 4 DW_FORM_data1}
-		    {DW_AT_encoding @DW_ATE_signed}
-		    {DW_AT_name "int"}
+		    DW_AT_byte_size 4 DW_FORM_data1
+		    DW_AT_encoding @DW_ATE_signed
+		    DW_AT_name "int"
 		}
 
 		DW_TAG_variable {
-		    {DW_AT_name "foo"}
-		    {DW_AT_location 1 DW_FORM_loclistx}
-		    {DW_AT_type :$int_type}
+		    DW_AT_name "foo"
+		    DW_AT_location 1 DW_FORM_loclistx
+		    DW_AT_type :$int_type
 		}
 
 		DW_TAG_subprogram {
-		    {DW_AT_name "func1"}
-		    {DW_AT_low_pc $func1_addr}
-		    {DW_AT_high_pc $func1_len DW_FORM_udata}
+		    DW_AT_name "func1"
+		    DW_AT_low_pc $func1_addr
+		    DW_AT_high_pc $func1_len DW_FORM_udata
 		}
 
 		DW_TAG_subprogram {
-		    {DW_AT_name "func2"}
-		    {DW_AT_low_pc $func2_addr}
-		    {DW_AT_high_pc $func2_len DW_FORM_udata}
+		    DW_AT_name "func2"
+		    DW_AT_low_pc $func2_addr
+		    DW_AT_high_pc $func2_len DW_FORM_udata
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/loclists-sec-offset.exp b/gdb/testsuite/gdb.dwarf2/loclists-sec-offset.exp
index 38512cd..e39ca19 100644
--- a/gdb/testsuite/gdb.dwarf2/loclists-sec-offset.exp
+++ b/gdb/testsuite/gdb.dwarf2/loclists-sec-offset.exp
@@ -66,27 +66,27 @@
 	    DW_TAG_compile_unit {
 	    } {
 		int_type1: DW_TAG_base_type {
-		    {DW_AT_byte_size 4 DW_FORM_data1}
-		    {DW_AT_encoding @DW_ATE_signed}
-		    {DW_AT_name "int"}
+		    DW_AT_byte_size 4 DW_FORM_data1
+		    DW_AT_encoding @DW_ATE_signed
+		    DW_AT_name "int"
 		}
 
 		DW_TAG_variable {
-		    {DW_AT_name "foo"}
-		    {DW_AT_location $foo_location_list DW_FORM_sec_offset}
-		    {DW_AT_type :$int_type1}
+		    DW_AT_name "foo"
+		    DW_AT_location $foo_location_list DW_FORM_sec_offset
+		    DW_AT_type :$int_type1
 		}
 
 		DW_TAG_subprogram {
-		    {DW_AT_name "func1"}
-		    {DW_AT_low_pc $func1_addr}
-		    {DW_AT_high_pc $func1_len DW_FORM_udata}
+		    DW_AT_name "func1"
+		    DW_AT_low_pc $func1_addr
+		    DW_AT_high_pc $func1_len DW_FORM_udata
 		}
 
 		DW_TAG_subprogram {
-		    {DW_AT_name "func2"}
-		    {DW_AT_low_pc $func2_addr}
-		    {DW_AT_high_pc $func2_len DW_FORM_udata}
+		    DW_AT_name "func2"
+		    DW_AT_low_pc $func2_addr
+		    DW_AT_high_pc $func2_len DW_FORM_udata
 		}
 	    }
 	}
@@ -100,30 +100,30 @@
 	    is_64 $is_64
 	} {
 	    DW_TAG_compile_unit {
-		{DW_AT_loclists_base cu2_table DW_FORM_sec_offset}
+		DW_AT_loclists_base cu2_table DW_FORM_sec_offset
 	    } {
 		int_type2: DW_TAG_base_type {
-		    {DW_AT_byte_size 4 DW_FORM_data1}
-		    {DW_AT_encoding @DW_ATE_signed}
-		    {DW_AT_name "int"}
+		    DW_AT_byte_size 4 DW_FORM_data1
+		    DW_AT_encoding @DW_ATE_signed
+		    DW_AT_name "int"
 		}
 
 		DW_TAG_variable {
-		    {DW_AT_name "bar"}
-		    {DW_AT_location $bar_location_list DW_FORM_sec_offset}
-		    {DW_AT_type :$int_type2}
+		    DW_AT_name "bar"
+		    DW_AT_location $bar_location_list DW_FORM_sec_offset
+		    DW_AT_type :$int_type2
 		}
 
 		DW_TAG_subprogram {
-		    {DW_AT_name "func3"}
-		    {DW_AT_low_pc $func3_addr}
-		    {DW_AT_high_pc $func3_len DW_FORM_udata}
+		    DW_AT_name "func3"
+		    DW_AT_low_pc $func3_addr
+		    DW_AT_high_pc $func3_len DW_FORM_udata
 		}
 
 		DW_TAG_subprogram {
-		    {DW_AT_name "func4"}
-		    {DW_AT_low_pc $func4_addr}
-		    {DW_AT_high_pc $func4_len DW_FORM_udata}
+		    DW_AT_name "func4"
+		    DW_AT_low_pc $func4_addr
+		    DW_AT_high_pc $func4_len DW_FORM_udata
 		}
 	    }
 	}
@@ -138,27 +138,27 @@
 	    DW_TAG_compile_unit {
 	    } {
 		int_type3: DW_TAG_base_type {
-		    {DW_AT_byte_size 4 DW_FORM_data1}
-		    {DW_AT_encoding @DW_ATE_signed}
-		    {DW_AT_name "int"}
+		    DW_AT_byte_size 4 DW_FORM_data1
+		    DW_AT_encoding @DW_ATE_signed
+		    DW_AT_name "int"
 		}
 
 		DW_TAG_variable {
-		    {DW_AT_name "baz"}
-		    {DW_AT_location $baz_location_list DW_FORM_sec_offset}
-		    {DW_AT_type :$int_type3}
+		    DW_AT_name "baz"
+		    DW_AT_location $baz_location_list DW_FORM_sec_offset
+		    DW_AT_type :$int_type3
 		}
 
 		DW_TAG_subprogram {
-		    {DW_AT_name "func5"}
-		    {DW_AT_low_pc $func5_addr}
-		    {DW_AT_high_pc $func5_len DW_FORM_udata}
+		    DW_AT_name "func5"
+		    DW_AT_low_pc $func5_addr
+		    DW_AT_high_pc $func5_len DW_FORM_udata
 		}
 
 		DW_TAG_subprogram {
-		    {DW_AT_name "func6"}
-		    {DW_AT_low_pc $func6_addr}
-		    {DW_AT_high_pc $func6_len DW_FORM_udata}
+		    DW_AT_name "func6"
+		    DW_AT_low_pc $func6_addr
+		    DW_AT_high_pc $func6_len DW_FORM_udata
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/loclists-start-end.exp b/gdb/testsuite/gdb.dwarf2/loclists-start-end.exp
index 2569896..876a8b2 100644
--- a/gdb/testsuite/gdb.dwarf2/loclists-start-end.exp
+++ b/gdb/testsuite/gdb.dwarf2/loclists-start-end.exp
@@ -48,30 +48,30 @@
 	    declare_labels int_type
 
 	    DW_TAG_compile_unit {
-		{DW_AT_loclists_base cu_table DW_FORM_sec_offset}
+		DW_AT_loclists_base cu_table DW_FORM_sec_offset
 	    } {
 		int_type: DW_TAG_base_type {
-		    {DW_AT_byte_size 4 DW_FORM_data1}
-		    {DW_AT_encoding @DW_ATE_signed}
-		    {DW_AT_name "int"}
+		    DW_AT_byte_size 4 DW_FORM_data1
+		    DW_AT_encoding @DW_ATE_signed
+		    DW_AT_name "int"
 		}
 
 		DW_TAG_variable {
-		    {DW_AT_name "foo"}
-		    {DW_AT_location 1 DW_FORM_loclistx}
-		    {DW_AT_type :$int_type}
+		    DW_AT_name "foo"
+		    DW_AT_location 1 DW_FORM_loclistx
+		    DW_AT_type :$int_type
 		}
 
 		DW_TAG_subprogram {
-		    {DW_AT_name "func1"}
-		    {DW_AT_low_pc $func1_addr}
-		    {DW_AT_high_pc $func1_len DW_FORM_udata}
+		    DW_AT_name "func1"
+		    DW_AT_low_pc $func1_addr
+		    DW_AT_high_pc $func1_len DW_FORM_udata
 		}
 
 		DW_TAG_subprogram {
-		    {DW_AT_name "func2"}
-		    {DW_AT_low_pc $func2_addr}
-		    {DW_AT_high_pc $func2_len DW_FORM_udata}
+		    DW_AT_name "func2"
+		    DW_AT_low_pc $func2_addr
+		    DW_AT_high_pc $func2_len DW_FORM_udata
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/macro-complaints.exp b/gdb/testsuite/gdb.dwarf2/macro-complaints.exp
index 7b0b27a..17e18c0 100644
--- a/gdb/testsuite/gdb.dwarf2/macro-complaints.exp
+++ b/gdb/testsuite/gdb.dwarf2/macro-complaints.exp
@@ -36,20 +36,20 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_name $::srcfile}
-	    {DW_AT_macros $cu_macro1 DW_FORM_sec_offset}
-	    {DW_AT_stmt_list $L DW_FORM_sec_offset}
+	    DW_AT_name $::srcfile
+	    DW_AT_macros $cu_macro1 DW_FORM_sec_offset
+	    DW_AT_stmt_list $L DW_FORM_sec_offset
 	} {
 	    declare_labels int_type
 
 	    int_type: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name int}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name int
 	    }
 	    DW_TAG_subprogram {
-		{MACRO_AT_func {main}}
-		{type :$int_type}
+		MACRO_AT_func {main}
+		DW_AT_type :$int_type
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/macro-source-path.exp.tcl b/gdb/testsuite/gdb.dwarf2/macro-source-path.exp.tcl
index 6254286..b71d55d 100644
--- a/gdb/testsuite/gdb.dwarf2/macro-source-path.exp.tcl
+++ b/gdb/testsuite/gdb.dwarf2/macro-source-path.exp.tcl
@@ -64,24 +64,24 @@
 
 		cu {} {
 		    DW_TAG_compile_unit {
-			    {DW_AT_producer "My C Compiler"}
-			    {DW_AT_language @DW_LANG_C11}
-			    {DW_AT_name $::DW_AT_name}
-			    {DW_AT_comp_dir $comp_dir}
-			    {DW_AT_stmt_list $Llines DW_FORM_sec_offset}
-			    {DW_AT_macros $cu_macros DW_FORM_sec_offset}
+			    DW_AT_producer "My C Compiler"
+			    DW_AT_language @DW_LANG_C11
+			    DW_AT_name $::DW_AT_name
+			    DW_AT_comp_dir $comp_dir
+			    DW_AT_stmt_list $Llines DW_FORM_sec_offset
+			    DW_AT_macros $cu_macros DW_FORM_sec_offset
 		    } {
 			declare_labels int_type
 
 			int_type: DW_TAG_base_type {
-			    {DW_AT_byte_size 4 DW_FORM_sdata}
-			    {DW_AT_encoding  @DW_ATE_signed}
-			    {DW_AT_name int}
+			    DW_AT_byte_size 4 DW_FORM_sdata
+			    DW_AT_encoding  @DW_ATE_signed
+			    DW_AT_name int
 			}
 
 			DW_TAG_subprogram {
-			    {MACRO_AT_func {main}}
-			    {type :$int_type}
+			    MACRO_AT_func {main}
+			    DW_AT_type :$int_type
 			}
 		    }
 		}
diff --git a/gdb/testsuite/gdb.dwarf2/main-subprogram.exp b/gdb/testsuite/gdb.dwarf2/main-subprogram.exp
index 467cf20..0200316 100644
--- a/gdb/testsuite/gdb.dwarf2/main-subprogram.exp
+++ b/gdb/testsuite/gdb.dwarf2/main-subprogram.exp
@@ -31,22 +31,22 @@
 	# so choose a language that isn't C and that gdb is unlikely
 	# to implement.
 	DW_TAG_compile_unit {
-		{DW_AT_language @DW_LANG_PLI}
-                {DW_AT_name     $srcfile}
-                {DW_AT_comp_dir /tmp}
-        } {
+		DW_AT_language @DW_LANG_PLI
+		DW_AT_name     $srcfile
+		DW_AT_comp_dir /tmp
+	} {
 	    declare_labels type
 
-            type: DW_TAG_base_type {
-                {DW_AT_byte_size 4 DW_FORM_sdata}
-                {DW_AT_encoding  @DW_ATE_signed}
-                {DW_AT_name      int}
-            }
+	    type: DW_TAG_base_type {
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	int
+	    }
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func {mymain}}
-		{type :$type}
-		{DW_AT_main_subprogram 1 flag}
+		MACRO_AT_func {mymain}
+		DW_AT_type :$type
+		DW_AT_main_subprogram 1 flag
 	    } {
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/mega-enum.exp b/gdb/testsuite/gdb.dwarf2/mega-enum.exp
index 7482edb..7817fbf 100644
--- a/gdb/testsuite/gdb.dwarf2/mega-enum.exp
+++ b/gdb/testsuite/gdb.dwarf2/mega-enum.exp
@@ -26,21 +26,21 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-		{DW_AT_language @DW_LANG_C}
-		{DW_AT_name	$srcfile}
-		{DW_AT_comp_dir /tmp}
+		DW_AT_language @DW_LANG_C
+		DW_AT_name	$srcfile
+		DW_AT_comp_dir /tmp
 	} {
 	    declare_labels integer_label
 
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding	 @DW_ATE_signed}
-		{DW_AT_name	 int}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	 @DW_ATE_signed
+		DW_AT_name	 int
 	    }
 
 	    DW_TAG_enumeration_type {
-		{DW_AT_name mega_enum}
-		{DW_AT_type :$integer_label}
+		DW_AT_name mega_enum
+		DW_AT_type :$integer_label
 	    } {
 		# In the past gdb used a 'short' for the field count.
 		# But this fails if there are too many fields.	If the
@@ -48,8 +48,8 @@
 		# so use a number that's just big enough.
 		for {set i 0} {$i < 65538} {incr i} {
 		    DW_TAG_enumerator {
-			{DW_AT_name DEI_$i}
-			{DW_AT_const_value $i DW_FORM_sdata}
+			DW_AT_name DEI_$i
+			DW_AT_const_value $i DW_FORM_sdata
 		    }
 		}
 	    }
diff --git a/gdb/testsuite/gdb.dwarf2/method-ptr.exp b/gdb/testsuite/gdb.dwarf2/method-ptr.exp
index 867527c..828166f 100644
--- a/gdb/testsuite/gdb.dwarf2/method-ptr.exp
+++ b/gdb/testsuite/gdb.dwarf2/method-ptr.exp
@@ -28,48 +28,50 @@
     declare_labels ptr_label subr_label memptr_label
 
     cu {} {
-	compile_unit {{language @DW_LANG_C_plus_plus}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C_plus_plus
+	} {
 	    int_label: base_type {
-		{name int}
-		{encoding @DW_ATE_signed}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name int
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    }
 
 	    float_label: base_type {
-		{name float}
-		{encoding @DW_ATE_float}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name float
+		DW_AT_encoding @DW_ATE_float
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    }
 
 	    struct_label: structure_type {
-		{name S}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name S
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    }
 
 	    ptr_label: pointer_type {
-		{type :$struct_label}
+		DW_AT_type :$struct_label
 	    }
 
 	    subr_label: subroutine_type {
-		{type :$int_label}
+		DW_AT_type :$int_label
 	    } {
 		formal_parameter {
-		    {type :$ptr_label}
-		    {artificial 1 DW_FORM_flag_present}
+		    DW_AT_type :$ptr_label
+		    DW_AT_artificial 1 DW_FORM_flag_present
 		}
 		formal_parameter {
-		    {type :$float_label}
+		    DW_AT_type :$float_label
 		}
 	    }
 
 	    memptr_label: ptr_to_member_type {
-		{type :$subr_label}
-		{containing_type :$struct_label}
+		DW_AT_type :$subr_label
+		DW_AT_containing_type :$struct_label
 	    }
 
 	    typedef {
-		{name the_typedef}
-		{type :$memptr_label}
+		DW_AT_name the_typedef
+		DW_AT_type :$memptr_label
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/missing-line-table.exp b/gdb/testsuite/gdb.dwarf2/missing-line-table.exp
index 835686e..977a016 100644
--- a/gdb/testsuite/gdb.dwarf2/missing-line-table.exp
+++ b/gdb/testsuite/gdb.dwarf2/missing-line-table.exp
@@ -38,19 +38,19 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name missing-line-table.c}
-	    {stmt_list $Llines DW_FORM_sec_offset}
-	    {DW_AT_low_pc $::foo_start DW_FORM_addr}
-	    {DW_AT_high_pc $::main_end DW_FORM_addr}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name missing-line-table.c
+	    DW_AT_stmt_list $Llines DW_FORM_sec_offset
+	    DW_AT_low_pc $::foo_start DW_FORM_addr
+	    DW_AT_high_pc $::main_end DW_FORM_addr
 	} {
 	    subprogram {
-		{external 1 flag}
-		{MACRO_AT_func {main}}
+		DW_AT_external 1 flag
+		MACRO_AT_func {main}
 	    }
 	    subprogram {
-		{external 1 flag}
-		{MACRO_AT_func {foo}}
+		DW_AT_external 1 flag
+		MACRO_AT_func {foo}
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/missing-sig-type.exp b/gdb/testsuite/gdb.dwarf2/missing-sig-type.exp
index 947f024..a3eaae9 100644
--- a/gdb/testsuite/gdb.dwarf2/missing-sig-type.exp
+++ b/gdb/testsuite/gdb.dwarf2/missing-sig-type.exp
@@ -30,8 +30,8 @@
 
 	    # This signature is intentionally wrong.
 	    typedef_label: typedef {
-		{name foo}
-		{type 0xee22334455667788 ref_sig8 }
+		DW_AT_name foo
+		DW_AT_type 0xee22334455667788 ref_sig8
 	    }
 	}
     }
@@ -39,9 +39,9 @@
     tu {} 0x1122334455667788 the_type {
 	type_unit {} {
 	    the_type: base_type {
-		{name int}
-		{encoding @DW_ATE_signed}
-		{byte_size 4 sdata}
+		DW_AT_name int
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 4 sdata
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/missing-type-name-for-templates.exp b/gdb/testsuite/gdb.dwarf2/missing-type-name-for-templates.exp
index 108c9c7..ee6992b 100644
--- a/gdb/testsuite/gdb.dwarf2/missing-type-name-for-templates.exp
+++ b/gdb/testsuite/gdb.dwarf2/missing-type-name-for-templates.exp
@@ -40,112 +40,112 @@
 Dwarf::assemble $asm_file {
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
+	    DW_AT_language @DW_LANG_C_plus_plus
 	} {
 	    declare_labels int float template_var1 template_var2 template_var3
 
 	    int: DW_TAG_base_type {
-		{DW_AT_name "int"}
-		{DW_AT_byte_size 4 DW_FORM_data1}
-		{DW_AT_encoding @DW_ATE_signed}
+		DW_AT_name "int"
+		DW_AT_byte_size 4 DW_FORM_data1
+		DW_AT_encoding @DW_ATE_signed
 	    }
 
 	    float: base_type {
-		{DW_AT_name float}
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding @DW_ATE_float}
+		DW_AT_name float
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding @DW_ATE_float
 	    }
 
 	    DW_TAG_subprogram {
-		{DW_AT_name "main"}
-		{DW_AT_low_pc $::main_start DW_FORM_addr}
-		{DW_AT_high_pc $::main_end DW_FORM_addr}
-		{DW_AT_type :$int}
-		{DW_AT_external 1 DW_FORM_flag}
+		DW_AT_name "main"
+		DW_AT_low_pc $::main_start DW_FORM_addr
+		DW_AT_high_pc $::main_end DW_FORM_addr
+		DW_AT_type :$int
+		DW_AT_external 1 DW_FORM_flag
 	    } {
 		DW_TAG_variable {
-		    {DW_AT_name "var1"}
-		    {DW_AT_type :$template_var1}
+		    DW_AT_name "var1"
+		    DW_AT_type :$template_var1
 		}
 		DW_TAG_variable {
-		    {DW_AT_name "var2"}
-		    {DW_AT_type :$template_var2}
+		    DW_AT_name "var2"
+		    DW_AT_type :$template_var2
 		}
 		DW_TAG_variable {
-		    {DW_AT_name "var3"}
-		    {DW_AT_type :$template_var3}
+		    DW_AT_name "var3"
+		    DW_AT_type :$template_var3
 		}
 	    }
 
 	    # A variable whose type is a template instantiation with two
 	    # template parameters, one unnamed.
 	    template_var1: DW_TAG_structure_type {
-		{DW_AT_name "template_var1<int, float>"}
+		DW_AT_name "template_var1<int, float>"
 	    } {
 		DW_TAG_member {
-		    {DW_AT_name "me"}
-		    {DW_AT_type :$int}
+		    DW_AT_name "me"
+		    DW_AT_type :$int
 		}
 		DW_TAG_member {
-		    {DW_AT_name "me2"}
-		    {DW_AT_type :$float}
+		    DW_AT_name "me2"
+		    DW_AT_type :$float
 		}
 		DW_TAG_template_type_param {
-		    {DW_AT_type :$int}
+		    DW_AT_type :$int
 		}
 		DW_TAG_template_type_param {
-		    {DW_AT_name "second"}
-		    {DW_AT_type :$float}
+		    DW_AT_name "second"
+		    DW_AT_type :$float
 		}
 	    }
 
 	    # A variable whose type is a template instantiation with two
 	    # template parameters, both unnamed.
 	    template_var2: DW_TAG_class_type {
-		{DW_AT_name "template_var2<int, float>"}
+		DW_AT_name "template_var2<int, float>"
 	    } {
 		DW_TAG_member {
-		    {DW_AT_name "me"}
-		    {DW_AT_type :$int}
+		    DW_AT_name "me"
+		    DW_AT_type :$int
 		}
 		DW_TAG_member {
-		    {DW_AT_name "me2"}
-		    {DW_AT_type :$float}
+		    DW_AT_name "me2"
+		    DW_AT_type :$float
 		}
 		DW_TAG_template_type_param {
-		    {DW_AT_type :$int}
+		    DW_AT_type :$int
 		}
 		DW_TAG_template_type_param {
-		    {DW_AT_type :$float}
+		    DW_AT_type :$float
 		}
 	    }
 
 	    # A variable whose type is a template instantiation with four
 	    # template arguments, two types, two values, all unnamed.
 	    template_var3: DW_TAG_structure_type {
-		{DW_AT_name "template_var3<0, int, 11, float>"}
+		DW_AT_name "template_var3<0, int, 11, float>"
 	    } {
 		DW_TAG_member {
-		    {DW_AT_name "me"}
-		    {DW_AT_type :$int}
+		    DW_AT_name "me"
+		    DW_AT_type :$int
 		}
 		DW_TAG_member {
-		    {DW_AT_name "me2"}
-		    {DW_AT_type :$float}
+		    DW_AT_name "me2"
+		    DW_AT_type :$float
 		}
 		DW_TAG_template_value_param {
-		    {DW_AT_type :$int}
-		    {DW_AT_const_value 0 DW_FORM_sdata}
+		    DW_AT_type :$int
+		    DW_AT_const_value 0 DW_FORM_sdata
 		}
 		DW_TAG_template_type_param {
-		    {DW_AT_type :$int}
+		    DW_AT_type :$int
 		}
 		DW_TAG_template_value_param {
-		    {DW_AT_type :$int}
-		    {DW_AT_const_value 11 DW_FORM_sdata}
+		    DW_AT_type :$int
+		    DW_AT_const_value 11 DW_FORM_sdata
 		}
 		DW_TAG_template_type_param {
-		    {DW_AT_type :$float}
+		    DW_AT_type :$float
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/missing-type-name.exp b/gdb/testsuite/gdb.dwarf2/missing-type-name.exp
index 91997f7..68a5552 100644
--- a/gdb/testsuite/gdb.dwarf2/missing-type-name.exp
+++ b/gdb/testsuite/gdb.dwarf2/missing-type-name.exp
@@ -44,48 +44,52 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	        {DW_AT_producer "GNU C 8.1"}
-                {DW_AT_language @DW_LANG_C}
-                {DW_AT_name     $srcfile}
-                {DW_AT_comp_dir /tmp}
-        } {
+		DW_AT_producer "GNU C 8.1"
+		DW_AT_language @DW_LANG_C
+		DW_AT_name     $srcfile
+		DW_AT_comp_dir /tmp
+	} {
 	    declare_labels main_type int_type ptr_type
 
 	    main_type: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
 	    }
 
 	    int_type: DW_TAG_base_type {
-		{DW_AT_byte_size 0 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
+		DW_AT_byte_size 0 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
 	    }
 
 	    ptr_type: DW_TAG_pointer_type {
-		{DW_AT_type :$int_type}
+		DW_AT_type :$int_type
 	    }
 
-            DW_TAG_subprogram {
-                {MACRO_AT_func func}
-                {type :$int_type}
+	    DW_TAG_subprogram {
+		MACRO_AT_func func
+		DW_AT_type :$int_type
 	    }
-            DW_TAG_subprogram {
-                {MACRO_AT_func main}
-                {type :$main_type}
+	    DW_TAG_subprogram {
+		MACRO_AT_func main
+		DW_AT_type :$main_type
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "var_a"}
-		{DW_AT_type :$main_type}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "var_a"]} SPECIAL_expr}
+		DW_AT_name "var_a"
+		DW_AT_type :$main_type
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "var_a"]
+		}] SPECIAL_expr
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "var_ptr"}
-		{DW_AT_type :$ptr_type}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "var_ptr"]} SPECIAL_expr}
+		DW_AT_name "var_ptr"
+		DW_AT_type :$ptr_type
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "var_ptr"]
+		}] SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/multidictionary.exp b/gdb/testsuite/gdb.dwarf2/multidictionary.exp
index 3458f7c..4fdf985 100644
--- a/gdb/testsuite/gdb.dwarf2/multidictionary.exp
+++ b/gdb/testsuite/gdb.dwarf2/multidictionary.exp
@@ -35,40 +35,40 @@
 
     cu {} {
 	D45d9: compile_unit {
-	    {language @DW_LANG_C_plus_plus}
-	    {name "SerialPortUtils.cpp"}
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name "SerialPortUtils.cpp"
 	} {
 	    D5079: base_type {
-		{byte_size 1 sdata}
-		{encoding @DW_ATE_unsigned}
-		{name "char"}
+		DW_AT_byte_size 1 sdata
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_name "char"
 	    }
 
 	    D5080: const_type {
-		{type :$D5079}
+		DW_AT_type :$D5079
 	    }
 
 	    D50a9: pointer_type {
-		{byte_size 4 sdata}
-		{type :$D5080}
+		DW_AT_byte_size 4 sdata
+		DW_AT_type :$D5080
 	    }
 
 	    D50af: const_type {
-		{type :$D50a9}
+		DW_AT_type :$D50a9
 	    }
 
 	    D5ab2: subprogram {
-		{external 1 flag}
-		{linkage_name "_Z18SerialSyncWriteStrPKc"}
+		DW_AT_external 1 flag
+		DW_AT_linkage_name "_Z18SerialSyncWriteStrPKc"
 	    } {
 		D5ac2: formal_parameter {
-		    {name "msg"}
-		    {type :$D50af}
+		    DW_AT_name "msg"
+		    DW_AT_type :$D50af
 		}
 		D5ace: lexical_block {} {
 		    D5acf: DW_TAG_variable {
-			{name "p"}
-			{type :$D50a9}
+			DW_AT_name "p"
+			DW_AT_type :$D50a9
 		    }
 		}
 	    }
@@ -77,34 +77,34 @@
 
     cu {} {
 	D2135f: compile_unit {
-	    {language @DW_LANG_C_plus_plus}
-	    {name "Main.cpp"}
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name "Main.cpp"
 	} {
 	    D2216a: base_type {
-		{byte_size 1 sdata}
-		{encoding @DW_ATE_unsigned_char}
-		{name "char"}
+		DW_AT_byte_size 1 sdata
+		DW_AT_encoding @DW_ATE_unsigned_char
+		DW_AT_name "char"
 	    }
 
 	    D22171: const_type {
-		{type :$D2216a}
+		DW_AT_type :$D2216a
 	    }
 
 	    D226c4: pointer_type {
-		{byte_size 4 sdata}
-		{type :$D22171}
+		DW_AT_byte_size 4 sdata
+		DW_AT_type :$D22171
 	    }
 
 	    D226ca: const_type {
-		{type :$D226c4}
+		DW_AT_type :$D226c4
 	    }
 
 	    D245da: subprogram {
-		{name "PrintPanicMsg"}
+		DW_AT_name "PrintPanicMsg"
 	    } {
 		D245e6: formal_parameter {
-		    {name "msg"}
-		    {type :$D226ca}
+		    DW_AT_name "msg"
+		    DW_AT_type :$D226ca
 		}
 	    }
 	}
@@ -112,28 +112,28 @@
 
     cu {} {
        D41c21: compile_unit {
-           {language @DW_LANG_C99}
-           {name "<artificial>"}
+	   DW_AT_language @DW_LANG_C99
+	   DW_AT_name "<artificial>"
        } {
-           D42025: subprogram {
-               {abstract_origin %$D245da}
-               {low_pc 0x80b60 addr}
-               {high_pc 0x6c data4}
-           } {
+	   D42025: subprogram {
+	       DW_AT_abstract_origin %$D245da
+	       DW_AT_low_pc 0x80b60 addr
+	       DW_AT_high_pc 0x6c data4
+	   } {
 	       D42038: formal_parameter {
-		   {abstract_origin %$D245e6}
+		   DW_AT_abstract_origin %$D245e6
 	       }
 
 	       D42045: inlined_subroutine {
-                   {abstract_origin %$D5ab2}
-                   {low_pc 0x8060 addr}
-                   {high_pc 0xc data4}
-               } {
-                   D420b5: formal_parameter {
-                       {abstract_origin %$D5ac2}
-                   }
-               }
-           }
+		   DW_AT_abstract_origin %$D5ab2
+		   DW_AT_low_pc 0x8060 addr
+		   DW_AT_high_pc 0xc data4
+	       } {
+		   D420b5: formal_parameter {
+		       DW_AT_abstract_origin %$D5ac2
+		   }
+	       }
+	   }
        }
     }
 }
diff --git a/gdb/testsuite/gdb.dwarf2/nameless-enum.exp b/gdb/testsuite/gdb.dwarf2/nameless-enum.exp
index 1610b7c..6d42fb7 100644
--- a/gdb/testsuite/gdb.dwarf2/nameless-enum.exp
+++ b/gdb/testsuite/gdb.dwarf2/nameless-enum.exp
@@ -27,25 +27,25 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_D}
-	    {DW_AT_name	$srcfile}
-	    {DW_AT_comp_dir /tmp}
+	    DW_AT_language @DW_LANG_D
+	    DW_AT_name	$srcfile
+	    DW_AT_comp_dir /tmp
 	} {
 	    declare_labels integer_label
 
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding	 @DW_ATE_signed}
-		{DW_AT_name	 int}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	 @DW_ATE_signed
+		DW_AT_name	 int
 	    }
 
 	    DW_TAG_enumeration_type {
-		{DW_AT_type :$integer_label}
-		{DW_AT_enum_class 1 DW_FORM_flag}
+		DW_AT_type :$integer_label
+		DW_AT_enum_class 1 DW_FORM_flag
 	    } {
 		DW_TAG_enumerator {
-		    {DW_AT_name VALUE}
-		    {DW_AT_const_value 17 DW_FORM_sdata}
+		    DW_AT_name VALUE
+		    DW_AT_const_value 17 DW_FORM_sdata
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/negative-data-member-location.exp b/gdb/testsuite/gdb.dwarf2/negative-data-member-location.exp
index 365204f..48f272e 100644
--- a/gdb/testsuite/gdb.dwarf2/negative-data-member-location.exp
+++ b/gdb/testsuite/gdb.dwarf2/negative-data-member-location.exp
@@ -31,33 +31,35 @@
 Dwarf::assemble ${asm_file} {
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C99}
-	    {DW_AT_producer "GNU C++17 11.1.0 -mtune=generic -march=x86-64 -g3 -O0"}
-	    {name ${::srcfile}}
+	    DW_AT_language @DW_LANG_C99
+	    DW_AT_producer "GNU C++17 11.1.0 -mtune=generic -march=x86-64 -g3 -O0"
+	    DW_AT_name ${::srcfile}
 	} {
 	    declare_labels int_label struct_label
 
 	    int_label: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_udata}
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_name "int"}
+		DW_AT_byte_size 4 DW_FORM_udata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name "int"
 	    }
 
 	    struct_label: DW_TAG_structure_type {
-		{DW_AT_name "the_struct"}
-		{DW_AT_byte_size 4 DW_FORM_udata}
+		DW_AT_name "the_struct"
+		DW_AT_byte_size 4 DW_FORM_udata
 	    } {
 		DW_TAG_member {
-		    {DW_AT_name "field"}
-		    {DW_AT_type :$int_label}
-		    {DW_AT_data_member_location -1 DW_FORM_sdata}
+		    DW_AT_name "field"
+		    DW_AT_type :$int_label
+		    DW_AT_data_member_location -1 DW_FORM_sdata
 		}
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "s"}
-		{DW_AT_type :$struct_label}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "s"]} SPECIAL_expr}
+		DW_AT_name "s"
+		DW_AT_type :$struct_label
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "s"]
+		}] SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/nonvar-access.exp b/gdb/testsuite/gdb.dwarf2/nonvar-access.exp
index 4aef19a..93c3dea 100644
--- a/gdb/testsuite/gdb.dwarf2/nonvar-access.exp
+++ b/gdb/testsuite/gdb.dwarf2/nonvar-access.exp
@@ -31,165 +31,165 @@
 
     cu {} {
 	compile_unit {
-	    {DW_AT_name $srcfile}
+	    DW_AT_name $srcfile
 	} {
 	    declare_labels int_type_label char_type_label \
 		struct_s_label struct_t_label array_a9_label \
 		char_ptr_label implicit_a_label stack_b_label
 
 	    int_type_label: base_type {
-		{name "int"}
-		{encoding @DW_ATE_signed}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name "int"
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    }
 	    char_type_label: base_type {
-		{name "char"}
-		{encoding @DW_ATE_unsigned}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name "char"
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    }
 	    char_ptr_label: pointer_type {
-		{type :$char_type_label}
+		DW_AT_type :$char_type_label
 	    }
 
 	    struct_s_label: structure_type {
-		{name s}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name s
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    } {
 		member {
-		    {name a}
-		    {type :$int_type_label}
-		    {data_member_location 0 DW_FORM_udata}
-		    {bit_size 8 DW_FORM_udata}
+		    DW_AT_name a
+		    DW_AT_type :$int_type_label
+		    DW_AT_data_member_location 0 DW_FORM_udata
+		    DW_AT_bit_size 8 DW_FORM_udata
 		}
 		member {
-		    {name b}
-		    {type :$int_type_label}
-		    {data_bit_offset 8 DW_FORM_udata}
-		    {bit_size 24 DW_FORM_udata}
+		    DW_AT_name b
+		    DW_AT_type :$int_type_label
+		    DW_AT_data_bit_offset 8 DW_FORM_udata
+		    DW_AT_bit_size 24 DW_FORM_udata
 		}
 	    }
 
 	    struct_t_label: structure_type {
-		{name t}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name t
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    } {
 		member {
-		    {name a}
-		    {type :$int_type_label}
-		    {data_member_location 0 DW_FORM_udata}
-		    {bit_size 9 DW_FORM_udata}
+		    DW_AT_name a
+		    DW_AT_type :$int_type_label
+		    DW_AT_data_member_location 0 DW_FORM_udata
+		    DW_AT_bit_size 9 DW_FORM_udata
 		}
 		member {
-		    {name b}
-		    {type :$int_type_label}
-		    {data_bit_offset 9 DW_FORM_udata}
-		    {bit_size 23 DW_FORM_udata}
+		    DW_AT_name b
+		    DW_AT_type :$int_type_label
+		    DW_AT_data_bit_offset 9 DW_FORM_udata
+		    DW_AT_bit_size 23 DW_FORM_udata
 		}
 	    }
 
 	    array_a9_label: array_type {
-		{type :$char_type_label}
+		DW_AT_type :$char_type_label
 	    } {
 		subrange_type {
-		    {type :$int_type_label}
-		    {upper_bound 8 DW_FORM_udata}
+		    DW_AT_type :$int_type_label
+		    DW_AT_upper_bound 8 DW_FORM_udata
 		}
 	    }
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func {main}}
-		{DW_AT_external 1 flag}
+		MACRO_AT_func {main}
+		DW_AT_external 1 flag
 	    } {
 		# Simple variable without location.
 		DW_TAG_variable {
-		    {name undef_int}
-		    {type :$int_type_label}
+		    DW_AT_name undef_int
+		    DW_AT_type :$int_type_label
 		}
 		# Struct variable without location.
 		DW_TAG_variable {
-		    {name undef_s}
-		    {type :$struct_s_label}
+		    DW_AT_name undef_s
+		    DW_AT_type :$struct_s_label
 		}
 		# Composite location: byte-aligned pieces.
 		DW_TAG_variable {
-		    {name def_s}
-		    {type :$struct_s_label}
-		    {location {
+		    DW_AT_name def_s
+		    DW_AT_type :$struct_s_label
+		    DW_AT_location {
 			const1u 0
 			stack_value
 			bit_piece 8 0
 			const1s -1
 			stack_value
 			bit_piece 24 0
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		# Composite location: non-byte-aligned pieces.
 		DW_TAG_variable {
-		    {name def_t}
-		    {type :$struct_t_label}
-		    {location {
+		    DW_AT_name def_t
+		    DW_AT_type :$struct_t_label
+		    DW_AT_location {
 			const2s -184
 			stack_value
 			bit_piece 9 0
 			const4u 1752286
 			stack_value
 			bit_piece 23 0
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		# Composite location with some empty pieces.
 		DW_TAG_variable {
-		    {name part_def_a}
-		    {type :$array_a9_label}
-		    {location {
+		    DW_AT_name part_def_a
+		    DW_AT_type :$array_a9_label
+		    DW_AT_location {
 			piece 3
 			const4u 0xf1927314
 			stack_value
 			piece 4
 			piece 2
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		# Implicit location: immediate value.
 		DW_TAG_variable {
-		    {name def_implicit_s}
-		    {type :$struct_s_label}
-		    {location {
+		    DW_AT_name def_implicit_s
+		    DW_AT_type :$struct_s_label
+		    DW_AT_location {
 			implicit_value 0x12 0x34 0x56 0x78
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		# Implicit location: immediate value for whole array, with
 		# excess bytes.
 		implicit_a_label: DW_TAG_variable {
-		    {name def_implicit_a}
-		    {type :$array_a9_label}
-		    {location {
+		    DW_AT_name def_implicit_a
+		    DW_AT_type :$array_a9_label
+		    DW_AT_location {
 			implicit_value 0x1 0x12 0x23 0x34 0x45 \
 			    0x56 0x67 0x78 0x89 0x9a 0xab
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		# Implicit pointer into immediate value.
 		DW_TAG_variable {
-		    {name implicit_a_ptr}
-		    {type :$char_ptr_label}
-		    {location {
+		    DW_AT_name implicit_a_ptr
+		    DW_AT_type :$char_ptr_label
+		    DW_AT_location [subst {
 			implicit_pointer $implicit_a_label 5
-		    } SPECIAL_expr}
+		    }] SPECIAL_expr
 		}
 		# Stack-value location.
 		stack_b_label: DW_TAG_variable {
-		    {name def_stack_b}
-		    {type :$struct_t_label}
-		    {location {
+		    DW_AT_name def_stack_b
+		    DW_AT_type :$struct_t_label
+		    DW_AT_location {
 			const4u 0x1a2b3c4d
 			stack_value
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		# Implicit pointer into stack value.
 		DW_TAG_variable {
-		    {name implicit_b_ptr}
-		    {type :$char_ptr_label}
-		    {location {
+		    DW_AT_name implicit_b_ptr
+		    DW_AT_type :$char_ptr_label
+		    DW_AT_location [subst {
 			implicit_pointer $stack_b_label 1
-		    } SPECIAL_expr}
+		    }] SPECIAL_expr
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/nostaticblock.exp b/gdb/testsuite/gdb.dwarf2/nostaticblock.exp
index 2cc8338..0d5943c 100644
--- a/gdb/testsuite/gdb.dwarf2/nostaticblock.exp
+++ b/gdb/testsuite/gdb.dwarf2/nostaticblock.exp
@@ -26,8 +26,8 @@
 Dwarf::assemble $asm_file {
     cu {} {
  	compile_unit {
-	    {low_pc 0x104320 DW_FORM_addr}
-	    {high_pc 0x1045ed DW_FORM_addr}
+	    DW_AT_low_pc 0x104320 DW_FORM_addr
+	    DW_AT_high_pc 0x1045ed DW_FORM_addr
 	} {
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/opaque-type-lookup.exp b/gdb/testsuite/gdb.dwarf2/opaque-type-lookup.exp
index 757212b..b4d275c 100644
--- a/gdb/testsuite/gdb.dwarf2/opaque-type-lookup.exp
+++ b/gdb/testsuite/gdb.dwarf2/opaque-type-lookup.exp
@@ -44,37 +44,37 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name opaque_before}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name opaque_before
 	} {
 	    imported_unit {
-		{import $partial_unit_with_opaque ref_addr}
+		DW_AT_import $partial_unit_with_opaque ref_addr
 	    }
 
 	    imported_unit {
-		{import $partial_unit_defining_a ref_addr}
+		DW_AT_import $partial_unit_defining_a ref_addr
 	    }
 	}
     }
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name opaque_after}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name opaque_after
 	} {
 	    imported_unit {
-		{import $partial_unit_defining_b ref_addr}
+		DW_AT_import $partial_unit_defining_b ref_addr
 	    }
 
 	    imported_unit {
-		{import $partial_unit_with_opaque ref_addr}
+		DW_AT_import $partial_unit_with_opaque ref_addr
 	    }
 	}
     }
 
     cu {} {
 	partial_unit_with_opaque: partial_unit {
-	    {name "partial_unit_with_opaque"}
+	    DW_AT_name "partial_unit_with_opaque"
 	} {
 	    # Normally gdb doesn't add opaque types to the symbol table
 	    # but there are times when it will, and in order to exercise
@@ -82,89 +82,89 @@
 	    # By giving it a size of 1 we achieve this.
 
 	    opaque_struct_a_label: structure_type {
-		{name struct_a}
-		{declaration 1 flag}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name struct_a
+		DW_AT_declaration 1 flag
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    }
 
 	    opaque_struct_b_label: structure_type {
-		{name struct_b}
-		{declaration 1 flag}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name struct_b
+		DW_AT_declaration 1 flag
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    }
 
 	    DW_TAG_variable {
-		{name variable_a}
-		{type :$opaque_struct_a_label}
-		{external 1 flag}
-		{declaration 1 flag}
+		DW_AT_name variable_a
+		DW_AT_type :$opaque_struct_a_label
+		DW_AT_external 1 flag
+		DW_AT_declaration 1 flag
 	    }
 
 	    DW_TAG_variable {
-		{name variable_b}
-		{type :$opaque_struct_b_label}
-		{external 1 flag}
-		{declaration 1 flag}
+		DW_AT_name variable_b
+		DW_AT_type :$opaque_struct_b_label
+		DW_AT_external 1 flag
+		DW_AT_declaration 1 flag
 	    }
 	}
     }
 
     cu {} {
 	partial_unit_defining_a: partial_unit {
-	    {name "partial_unit_defining_a"}
+	    DW_AT_name "partial_unit_defining_a"
 	} {
 	    char_type1_label: base_type {
-		{name "signed char"}
-		{encoding @DW_ATE_signed}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name "signed char"
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    }
 
 	    struct_a_label: structure_type {
-		{name struct_a}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name struct_a
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    } {
 		member {
-		    {name xyz}
-		    {type :$char_type1_label}
-		    {data_member_location 0 DW_FORM_sdata}
+		    DW_AT_name xyz
+		    DW_AT_type :$char_type1_label
+		    DW_AT_data_member_location 0 DW_FORM_sdata
 		}
 	    }
 
 	    DW_TAG_variable {
-		{name variable_a}
-		{type :$struct_a_label}
-		{external 1 flag}
-		{linkage_name variable_a}
+		DW_AT_name variable_a
+		DW_AT_type :$struct_a_label
+		DW_AT_external 1 flag
+		DW_AT_linkage_name variable_a
 	    }
 	}
     }
 
     cu {} {
 	partial_unit_defining_b: partial_unit {
-	    {name "partial_unit_defining_b"}
+	    DW_AT_name "partial_unit_defining_b"
 	} {
 	    char_type2_label: base_type {
-		{name "signed char"}
-		{encoding @DW_ATE_signed}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name "signed char"
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    }
 
 	    struct_b_label: structure_type {
-		{name struct_b}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name struct_b
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    } {
 		member {
-		    {name xyz}
-		    {type :$char_type2_label}
-		    {data_member_location 0 DW_FORM_sdata}
+		    DW_AT_name xyz
+		    DW_AT_type :$char_type2_label
+		    DW_AT_data_member_location 0 DW_FORM_sdata
 		}
 	    }
 
 	    DW_TAG_variable {
-		{name variable_b}
-		{type :$struct_b_label}
-		{external 1 flag}
-		{linkage_name variable_b}
+		DW_AT_name variable_b
+		DW_AT_type :$struct_b_label
+		DW_AT_external 1 flag
+		DW_AT_linkage_name variable_b
 	    }
 	}
     }
@@ -173,11 +173,11 @@
     # so keep this separate.
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name main}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name main
 	} {
 	    subprogram {
-		{MACRO_AT_func { main }}
+		MACRO_AT_func { main }
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/opt-out-not-implptr.exp b/gdb/testsuite/gdb.dwarf2/opt-out-not-implptr.exp
index e5334f2..8c60d03 100644
--- a/gdb/testsuite/gdb.dwarf2/opt-out-not-implptr.exp
+++ b/gdb/testsuite/gdb.dwarf2/opt-out-not-implptr.exp
@@ -30,57 +30,57 @@
 	    declare_labels i64_type i32_type i64_array i32_array
 
 	    i64_type: base_type {
-		{name "int64_t"}
-		{encoding @DW_ATE_signed}
-		{byte_size 8 DW_FORM_sdata}
+		DW_AT_name "int64_t"
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 8 DW_FORM_sdata
 	    }
 
 	    i32_type: base_type {
-		{name "int32_t"}
-		{encoding @DW_ATE_signed}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name "int32_t"
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    }
 
 	    i64_array: DW_TAG_array_type {
-		{DW_AT_name array_type}
-		{DW_AT_type :$i64_type}
+		DW_AT_name array_type
+		DW_AT_type :$i64_type
 	    } {
 		DW_TAG_subrange_type {
-		    {DW_AT_type        :$i64_type}
-		    {DW_AT_lower_bound 0 DW_FORM_data1}
-		    {DW_AT_upper_bound 3 DW_FORM_data1}
+		    DW_AT_type        :$i64_type
+		    DW_AT_lower_bound 0 DW_FORM_data1
+		    DW_AT_upper_bound 3 DW_FORM_data1
 		}
 	    }
 
 	    i32_array: DW_TAG_array_type {
-		{DW_AT_name array_type}
-		{DW_AT_type :$i32_type}
+		DW_AT_name array_type
+		DW_AT_type :$i32_type
 	    } {
 		DW_TAG_subrange_type {
-		    {DW_AT_type        :$i32_type}
-		    {DW_AT_lower_bound 0 DW_FORM_data1}
-		    {DW_AT_upper_bound 3 DW_FORM_data1}
+		    DW_AT_type        :$i32_type
+		    DW_AT_lower_bound 0 DW_FORM_data1
+		    DW_AT_upper_bound 3 DW_FORM_data1
 		}
 	    }
 
 	    DW_TAG_variable {
-		{name i64_noptr}
-		{type :$i64_array}
-		{location {
+		DW_AT_name i64_noptr
+		DW_AT_type :$i64_array
+		DW_AT_location [subst {
 		    DW_OP_constu $::c64
 		    DW_OP_stack_value
 		    DW_OP_piece 8
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    }
 
 	    DW_TAG_variable {
-		{name i32_noptr}
-		{type :$i32_array}
-		{location {
+		DW_AT_name i32_noptr
+		DW_AT_type :$i32_array
+		DW_AT_location [subst {
 		    DW_OP_constu $::c32
 		    DW_OP_stack_value
 		    DW_OP_piece 4
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/rnglists-multiple-cus.exp b/gdb/testsuite/gdb.dwarf2/rnglists-multiple-cus.exp
index 0545b35..d6cb4c1 100644
--- a/gdb/testsuite/gdb.dwarf2/rnglists-multiple-cus.exp
+++ b/gdb/testsuite/gdb.dwarf2/rnglists-multiple-cus.exp
@@ -49,14 +49,14 @@
 	    is_64 $is_64
 	} {
 	    DW_TAG_compile_unit {
-		{DW_AT_ranges 1 DW_FORM_rnglistx}
-		{DW_AT_rnglists_base cu_table DW_FORM_sec_offset}
+		DW_AT_ranges 1 DW_FORM_rnglistx
+		DW_AT_rnglists_base cu_table DW_FORM_sec_offset
 	    } {
 		# This tests a DW_AT_ranges attribute of form DW_FORM_rnglistx on a
 		# function, which was buggy at some point.
 		DW_TAG_subprogram {
-		    {DW_AT_name "foo"}
-		    {DW_AT_ranges 2 DW_FORM_rnglistx}
+		    DW_AT_name "foo"
+		    DW_AT_ranges 2 DW_FORM_rnglistx
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/rnglists-sec-offset.exp b/gdb/testsuite/gdb.dwarf2/rnglists-sec-offset.exp
index 7c65dcd..5b12ae4 100644
--- a/gdb/testsuite/gdb.dwarf2/rnglists-sec-offset.exp
+++ b/gdb/testsuite/gdb.dwarf2/rnglists-sec-offset.exp
@@ -43,11 +43,11 @@
 	    is_64 $is_64
 	} {
 	    DW_TAG_compile_unit {
-		{DW_AT_ranges $cu1_range_list DW_FORM_sec_offset}
+		DW_AT_ranges $cu1_range_list DW_FORM_sec_offset
 	    } {
 		DW_TAG_subprogram {
-		    {DW_AT_name "foo"}
-		    {DW_AT_ranges $foo_range_list DW_FORM_sec_offset}
+		    DW_AT_name "foo"
+		    DW_AT_ranges $foo_range_list DW_FORM_sec_offset
 		}
 	    }
 	}
@@ -61,12 +61,12 @@
 	    is_64 $is_64
 	} {
 	    DW_TAG_compile_unit {
-		{DW_AT_ranges $cu2_range_list DW_FORM_sec_offset}
-		{DW_AT_rnglists_base cu2_table DW_FORM_sec_offset}
+		DW_AT_ranges $cu2_range_list DW_FORM_sec_offset
+		DW_AT_rnglists_base cu2_table DW_FORM_sec_offset
 	    } {
 		DW_TAG_subprogram {
-		    {DW_AT_name "bar"}
-		    {DW_AT_ranges $bar_range_list DW_FORM_sec_offset}
+		    DW_AT_name "bar"
+		    DW_AT_ranges $bar_range_list DW_FORM_sec_offset
 		}
 	    }
 	}
@@ -79,11 +79,11 @@
 	    is_64 $is_64
 	} {
 	    DW_TAG_compile_unit {
-		{DW_AT_ranges $cu3_range_list DW_FORM_sec_offset}
+		DW_AT_ranges $cu3_range_list DW_FORM_sec_offset
 	    } {
 		DW_TAG_subprogram {
-		    {DW_AT_name "baz"}
-		    {DW_AT_ranges $baz_range_list DW_FORM_sec_offset}
+		    DW_AT_name "baz"
+		    DW_AT_ranges $baz_range_list DW_FORM_sec_offset
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/rust-enum.exp b/gdb/testsuite/gdb.dwarf2/rust-enum.exp
index 89d4a16..87e710e 100644
--- a/gdb/testsuite/gdb.dwarf2/rust-enum.exp
+++ b/gdb/testsuite/gdb.dwarf2/rust-enum.exp
@@ -30,64 +30,64 @@
 
     cu { addr_size 4 } {
 	compile_unit {
-	    {name file1.txt}
-	    {language @DW_LANG_Rust}
+	    DW_AT_name file1.txt
+	    DW_AT_language @DW_LANG_Rust
 	} {
 	    uinteger_label: DW_TAG_base_type {
-		{DW_AT_byte_size 1 DW_FORM_sdata}
-		{DW_AT_encoding	 @DW_ATE_unsigned}
-		{DW_AT_name	 {unsigned integer}}
+		DW_AT_byte_size 1 DW_FORM_sdata
+		DW_AT_encoding	 @DW_ATE_unsigned
+		DW_AT_name	 {unsigned integer}
 	    }
 
 	    one_label: structure_type {
-		{name One}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name One
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    } {
 		member {
-		    {name __0}
-		    {type :$uinteger_label}
-		    {data_member_location 0 data1}
+		    DW_AT_name __0
+		    DW_AT_type :$uinteger_label
+		    DW_AT_data_member_location 0 data1
 		}
 	    }
 
 	    two_label: structure_type {
-		{name Two}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name Two
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    } {
 		member {
-		    {name __0}
-		    {type :$uinteger_label}
-		    {data_member_location 0 data1}
+		    DW_AT_name __0
+		    DW_AT_type :$uinteger_label
+		    DW_AT_data_member_location 0 data1
 		}
 	    }
 
 	    simple_label: structure_type {
-		{name Simple}
-		{byte_size 2 DW_FORM_sdata}
+		DW_AT_name Simple
+		DW_AT_byte_size 2 DW_FORM_sdata
 	    } {
 		variant_part {
-		    {discr :$discr_1_label DW_FORM_ref4}
+		    DW_AT_discr :$discr_1_label DW_FORM_ref4
 		} {
 		    discr_1_label: member {
-			{type :$uinteger_label}
-			{data_member_location 0 data1}
-			{artificial 1 DW_FORM_flag_present}
+			DW_AT_type :$uinteger_label
+			DW_AT_data_member_location 0 data1
+			DW_AT_artificial 1 DW_FORM_flag_present
 		    }
 
 		    variant {
-			{discr_value 65 udata}
+			DW_AT_discr_value 65 udata
 		    } {
 			member {
-			    {type :$one_label}
-			    {data_member_location 1 data1}
+			    DW_AT_type :$one_label
+			    DW_AT_data_member_location 1 data1
 			}
 		    }
 
 		    variant {
 		    } {
 			member {
-			    {type :$two_label}
-			    {data_member_location 1 data1}
+			    DW_AT_type :$two_label
+			    DW_AT_data_member_location 1 data1
 			}
 		    }
 		}
@@ -96,14 +96,14 @@
 	    # In PR rust/31005, a constant Rust enum value could not
 	    # be correctly resolved.
 	    DW_TAG_variable {
-		{name constant_variable}
-		{const_value 0x4141 udata}
-		{type :$simple_label}
+		DW_AT_name constant_variable
+		DW_AT_const_value 0x4141 udata
+		DW_AT_type :$simple_label
 	    }
 	    DW_TAG_variable {
-		{name constant_variable2}
-		{const_value "AA" DW_FORM_block1}
-		{type :$simple_label}
+		DW_AT_name constant_variable2
+		DW_AT_const_value "AA" DW_FORM_block1
+		DW_AT_type :$simple_label
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/self-spec.exp b/gdb/testsuite/gdb.dwarf2/self-spec.exp
index 2136623..3d6c853 100644
--- a/gdb/testsuite/gdb.dwarf2/self-spec.exp
+++ b/gdb/testsuite/gdb.dwarf2/self-spec.exp
@@ -26,12 +26,14 @@
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
     cu {} {
-	compile_unit {{language @DW_LANG_C_plus_plus}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C_plus_plus
+	} {
 	    # Check handling of self-referencing DIE.
 	    declare_labels c1
 	    c1: class_type {
-		{name class1}
-		{specification :$c1}
+		DW_AT_name class1
+		DW_AT_specification :$c1
 	    }
 
 	    # Check handling of self-referencing child DIE.  Regression test
@@ -39,11 +41,11 @@
 	    declare_labels f1 abstract_f1 f1_l
 	    abstract_f1: subprogram {}
 	    f1: subprogram {
-		{MACRO_AT_func {main}}
-		{abstract_origin :$abstract_f1}
+		MACRO_AT_func {main}
+		DW_AT_abstract_origin :$abstract_f1
 	    } {
 		f1_l: label {
-		    {abstract_origin :$f1_l}
+		    DW_AT_abstract_origin :$f1_l
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/short-build-id.exp b/gdb/testsuite/gdb.dwarf2/short-build-id.exp
index 51c6cef..439b2b2 100644
--- a/gdb/testsuite/gdb.dwarf2/short-build-id.exp
+++ b/gdb/testsuite/gdb.dwarf2/short-build-id.exp
@@ -50,17 +50,19 @@
 	build_id $buildid
 
 	cu { label cu_start } {
-	    compile_unit {{language @DW_LANG_C}} {
+	    compile_unit {
+		DW_AT_language @DW_LANG_C
+	    } {
 		int_label2: base_type {
-		    {name int}
-		    {byte_size 4 sdata}
-		    {encoding @DW_ATE_signed}
+		    DW_AT_name int
+		    DW_AT_byte_size 4 sdata
+		    DW_AT_encoding @DW_ATE_signed
 		}
 
 		constant {
-		    {name the_int}
-		    {type :$int_label2}
-		    {const_value 99 data1}
+		    DW_AT_name the_int
+		    DW_AT_type :$int_label2
+		    DW_AT_const_value 99 data1
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/shortpiece.exp b/gdb/testsuite/gdb.dwarf2/shortpiece.exp
index c9bf490..64d5b55 100644
--- a/gdb/testsuite/gdb.dwarf2/shortpiece.exp
+++ b/gdb/testsuite/gdb.dwarf2/shortpiece.exp
@@ -30,90 +30,90 @@
 	    declare_labels int_label ushort_label struct_label struct_label_2
 
 	    int_label: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_udata}
-		{DW_AT_encoding @DW_ATE_unsigned}
-		{DW_AT_name "myint"}
+		DW_AT_byte_size 4 DW_FORM_udata
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_name "myint"
 	    }
 	    ushort_label: DW_TAG_base_type {
-		{DW_AT_byte_size 2 DW_FORM_udata}
-		{DW_AT_encoding @DW_ATE_unsigned}
-		{DW_AT_name "myushort"}
+		DW_AT_byte_size 2 DW_FORM_udata
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_name "myushort"
 	    }
 
 	    struct_label: DW_TAG_structure_type {
-		{DW_AT_name "S"}
-		{DW_AT_byte_size 8 DW_FORM_udata}
+		DW_AT_name "S"
+		DW_AT_byte_size 8 DW_FORM_udata
 	    } {
 		DW_TAG_member {
-		    {DW_AT_name "a"}
-		    {DW_AT_type :${int_label}}
-		    {DW_AT_data_member_location 0 DW_FORM_udata}
+		    DW_AT_name "a"
+		    DW_AT_type :${int_label}
+		    DW_AT_data_member_location 0 DW_FORM_udata
 		}
 
 		DW_TAG_member {
-		    {DW_AT_name "b"}
-		    {DW_AT_type :${ushort_label}}
-		    {DW_AT_data_member_location 4 DW_FORM_udata}
+		    DW_AT_name "b"
+		    DW_AT_type :${ushort_label}
+		    DW_AT_data_member_location 4 DW_FORM_udata
 		}
 	    }
 
 	    struct_label_2: DW_TAG_structure_type {
-		{DW_AT_name "S_2"}
-		{DW_AT_byte_size 6 DW_FORM_udata}
+		DW_AT_name "S_2"
+		DW_AT_byte_size 6 DW_FORM_udata
 	    } {
 		DW_TAG_member {
-		    {DW_AT_name "a"}
-		    {DW_AT_type :${int_label}}
-		    {DW_AT_data_member_location 0 DW_FORM_udata}
+		    DW_AT_name "a"
+		    DW_AT_type :${int_label}
+		    DW_AT_data_member_location 0 DW_FORM_udata
 		}
 
 		DW_TAG_member {
-		    {DW_AT_name "b"}
-		    {DW_AT_type :${ushort_label}}
-		    {DW_AT_data_member_location 4 DW_FORM_udata}
+		    DW_AT_name "b"
+		    DW_AT_type :${ushort_label}
+		    DW_AT_data_member_location 4 DW_FORM_udata
 		}
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "s1"}
-		{DW_AT_type :${struct_label}}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {
+		DW_AT_name "s1"
+		DW_AT_type :${struct_label}
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location {
 		    DW_OP_constu 1
 		    DW_OP_stack_value
 		    DW_OP_piece 4
 		    DW_OP_constu 0
 		    DW_OP_stack_value
 		    DW_OP_piece 2
-		} SPECIAL_expr}
+		} SPECIAL_expr
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "s2"}
-		{DW_AT_type :${struct_label}}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {
+		DW_AT_name "s2"
+		DW_AT_type :${struct_label}
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location {
 		    DW_OP_constu 1
 		    DW_OP_stack_value
 		    DW_OP_piece 4
 		    DW_OP_constu 0
 		    DW_OP_stack_value
 		    DW_OP_piece 8
-		} SPECIAL_expr}
+		} SPECIAL_expr
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "s3"}
-		{DW_AT_type :${struct_label_2}}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {
+		DW_AT_name "s3"
+		DW_AT_type :${struct_label_2}
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location {
 		    DW_OP_constu 0
 		    DW_OP_stack_value
 		    DW_OP_piece 4
 		    DW_OP_constu 1
 		    DW_OP_stack_value
 		    DW_OP_piece 2
-		} SPECIAL_expr}
+		} SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/static-optimized-out.exp b/gdb/testsuite/gdb.dwarf2/static-optimized-out.exp
index 6be8283..8b139fa 100644
--- a/gdb/testsuite/gdb.dwarf2/static-optimized-out.exp
+++ b/gdb/testsuite/gdb.dwarf2/static-optimized-out.exp
@@ -28,21 +28,19 @@
 Dwarf::assemble $asm_file {
     cu {} {
 	compile_unit {
-	    {
-		language @DW_LANG_C
-	    }
+	    DW_AT_language @DW_LANG_C
 	} {
 	    declare_labels integer_label
 
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      integer}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      integer
 	    }
 
 	    DW_TAG_variable {
-		{name var}
-		{type :$integer_label}
+		DW_AT_name var
+		DW_AT_type :$integer_label
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/staticvirtual.exp b/gdb/testsuite/gdb.dwarf2/staticvirtual.exp
index e04c500..9fa1a2b 100644
--- a/gdb/testsuite/gdb.dwarf2/staticvirtual.exp
+++ b/gdb/testsuite/gdb.dwarf2/staticvirtual.exp
@@ -25,18 +25,20 @@
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
     cu {} {
-	compile_unit {{language @DW_LANG_C_plus_plus}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C_plus_plus
+	} {
 	    structure_type {
-		{name S}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name S
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    } {
 		subprogram {
-		    {low_pc 0x1000 addr}
-		    {high_pc 0x2000 addr}
-		    {name ~S}
-		    {external 1 flag}
-		    {virtuality @DW_VIRTUALITY_virtual}
-		    {vtable_elem_location {const1u 1} SPECIAL_expr}
+		    DW_AT_low_pc 0x1000 addr
+		    DW_AT_high_pc 0x2000 addr
+		    DW_AT_name ~S
+		    DW_AT_external 1 flag
+		    DW_AT_virtuality @DW_VIRTUALITY_virtual
+		    DW_AT_vtable_elem_location {const1u 1} SPECIAL_expr
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/struct-decl.exp b/gdb/testsuite/gdb.dwarf2/struct-decl.exp
index e389216..bc857a7 100644
--- a/gdb/testsuite/gdb.dwarf2/struct-decl.exp
+++ b/gdb/testsuite/gdb.dwarf2/struct-decl.exp
@@ -30,9 +30,9 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
-	    {DW_AT_name     $srcfile}
-	    {DW_AT_comp_dir /tmp}
+	    DW_AT_language @DW_LANG_C_plus_plus
+	    DW_AT_name     $srcfile
+	    DW_AT_comp_dir /tmp
 
 	} {
 	    declare_labels origin
@@ -42,14 +42,14 @@
 	    # which meant that if a method referred back to them via a
 	    # specification, it would get the wrong name.
 	    DW_TAG_structure_type {
-		{DW_AT_byte_size 8 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name the_type}
-		{DW_AT_declaration 1 DW_FORM_flag_present}
+		DW_AT_byte_size 8 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name the_type
+		DW_AT_declaration 1 DW_FORM_flag_present
 	    } {
 		origin: DW_TAG_subprogram {
-		    {DW_AT_name "method"}
-		    {DW_AT_declaration 1 DW_FORM_flag_present}
+		    DW_AT_name "method"
+		    DW_AT_declaration 1 DW_FORM_flag_present
 		}
 	    }
 
@@ -57,8 +57,8 @@
 	    # range that is valid in the program, so we use the main
 	    # function's range.
 	    DW_TAG_subprogram {
-		{DW_AT_specification :$origin}
-		{MACRO_AT_range main}
+		DW_AT_specification :$origin
+		MACRO_AT_range main
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/struct-with-sig-2.exp b/gdb/testsuite/gdb.dwarf2/struct-with-sig-2.exp
index 02a492d..a527263 100644
--- a/gdb/testsuite/gdb.dwarf2/struct-with-sig-2.exp
+++ b/gdb/testsuite/gdb.dwarf2/struct-with-sig-2.exp
@@ -34,18 +34,18 @@
 	    declare_labels int_type
 
 	    the_type_i: structure_type {
-		{name s}
-		{byte_size 4 sdata}
+		DW_AT_name s
+		DW_AT_byte_size 4 sdata
 	    } {
 		member {
-		    {name i}
-		    {type :$int_type}
+		    DW_AT_name i
+		    DW_AT_type :$int_type
 		}
 	    }
 	    int_type: base_type {
-		{name int}
-		{encoding @DW_ATE_signed}
-		{byte_size 4 sdata}
+		DW_AT_name int
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 4 sdata
 	    }
 	}
     }
@@ -55,18 +55,18 @@
 	    declare_labels int_type
 
 	    the_type_j: structure_type {
-		{name s}
-		{byte_size 4 sdata}
+		DW_AT_name s
+		DW_AT_byte_size 4 sdata
 	    } {
 		member {
-		    {name j}
-		    {type :$int_type}
+		    DW_AT_name j
+		    DW_AT_type :$int_type
 		}
 	    }
 	    int_type: base_type {
-		{name int}
-		{encoding @DW_ATE_signed}
-		{byte_size 4 sdata}
+		DW_AT_name int
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 4 sdata
 	    }
 	}
     }
@@ -88,32 +88,32 @@
 
     cu {} {
 	compile_unit {
-	    {DW_AT_language @DW_LANG_C}
-	    {DW_AT_name main.c}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name main.c
 	} {
 	    structure_type {
-		{name s}
-		{signature 0x0000000000000001 ref_sig8}
-		{declaration 1 flag}
+		DW_AT_name s
+		DW_AT_signature 0x0000000000000001 ref_sig8
+		DW_AT_declaration 1 flag
 	    }
 	    DW_TAG_subprogram {
-		{MACRO_AT_func {main}}
+		MACRO_AT_func {main}
 	    }
 	}
     }
 
     cu {} {
 	compile_unit {
-	    {DW_AT_language @DW_LANG_C}
-	    {DW_AT_name     foo.c}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name     foo.c
 	} {
 	    structure_type {
-		{name s}
-		{signature 0x0000000000000002 ref_sig8}
-		{declaration 1 flag}
+		DW_AT_name s
+		DW_AT_signature 0x0000000000000002 ref_sig8
+		DW_AT_declaration 1 flag
 	    }
 	    DW_TAG_subprogram {
-		{MACRO_AT_func {foo}}
+		MACRO_AT_func {foo}
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/struct-with-sig.exp b/gdb/testsuite/gdb.dwarf2/struct-with-sig.exp
index 9861327..7e15999 100644
--- a/gdb/testsuite/gdb.dwarf2/struct-with-sig.exp
+++ b/gdb/testsuite/gdb.dwarf2/struct-with-sig.exp
@@ -24,32 +24,32 @@
 Dwarf::assemble $asm_file {
     cu {} {
 	compile_unit {
-	    {DW_AT_language @DW_LANG_C}
-	    {DW_AT_name main.c}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name main.c
 	} {
 	    structure_type {
-		{name s}
-		{signature 0x0000000000000001 ref_sig8}
-		{declaration 1 flag}
+		DW_AT_name s
+		DW_AT_signature 0x0000000000000001 ref_sig8
+		DW_AT_declaration 1 flag
 	    }
 	    DW_TAG_subprogram {
-		{MACRO_AT_func {main}}
+		MACRO_AT_func {main}
 	    }
 	}
     }
 
     cu {} {
 	compile_unit {
-	    {DW_AT_language @DW_LANG_C}
-	    {DW_AT_name     foo.c}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name     foo.c
 	} {
 	    structure_type {
-		{name s}
-		{signature 0x0000000000000002 ref_sig8}
-		{declaration 1 flag}
+		DW_AT_name s
+		DW_AT_signature 0x0000000000000002 ref_sig8
+		DW_AT_declaration 1 flag
 	    }
 	    DW_TAG_subprogram {
-		{MACRO_AT_func {foo}}
+		MACRO_AT_func {foo}
 	    }
 	}
     }
@@ -59,18 +59,18 @@
 	    declare_labels int_type
 
 	    the_type_i: structure_type {
-		{name s}
-		{byte_size 4 sdata}
+		DW_AT_name s
+		DW_AT_byte_size 4 sdata
 	    } {
 		member {
-		    {name i}
-		    {type :$int_type}
+		    DW_AT_name i
+		    DW_AT_type :$int_type
 		}
 	    }
 	    int_type: base_type {
-		{name int}
-		{encoding @DW_ATE_signed}
-		{byte_size 4 sdata}
+		DW_AT_name int
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 4 sdata
 	    }
 	}
     }
@@ -80,18 +80,18 @@
 	    declare_labels int_type
 
 	    the_type_j: structure_type {
-		{name s}
-		{byte_size 4 sdata}
+		DW_AT_name s
+		DW_AT_byte_size 4 sdata
 	    } {
 		member {
-		    {name j}
-		    {type :$int_type}
+		    DW_AT_name j
+		    DW_AT_type :$int_type
 		}
 	    }
 	    int_type: base_type {
-		{name int}
-		{encoding @DW_ATE_signed}
-		{byte_size 4 sdata}
+		DW_AT_name int
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 4 sdata
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/subrange-enum.exp b/gdb/testsuite/gdb.dwarf2/subrange-enum.exp
index 9df5774..339cb49 100644
--- a/gdb/testsuite/gdb.dwarf2/subrange-enum.exp
+++ b/gdb/testsuite/gdb.dwarf2/subrange-enum.exp
@@ -26,43 +26,45 @@
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
     cu {} {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    declare_labels integer_label enum_label subrange_label
 
-            integer_label: DW_TAG_base_type {
-                {DW_AT_byte_size 4 DW_FORM_sdata}
-                {DW_AT_encoding  @DW_ATE_signed}
-                {DW_AT_name      integer}
-            }
+	    integer_label: DW_TAG_base_type {
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	integer
+	    }
 
 	    enum_label: DW_TAG_enumeration_type {
-		{DW_AT_name E}
-		{DW_AT_type :$integer_label}
+		DW_AT_name E
+		DW_AT_type :$integer_label
 	    } {
 		DW_TAG_enumerator {
-		    {DW_AT_name ONE}
-		    {DW_AT_const_value 1 DW_FORM_sdata}
+		    DW_AT_name ONE
+		    DW_AT_const_value 1 DW_FORM_sdata
 		}
 		DW_TAG_enumerator {
-		    {DW_AT_name TWO}
-		    {DW_AT_const_value 2 DW_FORM_sdata}
+		    DW_AT_name TWO
+		    DW_AT_const_value 2 DW_FORM_sdata
 		}
 		DW_TAG_enumerator {
-		    {DW_AT_name THREE}
-		    {DW_AT_const_value 3 DW_FORM_sdata}
+		    DW_AT_name THREE
+		    DW_AT_const_value 3 DW_FORM_sdata
 		}
 	    }
 
 	    subrange_label: DW_TAG_subrange_type {
-		{lower_bound 1 DW_FORM_sdata}
-		{upper_bound 2 DW_FORM_sdata}
-		{type :$enum_label}
+		DW_AT_lower_bound 1 DW_FORM_sdata
+		DW_AT_upper_bound 2 DW_FORM_sdata
+		DW_AT_type :$enum_label
 	    }
 
 	    DW_TAG_variable {
-		{name rangeval}
-		{type :$subrange_label}
-		{const_value 2 DW_FORM_udata}
+		DW_AT_name rangeval
+		DW_AT_type :$subrange_label
+		DW_AT_const_value 2 DW_FORM_udata
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/subrange.exp b/gdb/testsuite/gdb.dwarf2/subrange.exp
index 2cc7472..3e0326f 100644
--- a/gdb/testsuite/gdb.dwarf2/subrange.exp
+++ b/gdb/testsuite/gdb.dwarf2/subrange.exp
@@ -25,35 +25,37 @@
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
     cu {} {
- 	compile_unit {{language @DW_LANG_Pascal83}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_Pascal83
+	} {
 	    declare_labels byte_label typedef_label array_label
 
 	    # A subrange's underlying type that is a typedef.
 	    byte_label: base_type {
-		{name byte}
-		{encoding @DW_ATE_unsigned}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name byte
+		DW_AT_encoding @DW_ATE_unsigned
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    }
 
 	    typedef_label: typedef {
-		{name byte_typedef}
-		{type :$byte_label}
+		DW_AT_name byte_typedef
+		DW_AT_type :$byte_label
 	    }
 
 	    array_label: array_type {
-		{type :$byte_label}
+		DW_AT_type :$byte_label
 	    } {
 		subrange_type {
-		    {lower_bound 0 DW_FORM_sdata}
-		    {upper_bound 191 DW_FORM_sdata}
-		    {byte_stride 2 DW_FORM_sdata}
-		    {type :$typedef_label}
+		    DW_AT_lower_bound 0 DW_FORM_sdata
+		    DW_AT_upper_bound 191 DW_FORM_sdata
+		    DW_AT_byte_stride 2 DW_FORM_sdata
+		    DW_AT_type :$typedef_label
 		}
 	    }
 
 	    typedef {
-		{name TByteArray}
-		{type :$array_label}
+		DW_AT_name TByteArray
+		DW_AT_type :$array_label
 	    }
 
 	    # This subrange's underlying type is signed, but the bounds are
@@ -61,21 +63,21 @@
 	    declare_labels signed_byte_label subrange_with_buggy_negative_bounds_label
 
 	    signed_byte_label: base_type {
-		{name signed_byte}
-		{encoding @DW_ATE_signed}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name signed_byte
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    }
 
 	    # The bounds mean -16 to -12.
 	    subrange_with_buggy_negative_bounds_label: subrange_type {
-		{lower_bound 0xf0 DW_FORM_udata}
-		{upper_bound 0xf4 DW_FORM_udata}
-		{type :$signed_byte_label}
+		DW_AT_lower_bound 0xf0 DW_FORM_udata
+		DW_AT_upper_bound 0xf4 DW_FORM_udata
+		DW_AT_type :$signed_byte_label
 	    }
 
 	    DW_TAG_variable {
-		{name subrange_with_buggy_negative_bounds_variable}
-		{type :$subrange_with_buggy_negative_bounds_label}
+		DW_AT_name subrange_with_buggy_negative_bounds_variable
+		DW_AT_type :$subrange_with_buggy_negative_bounds_label
 	    }
 
 	    # This subrange's base type is 16-bytes long (although the bounds fit in
@@ -83,19 +85,19 @@
 	    declare_labels a_16_byte_integer_label a_16_byte_subrange_label
 
 	    a_16_byte_integer_label: base_type {
-		{byte_size 16 udata}
-		{encoding @DW_ATE_signed}
+		DW_AT_byte_size 16 udata
+		DW_AT_encoding @DW_ATE_signed
 	    }
 
 	    a_16_byte_subrange_label: subrange_type {
-		{lower_bound -9223372036854775808 DW_FORM_sdata}
-		{upper_bound 9223372036854775807 DW_FORM_sdata}
-		{type :$a_16_byte_integer_label}
+		DW_AT_lower_bound -9223372036854775808 DW_FORM_sdata
+		DW_AT_upper_bound 9223372036854775807 DW_FORM_sdata
+		DW_AT_type :$a_16_byte_integer_label
 	    }
 
 	    DW_TAG_variable {
-		{name a_16_byte_subrange_variable}
-		{type :$a_16_byte_subrange_label}
+		DW_AT_name a_16_byte_subrange_variable
+		DW_AT_type :$a_16_byte_subrange_label
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/symbol_needs_eval_fail.exp b/gdb/testsuite/gdb.dwarf2/symbol_needs_eval_fail.exp
index e69d9b4..6efd458 100644
--- a/gdb/testsuite/gdb.dwarf2/symbol_needs_eval_fail.exp
+++ b/gdb/testsuite/gdb.dwarf2/symbol_needs_eval_fail.exp
@@ -63,23 +63,23 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_name symbol_needs_eval.c}
-	    {DW_AT_comp_dir /tmp}
+	    DW_AT_name symbol_needs_eval.c
+	    DW_AT_comp_dir /tmp
 	} {
 	    declare_labels int_type_label
 
 	    # define int type
 	    int_type_label: DW_TAG_base_type {
-		{DW_AT_name "int"}
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_byte_size $int_size DW_FORM_sdata}
+		DW_AT_name "int"
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size $int_size DW_FORM_sdata
 	    }
 
 	    # define artificial variable a
 	    DW_TAG_variable {
-		{DW_AT_name a}
-		{DW_AT_type :$int_type_label}
-		{DW_AT_location {
+		DW_AT_name a
+		DW_AT_type :$int_type_label
+		DW_AT_location [subst {
 		    DW_OP_addr $exec_mask_var
 		    DW_OP_deref_size $int_size
 
@@ -91,8 +91,8 @@
 		    DW_OP_skip 3
 		    DW_OP_bregx $dwarf_regnum 0
 		    DW_OP_stack_value
-		} SPECIAL_expr}
-		{external 1 flag}
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/symbol_needs_eval_timeout.exp b/gdb/testsuite/gdb.dwarf2/symbol_needs_eval_timeout.exp
index a6773d5..61a40eb 100644
--- a/gdb/testsuite/gdb.dwarf2/symbol_needs_eval_timeout.exp
+++ b/gdb/testsuite/gdb.dwarf2/symbol_needs_eval_timeout.exp
@@ -63,40 +63,40 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_name symbol_needs_eval.c}
-	    {DW_AT_comp_dir /tmp}
+	    DW_AT_name symbol_needs_eval.c
+	    DW_AT_comp_dir /tmp
 	} {
 	    declare_labels int_type_label
 
 	    # define int type
 	    int_type_label: DW_TAG_base_type {
-		{DW_AT_name "int"}
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_byte_size $int_size DW_FORM_sdata}
+		DW_AT_name "int"
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size $int_size DW_FORM_sdata
 	    }
 
 	    # add info for variable exec_mask
 	    DW_TAG_variable {
-		{DW_AT_name exec_mask}
-		{DW_AT_type :$int_type_label}
-		{DW_AT_location {
+		DW_AT_name exec_mask
+		DW_AT_type :$int_type_label
+		DW_AT_location [subst {
 		    DW_OP_addr $exec_mask_var
-		} SPECIAL_expr}
-		{external 1 flag}
+		}] SPECIAL_expr
+		DW_AT_external 1 flag
 	    }
 
 	    # add info for subprogram main
 	    DW_TAG_subprogram {
-		{MACRO_AT_func { main }}
-		{DW_AT_frame_base {
+		MACRO_AT_func { main }
+		DW_AT_frame_base [subst {
 		    DW_OP_regx $dwarf_regnum
-		} SPECIAL_expr}
+		}] SPECIAL_expr
 	    } {
 		# define artificial variable a
 		DW_TAG_variable {
-		    {DW_AT_name a}
-		    {DW_AT_type :$int_type_label}
-		    {DW_AT_location {
+		    DW_AT_name a
+		    DW_AT_type :$int_type_label
+		    DW_AT_location [subst {
 			DW_OP_lit1
 			DW_OP_addr $exec_mask_var
 			DW_OP_deref_size $int_size
@@ -112,8 +112,8 @@
 			# conditional jump to DW_OP_drop
 			DW_OP_bra -9
 			DW_OP_stack_value
-		    } SPECIAL_expr}
-		    {external 1 flag}
+		    }] SPECIAL_expr
+		    DW_AT_external 1 flag
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/symtab-producer.exp b/gdb/testsuite/gdb.dwarf2/symtab-producer.exp
index 1734a77..2826ba7 100644
--- a/gdb/testsuite/gdb.dwarf2/symtab-producer.exp
+++ b/gdb/testsuite/gdb.dwarf2/symtab-producer.exp
@@ -26,46 +26,46 @@
 Dwarf::assemble $asm_file {
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_producer "ACME Compiler Company"}
-	    {DW_AT_language @DW_LANG_C}
-	    {DW_AT_name symtab-producer-dw.c}
-	    {DW_AT_comp_dir /tmp}
+	    DW_AT_producer "ACME Compiler Company"
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name symtab-producer-dw.c
+	    DW_AT_comp_dir /tmp
         } {
 	    declare_labels integer_label
 
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_name integer}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name integer
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name with_producer}
-		{DW_AT_type :$integer_label}
-		{DW_AT_external 1 flag}
-		{DW_AT_const_value 42 DW_FORM_sdata}
+		DW_AT_name with_producer
+		DW_AT_type :$integer_label
+		DW_AT_external 1 flag
+		DW_AT_const_value 42 DW_FORM_sdata
 	    }
 	}
     }
     cu {} {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C}
-	    {DW_AT_name symtab-producer2-dw.c}
-	    {DW_AT_comp_dir /tmp}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name symtab-producer2-dw.c
+	    DW_AT_comp_dir /tmp
         } {
 	    declare_labels integer_label
 
 	    integer_label: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding @DW_ATE_signed}
-		{DW_AT_name integer}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_name integer
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name without_producer}
-		{DW_AT_type :$integer_label}
-		{DW_AT_external 1 flag}
-		{DW_AT_const_value 43 DW_FORM_sdata}
+		DW_AT_name without_producer
+		DW_AT_type :$integer_label
+		DW_AT_external 1 flag
+		DW_AT_const_value 43 DW_FORM_sdata
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/template-specification-full-name.exp b/gdb/testsuite/gdb.dwarf2/template-specification-full-name.exp
index 60b49a5..52d9b32 100644
--- a/gdb/testsuite/gdb.dwarf2/template-specification-full-name.exp
+++ b/gdb/testsuite/gdb.dwarf2/template-specification-full-name.exp
@@ -35,19 +35,19 @@
 
     cu { label cu_start } {
 	DW_TAG_compile_unit {
-	    {DW_AT_language @DW_LANG_C_plus_plus}
+	    DW_AT_language @DW_LANG_C_plus_plus
         } {
 	    declare_labels templated_subprogram int
 
 	    int: DW_TAG_base_type {
-		{DW_AT_name "int"}
-		{DW_AT_byte_size 4 DW_FORM_data1}
-		{DW_AT_encoding @DW_ATE_signed}
+		DW_AT_name "int"
+		DW_AT_byte_size 4 DW_FORM_data1
+		DW_AT_encoding @DW_ATE_signed
 	    }
 
 	    # The templated subprogram.
 	    templated_subprogram: DW_TAG_subprogram {
-		{DW_AT_name "apply"}
+		DW_AT_name "apply"
 	    }
 
 	    # The template specialization.
@@ -55,12 +55,12 @@
 	    # The low and high PC are phony: we just need an address range that
 	    # is valid in the program, so we use the main function's range.
 	    DW_TAG_subprogram {
-		{DW_AT_specification :$templated_subprogram}
-		{MACRO_AT_range main}
+		DW_AT_specification :$templated_subprogram
+		MACRO_AT_range main
 	    } {
 		DW_TAG_template_type_param {
-		  {DW_AT_name "T"}
-		  {DW_AT_type :$int DW_FORM_ref4}
+		  DW_AT_name "T"
+		  DW_AT_type :$int DW_FORM_ref4
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/typedef-void-finish.exp b/gdb/testsuite/gdb.dwarf2/typedef-void-finish.exp
index e59286d..a96c1ac 100644
--- a/gdb/testsuite/gdb.dwarf2/typedef-void-finish.exp
+++ b/gdb/testsuite/gdb.dwarf2/typedef-void-finish.exp
@@ -31,29 +31,29 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	        {DW_AT_producer "GNU C 8.1"}
-                {DW_AT_language @DW_LANG_C}
-                {DW_AT_name     $srcfile}
-                {DW_AT_comp_dir /tmp}
-        } {
+	    DW_AT_producer "GNU C 8.1"
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name     $srcfile
+	    DW_AT_comp_dir /tmp
+	} {
 	    declare_labels main_type void_typedef
 
 	    main_type: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
 	    }
 
 	    void_typedef: DW_TAG_typedef {
-		{name foo}
+		DW_AT_name foo
 	    }
 
-            DW_TAG_subprogram {
-                {MACRO_AT_func {func}}
-                {type :$void_typedef}
+	    DW_TAG_subprogram {
+		MACRO_AT_func {func}
+		DW_AT_type :$void_typedef
 	    }
-            DW_TAG_subprogram {
-                {MACRO_AT_func {main}}
-                {type :$main_type}
+	    DW_TAG_subprogram {
+		MACRO_AT_func {main}
+		DW_AT_type :$main_type
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/utf-rust.exp b/gdb/testsuite/gdb.dwarf2/utf-rust.exp
index 3380f8d..9ab9bf5 100644
--- a/gdb/testsuite/gdb.dwarf2/utf-rust.exp
+++ b/gdb/testsuite/gdb.dwarf2/utf-rust.exp
@@ -34,19 +34,19 @@
     # both 32- and 64-bit machines.
     cu { addr_size 4 } {
 	compile_unit {
-	    {name file1.txt}
-	    {language @DW_LANG_Rust}
+	    DW_AT_name file1.txt
+	    DW_AT_language @DW_LANG_Rust
 	} {
-            char_label: DW_TAG_base_type {
-                {DW_AT_byte_size 4 DW_FORM_sdata}
-                {DW_AT_encoding @DW_ATE_UTF}
-                {DW_AT_name char}
-            }
+	    char_label: DW_TAG_base_type {
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding @DW_ATE_UTF
+		DW_AT_name char
+	    }
 
 	    DW_TAG_variable {
-		{name cvalue}
-		{type :$char_label}
-		{const_value 97 DW_FORM_udata}
+		DW_AT_name cvalue
+		DW_AT_type :$char_label
+		DW_AT_const_value 97 DW_FORM_udata
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.dwarf2/var-access.exp b/gdb/testsuite/gdb.dwarf2/var-access.exp
index 347d276..6889cc2 100644
--- a/gdb/testsuite/gdb.dwarf2/var-access.exp
+++ b/gdb/testsuite/gdb.dwarf2/var-access.exp
@@ -54,8 +54,8 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-		{DW_AT_name $srcfile}
-		{DW_AT_comp_dir /tmp}
+	    DW_AT_name $srcfile
+	    DW_AT_comp_dir /tmp
 	} {
 	    declare_labels char_type_label
 	    declare_labels int_type_label short_type_label
@@ -64,131 +64,131 @@
 
 	    # char
 	    char_type_label: base_type {
-		{name "char"}
-		{encoding @DW_ATE_unsigned_char}
-		{byte_size 1 DW_FORM_sdata}
+		DW_AT_name "char"
+		DW_AT_encoding @DW_ATE_unsigned_char
+		DW_AT_byte_size 1 DW_FORM_sdata
 	    }
 
 	    # int
 	    int_type_label: base_type {
-		{name "int"}
-		{encoding @DW_ATE_signed}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name "int"
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    }
 
 	    # char [8]
 	    array_a8_label: array_type {
-		{type :$char_type_label}
+		DW_AT_type :$char_type_label
 	    } {
 		subrange_type {
-		    {type :$int_type_label}
-		    {upper_bound 7 DW_FORM_udata}
+		    DW_AT_type :$int_type_label
+		    DW_AT_upper_bound 7 DW_FORM_udata
 		}
 	    }
 
 	    # struct s { char a, b, c, d; };
 	    struct_s_label: structure_type {
-		{name "s"}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name "s"
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    } {
 		member {
-		    {name "a"}
-		    {type :$char_type_label}
-		    {data_member_location 0 DW_FORM_udata}
+		    DW_AT_name "a"
+		    DW_AT_type :$char_type_label
+		    DW_AT_data_member_location 0 DW_FORM_udata
 		}
 		member {
-		    {name "b"}
-		    {type :$char_type_label}
-		    {data_member_location 1 DW_FORM_udata}
+		    DW_AT_name "b"
+		    DW_AT_type :$char_type_label
+		    DW_AT_data_member_location 1 DW_FORM_udata
 		}
 		member {
-		    {name "c"}
-		    {type :$char_type_label}
-		    {data_member_location 2 DW_FORM_udata}
+		    DW_AT_name "c"
+		    DW_AT_type :$char_type_label
+		    DW_AT_data_member_location 2 DW_FORM_udata
 		}
 		member {
-		    {name "d"}
-		    {type :$char_type_label}
-		    {data_member_location 3 DW_FORM_udata}
+		    DW_AT_name "d"
+		    DW_AT_type :$char_type_label
+		    DW_AT_data_member_location 3 DW_FORM_udata
 		}
 	    }
 
 	    # struct t { int u, x:9, y:13, z:10; };
 	    struct_t_label: structure_type {
-		{name "t"}
-		{byte_size 8 DW_FORM_sdata}
+		DW_AT_name "t"
+		DW_AT_byte_size 8 DW_FORM_sdata
 	    } {
 		member {
-		    {name "u"}
-		    {type :$int_type_label}
+		    DW_AT_name "u"
+		    DW_AT_type :$int_type_label
 		}
 		member {
-		    {name "x"}
-		    {type :$int_type_label}
-		    {data_member_location 4 DW_FORM_udata}
-		    {bit_size 9 DW_FORM_udata}
+		    DW_AT_name "x"
+		    DW_AT_type :$int_type_label
+		    DW_AT_data_member_location 4 DW_FORM_udata
+		    DW_AT_bit_size 9 DW_FORM_udata
 		}
 		member {
-		    {name "y"}
-		    {type :$int_type_label}
-		    {data_bit_offset 41 DW_FORM_udata}
-		    {bit_size 13 DW_FORM_udata}
+		    DW_AT_name "y"
+		    DW_AT_type :$int_type_label
+		    DW_AT_data_bit_offset 41 DW_FORM_udata
+		    DW_AT_bit_size 13 DW_FORM_udata
 		}
 		member {
-		    {name "z"}
-		    {type :$int_type_label}
-		    {data_bit_offset 54 DW_FORM_udata}
-		    {bit_size 10 DW_FORM_udata}
+		    DW_AT_name "z"
+		    DW_AT_type :$int_type_label
+		    DW_AT_data_bit_offset 54 DW_FORM_udata
+		    DW_AT_bit_size 10 DW_FORM_udata
 		}
 	    }
 
 	    # struct st { struct s s; struct t t; };
 	    struct_st_label: structure_type {
-		{name "st"}
-		{byte_size 12 DW_FORM_udata}
+		DW_AT_name "st"
+		DW_AT_byte_size 12 DW_FORM_udata
 	    } {
 		member {
-		    {name "s"}
-		    {type :$struct_s_label}
+		    DW_AT_name "s"
+		    DW_AT_type :$struct_s_label
 		}
 		member {
-		    {name "t"}
-		    {type :$struct_t_label}
-		    {data_member_location 4 DW_FORM_udata}
+		    DW_AT_name "t"
+		    DW_AT_type :$struct_t_label
+		    DW_AT_data_member_location 4 DW_FORM_udata
 		}
 	    }
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func { main }}
-		{DW_AT_external 1 flag}
+		MACRO_AT_func { main }
+		DW_AT_external 1 flag
 	    } {
 		# Simple memory location.
 		DW_TAG_variable {
-		    {name "a"}
-		    {type :$array_a8_label}
-		    {location {
+		    DW_AT_name "a"
+		    DW_AT_type :$array_a8_label
+		    DW_AT_location [subst {
 			addr $buf_var
-		    } SPECIAL_expr}
+		    }] SPECIAL_expr
 		}
 		# Memory pieces: two bytes from &buf[2], and two bytes
 		# from &buf[0].
 		DW_TAG_variable {
-		    {name "s1"}
-		    {type :$struct_s_label}
-		    {location {
+		    DW_AT_name "s1"
+		    DW_AT_type :$struct_s_label
+		    DW_AT_location [subst {
 			addr $buf_var
 			plus_uconst 2
 			piece 2
 			addr $buf_var
 			piece 2
-		    } SPECIAL_expr}
+		    }] SPECIAL_expr
 		}
 		# Register- and memory pieces: one byte each from r0,
 		# &buf[4], r1, and &buf[5].
 		DW_TAG_variable {
-		    {name "s2"}
-		    {type :$struct_s_label}
-		    {location {
+		    DW_AT_name "s2"
+		    DW_AT_type :$struct_s_label
+		    DW_AT_location [subst {
 			regx [lindex $dwarf_regnum 0]
 			piece 1
 			addr "$buf_var + 4"
@@ -197,41 +197,41 @@
 			piece 1
 			addr "$buf_var + 5"
 			piece 1
-		    } SPECIAL_expr}
+		    }] SPECIAL_expr
 		}
 		# Memory pieces for bitfield access: 8 bytes optimized
 		# out, 3 bytes from &buf[3], and 1 byte from &buf[1].
 		DW_TAG_variable {
-		    {name "st1"}
-		    {type :$struct_st_label}
-		    {location {
+		    DW_AT_name "st1"
+		    DW_AT_type :$struct_st_label
+		    DW_AT_location [subst {
 			piece 8
 			addr "$buf_var + 3"
 			piece 3
 			addr "$buf_var + 1"
 			piece 1
-		    } SPECIAL_expr}
+		    }] SPECIAL_expr
 		}
 		# Register pieces for bitfield access: 4 bytes optimized
 		# out, 3 bytes from r0, and 1 byte from r1.
 		DW_TAG_variable {
-		    {name "t2"}
-		    {type :$struct_t_label}
-		    {location {
+		    DW_AT_name "t2"
+		    DW_AT_type :$struct_t_label
+		    DW_AT_location [subst {
 			piece 4
 			regx [lindex $dwarf_regnum 0]
 			piece 3
 			regx [lindex $dwarf_regnum 1]
 			piece 1
-		    } SPECIAL_expr}
+		    }] SPECIAL_expr
 		}
 		# One piece per bitfield, using piece offsets: 32 bits of
 		# an implicit value, 9 bits of a stack value, 13 bits of
 		# r0, and 10 bits of buf.
 		DW_TAG_variable {
-		    {name "t3"}
-		    {type :$struct_t_label}
-		    {location {
+		    DW_AT_name "t3"
+		    DW_AT_type :$struct_t_label
+		    DW_AT_location [subst {
 			implicit_value 0x12 0x34 0x56 0x78 0x9a
 			bit_piece 32 4
 			const2s -280
@@ -241,7 +241,7 @@
 			bit_piece 13 14
 			addr $buf_var
 			bit_piece 10 42
-		    } SPECIAL_expr}
+		    }] SPECIAL_expr
 		}
 	    }
 	}
diff --git a/gdb/testsuite/gdb.dwarf2/variant.exp b/gdb/testsuite/gdb.dwarf2/variant.exp
index ce504f2..93abcbd 100644
--- a/gdb/testsuite/gdb.dwarf2/variant.exp
+++ b/gdb/testsuite/gdb.dwarf2/variant.exp
@@ -36,125 +36,125 @@
     # both 32- and 64-bit machines.
     cu { addr_size 4 } {
 	compile_unit {
-	    {name file1.txt}
-	    {language @DW_LANG_Rust}
+	    DW_AT_name file1.txt
+	    DW_AT_language @DW_LANG_Rust
 	} {
-            uinteger_label: DW_TAG_base_type {
-                {DW_AT_byte_size 4 DW_FORM_sdata}
-                {DW_AT_encoding  @DW_ATE_unsigned}
-                {DW_AT_name      {unsigned integer}}
-            }
+	    uinteger_label: DW_TAG_base_type {
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_unsigned
+		DW_AT_name	{unsigned integer}
+	    }
 
-            int8_label: DW_TAG_base_type {
-                {DW_AT_byte_size 1 DW_FORM_sdata}
-                {DW_AT_encoding  @DW_ATE_signed}
-                {DW_AT_name      i8}
-            }
+	    int8_label: DW_TAG_base_type {
+		DW_AT_byte_size 1 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	i8
+	    }
 
 	    float_label: base_type {
-		{name float}
-		{encoding @DW_ATE_float}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name float
+		DW_AT_encoding @DW_ATE_float
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    }
 
 	    one_label: structure_type {
-		{name One}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name One
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    } {
 		member {
-		    {name __0}
-		    {type :$uinteger_label}
-		    {data_member_location 0 data1}
+		    DW_AT_name __0
+		    DW_AT_type :$uinteger_label
+		    DW_AT_data_member_location 0 data1
 		}
 	    }
 
 	    two_label: structure_type {
-		{name Two}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name Two
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    } {
 		member {
-		    {name __0}
-		    {type :$float_label}
-		    {data_member_location 0 data1}
+		    DW_AT_name __0
+		    DW_AT_type :$float_label
+		    DW_AT_data_member_location 0 data1
 		}
 	    }
 
 	    structure_type {
-		{name Simple}
-		{byte_size 8 DW_FORM_sdata}
+		DW_AT_name Simple
+		DW_AT_byte_size 8 DW_FORM_sdata
 	    } {
 		variant_part {
-		    {discr :$discr_1_label DW_FORM_ref4}
+		    DW_AT_discr :$discr_1_label DW_FORM_ref4
 		} {
 		    discr_1_label: member {
-			{type :$uinteger_label}
-			{data_member_location 0 data1}
-			{artificial 1 DW_FORM_flag_present}
+			DW_AT_type :$uinteger_label
+			DW_AT_data_member_location 0 data1
+			DW_AT_artificial 1 DW_FORM_flag_present
 		    }
 
 		    variant {
-			{discr_value 23 udata}
+			DW_AT_discr_value 23 udata
 		    } {
 			member {
-			    {type :$one_label}
-			    {data_member_location 4 data1}
+			    DW_AT_type :$one_label
+			    DW_AT_data_member_location 4 data1
 			}
 		    }
 
 		    variant {
-			{discr_value 1 udata}
+			DW_AT_discr_value 1 udata
 		    } {
 			member {
-			    {type :$two_label}
-			    {data_member_location 4 data1}
+			    DW_AT_type :$two_label
+			    DW_AT_data_member_location 4 data1
 			}
 		    }
 		}
 	    }
 
 	    structure_type {
-		{name Defaulted}
-		{byte_size 8 DW_FORM_sdata}
+		DW_AT_name Defaulted
+		DW_AT_byte_size 8 DW_FORM_sdata
 	    } {
 		variant_part {
-		    {discr :$discr_2_label DW_FORM_ref4}
+		    DW_AT_discr :$discr_2_label DW_FORM_ref4
 		} {
 		    discr_2_label: member {
-			{type :$uinteger_label}
-			{data_member_location 0 data1}
-			{artificial 1 DW_FORM_flag_present}
+			DW_AT_type :$uinteger_label
+			DW_AT_data_member_location 0 data1
+			DW_AT_artificial 1 DW_FORM_flag_present
 		    }
 
 		    variant {
 		    } {
 			member {
-			    {type :$one_label}
-			    {data_member_location 4 data1}
+			    DW_AT_type :$one_label
+			    DW_AT_data_member_location 4 data1
 			}
 		    }
 
 		    variant {
-			{discr_value 1 udata}
+			DW_AT_discr_value 1 udata
 		    } {
 			member {
-			    {type :$two_label}
-			    {data_member_location 4 data1}
+			    DW_AT_type :$two_label
+			    DW_AT_data_member_location 4 data1
 			}
 		    }
 		}
 	    }
 
 	    structure_type {
-		{name Univariant}
-		{byte_size 8 DW_FORM_sdata}
+		DW_AT_name Univariant
+		DW_AT_byte_size 8 DW_FORM_sdata
 	    } {
 		variant_part {
 		} {
 		    variant {
 		    } {
 			member {
-			    {type :$one_label}
-			    {data_member_location 4 data1}
+			    DW_AT_type :$one_label
+			    DW_AT_data_member_location 4 data1
 			}
 		    }
 		}
@@ -163,24 +163,24 @@
 	    # Rust won't emit a negative discriminant like this, but
 	    # we want to test the code path anyway.
 	    structure_type {
-		{name Negative}
-		{byte_size 8 DW_FORM_sdata}
+		DW_AT_name Negative
+		DW_AT_byte_size 8 DW_FORM_sdata
 	    } {
 		variant_part {
-		    {discr :$discr_3_label DW_FORM_ref4}
+		    DW_AT_discr :$discr_3_label DW_FORM_ref4
 		} {
 		    discr_3_label: member {
-			{type :$int8_label}
-			{data_member_location 0 data1}
-			{artificial 1 DW_FORM_flag_present}
+			DW_AT_type :$int8_label
+			DW_AT_data_member_location 0 data1
+			DW_AT_artificial 1 DW_FORM_flag_present
 		    }
 
 		    variant {
-			{discr_value -1 sdata}
+			DW_AT_discr_value -1 sdata
 		    } {
 			member {
-			    {type :$one_label}
-			    {data_member_location 4 data1}
+			    DW_AT_type :$one_label
+			    DW_AT_data_member_location 4 data1
 			}
 		    }
 
@@ -190,8 +190,8 @@
 		    variant {
 		    } {
 			member {
-			    {type :$two_label}
-			    {data_member_location 4 data1}
+			    DW_AT_type :$two_label
+			    DW_AT_data_member_location 4 data1
 			}
 		    }
 		}
diff --git a/gdb/testsuite/gdb.dwarf2/varval.exp b/gdb/testsuite/gdb.dwarf2/varval.exp
index 6846ecb..8f132bb 100644
--- a/gdb/testsuite/gdb.dwarf2/varval.exp
+++ b/gdb/testsuite/gdb.dwarf2/varval.exp
@@ -50,7 +50,7 @@
 
 	cu {} {
 	    DW_TAG_compile_unit {
-		{DW_AT_language @DW_LANG_C_plus_plus}
+		DW_AT_language @DW_LANG_C_plus_plus
 	    } {
 		declare_labels int_label ptr_label struct_label var_a_label \
 		    var_b_label var_c_label var_p_label var_bad_label \
@@ -61,179 +61,193 @@
 
 
 		int_label: DW_TAG_base_type {
-		    {DW_AT_byte_size ${int_size} DW_FORM_udata}
-		    {DW_AT_encoding @DW_ATE_signed}
-		    {DW_AT_name "int"}
+		    DW_AT_byte_size ${int_size} DW_FORM_udata
+		    DW_AT_encoding @DW_ATE_signed
+		    DW_AT_name "int"
 		}
 
 		ptr_label: DW_TAG_pointer_type {
-		    {DW_AT_type :$int_label}
+		    DW_AT_type :$int_label
 		}
 
 		var_a_label: DW_TAG_variable {
-		    {DW_AT_name "var_a"}
-		    {DW_AT_type :${int_label}}
-		    {DW_AT_external 1 DW_FORM_flag}
-		    {DW_AT_location {DW_OP_addr [gdb_target_symbol "var_a"]} SPECIAL_expr}
+		    DW_AT_name "var_a"
+		    DW_AT_type :${int_label}
+		    DW_AT_external 1 DW_FORM_flag
+		    DW_AT_location [subst {
+			DW_OP_addr [gdb_target_symbol "var_a"]
+		    }] SPECIAL_expr
 		}
 
 		var_a_abstract_label: DW_TAG_variable {
-		    {DW_AT_type :${int_label}}
-		    {DW_AT_external 1 DW_FORM_flag}
+		    DW_AT_type :${int_label}
+		    DW_AT_external 1 DW_FORM_flag
 		}
 
 		var_b_label: DW_TAG_variable {
-		    {DW_AT_name "var_b"}
-		    {DW_AT_type :${int_label}}
-		    {DW_AT_external 1 DW_FORM_flag}
-		    {DW_AT_location {DW_OP_addr [gdb_target_symbol "var_b"]} SPECIAL_expr}
+		    DW_AT_name "var_b"
+		    DW_AT_type :${int_label}
+		    DW_AT_external 1 DW_FORM_flag
+		    DW_AT_location [subst {
+			DW_OP_addr [gdb_target_symbol "var_b"]
+		    }] SPECIAL_expr
 		}
 
 		var_c_label: DW_TAG_variable {
-		    {DW_AT_name "var_c"}
-		    {DW_AT_type :${int_label}}
-		    {DW_AT_external 1 DW_FORM_flag}
-		    {DW_AT_const_value 53 DW_FORM_sdata}
+		    DW_AT_name "var_c"
+		    DW_AT_type :${int_label}
+		    DW_AT_external 1 DW_FORM_flag
+		    DW_AT_const_value 53 DW_FORM_sdata
 		}
 
 		var_p_label: DW_TAG_variable {
-		    {DW_AT_name "var_p"}
-		    {DW_AT_type :${ptr_label}}
-		    {DW_AT_external 1 DW_FORM_flag}
-		    {DW_AT_location {DW_OP_addr [gdb_target_symbol "var_p"]} SPECIAL_expr}
+		    DW_AT_name "var_p"
+		    DW_AT_type :${ptr_label}
+		    DW_AT_external 1 DW_FORM_flag
+		    DW_AT_location [subst {
+			DW_OP_addr [gdb_target_symbol "var_p"]
+		    }] SPECIAL_expr
 		}
 
 		if { $bad } {
 		    var_bad_label: DW_TAG_variable {
-			{DW_AT_name "var_bad"}
-			{DW_AT_type :${int_label}}
-			{DW_AT_external 1 DW_FORM_flag}
+			DW_AT_name "var_bad"
+			DW_AT_type :${int_label}
+			DW_AT_external 1 DW_FORM_flag
 		    }
 		}
 
 		struct_label: DW_TAG_structure_type {
-		    {DW_AT_byte_size 8*$int_size DW_FORM_sdata}
+		    DW_AT_byte_size 8*$int_size DW_FORM_sdata
 		} {
 		    DW_TAG_member {
-			{DW_AT_name "a"}
-			{DW_AT_type :$int_label}
-			{DW_AT_data_member_location 0*$int_size DW_FORM_udata}
+			DW_AT_name "a"
+			DW_AT_type :$int_label
+			DW_AT_data_member_location 0*$int_size DW_FORM_udata
 		    }
 		    DW_TAG_member {
-			{DW_AT_name "b"}
-			{DW_AT_type :$int_label}
-			{DW_AT_data_member_location 1*$int_size DW_FORM_udata}
+			DW_AT_name "b"
+			DW_AT_type :$int_label
+			DW_AT_data_member_location 1*$int_size DW_FORM_udata
 		    }
 		    DW_TAG_member {
-			{DW_AT_name "c"}
-			{DW_AT_type :$int_label}
-			{DW_AT_data_member_location 2*$int_size DW_FORM_udata}
+			DW_AT_name "c"
+			DW_AT_type :$int_label
+			DW_AT_data_member_location 2*$int_size DW_FORM_udata
 		    }
 		    DW_TAG_member {
-			{DW_AT_name "d"}
-			{DW_AT_type :$int_label}
-			{DW_AT_data_member_location 3*$int_size DW_FORM_udata}
+			DW_AT_name "d"
+			DW_AT_type :$int_label
+			DW_AT_data_member_location 3*$int_size DW_FORM_udata
 		    }
 		    DW_TAG_member {
-			{DW_AT_name "e"}
-			{DW_AT_type :$int_label}
-			{DW_AT_data_member_location 4*$int_size DW_FORM_udata}
+			DW_AT_name "e"
+			DW_AT_type :$int_label
+			DW_AT_data_member_location 4*$int_size DW_FORM_udata
 		    }
 		    DW_TAG_member {
-			{DW_AT_name "f"}
-			{DW_AT_type :$int_label}
-			{DW_AT_data_member_location 5*$int_size DW_FORM_udata}
+			DW_AT_name "f"
+			DW_AT_type :$int_label
+			DW_AT_data_member_location 5*$int_size DW_FORM_udata
 		    }
 		    DW_TAG_member {
-			{DW_AT_name "g"}
-			{DW_AT_type :$int_label}
-			{DW_AT_data_member_location 6*$int_size DW_FORM_udata}
+			DW_AT_name "g"
+			DW_AT_type :$int_label
+			DW_AT_data_member_location 6*$int_size DW_FORM_udata
 		    }
 		    DW_TAG_member {
-			{DW_AT_name "h"}
-			{DW_AT_type :$int_label}
-			{DW_AT_data_member_location 7*$int_size DW_FORM_udata}
+			DW_AT_name "h"
+			DW_AT_type :$int_label
+			DW_AT_data_member_location 7*$int_size DW_FORM_udata
 		    }
 		}
 
 		var_s_label: DW_TAG_variable {
-		    {DW_AT_name "var_s"}
-		    {DW_AT_type :${struct_label}}
-		    {DW_AT_external 1 DW_FORM_flag}
-		    {DW_AT_location {DW_OP_addr [gdb_target_symbol "var_s"]} SPECIAL_expr}
+		    DW_AT_name "var_s"
+		    DW_AT_type :${struct_label}
+		    DW_AT_external 1 DW_FORM_flag
+		    DW_AT_location [subst {
+			DW_OP_addr [gdb_target_symbol "var_s"]
+		    }] SPECIAL_expr
 		}
 
 		var_untyped_label: DW_TAG_variable {
-		    {DW_AT_name "var_untyped"}
-		    {DW_AT_external 1 DW_FORM_flag}
-		    {DW_AT_location {DW_OP_addr [gdb_target_symbol "var_b"]} SPECIAL_expr}
+		    DW_AT_name "var_untyped"
+		    DW_AT_external 1 DW_FORM_flag
+		    DW_AT_location [subst {
+			DW_OP_addr [gdb_target_symbol "var_b"]
+		    }] SPECIAL_expr
 		}
 
 		int_array_label: DW_TAG_array_type {
-		    {DW_AT_type :${int_label}}
+		    DW_AT_type :${int_label}
 		} {
 		    DW_TAG_subrange_type {}
 		}
 		varval3_decl_label: DW_TAG_variable {
-		    {DW_AT_name "varval3"}
-		    {DW_AT_type :${int_array_label}}
-		    {DW_AT_external 1 DW_FORM_flag}
-		    {DW_AT_declaration 1 DW_FORM_flag}
+		    DW_AT_name "varval3"
+		    DW_AT_type :${int_array_label}
+		    DW_AT_external 1 DW_FORM_flag
+		    DW_AT_declaration 1 DW_FORM_flag
 		}
 		int_array_of_1_label: DW_TAG_array_type {
-		    {DW_AT_type :${int_label}}
+		    DW_AT_type :${int_label}
 		} {
 		    DW_TAG_subrange_type {
-			{DW_AT_type        :$int_label}
-			{DW_AT_upper_bound 0 DW_FORM_data1}
+			DW_AT_type        :$int_label
+			DW_AT_upper_bound 0 DW_FORM_data1
 		    }
 		}
 		varval3_def_label: DW_TAG_variable {
-		    {DW_AT_name "varval3"}
-		    {DW_AT_external 1 DW_FORM_flag}
-		    {DW_AT_type :${int_array_of_1_label}}
-		    {DW_AT_location {DW_OP_addr [gdb_target_symbol "var_a"]} SPECIAL_expr}
+		    DW_AT_name "varval3"
+		    DW_AT_external 1 DW_FORM_flag
+		    DW_AT_type :${int_array_of_1_label}
+		    DW_AT_location [subst {
+			DW_OP_addr [gdb_target_symbol "var_a"]
+		    }] SPECIAL_expr
 		}
 
 		DW_TAG_subprogram {
-		    {MACRO_AT_func { "main" }}
-		    {DW_AT_type :${int_label}}
-		    {DW_AT_external 1 DW_FORM_flag}
+		    MACRO_AT_func { "main" }
+		    DW_AT_type :${int_label}
+		    DW_AT_external 1 DW_FORM_flag
 		} {
 		    varval_label: DW_TAG_variable {
-			{DW_AT_name "varval"}
-			{DW_AT_type :${int_label}}
-			{DW_AT_location {
+			DW_AT_name "varval"
+			DW_AT_type :${int_label}
+			DW_AT_location [subst {
 			    DW_OP_GNU_variable_value ${var_a_label}
 			    DW_OP_const1s 0
 			    DW_OP_or
 			    DW_OP_stack_value
-			} SPECIAL_expr}
+			}] SPECIAL_expr
 		    }
 		    varval2_label: DW_TAG_variable {
-			{DW_AT_name "varval2"}
-			{DW_AT_type :${int_label}}
-			{DW_AT_location {
+			DW_AT_name "varval2"
+			DW_AT_type :${int_label}
+			DW_AT_location [subst {
 			    DW_OP_GNU_variable_value ${var_a_abstract_label}
 			    DW_OP_stack_value
-			} SPECIAL_expr}
+			}] SPECIAL_expr
 		    }
 		    var_a_concrete_label: DW_TAG_variable {
-			{DW_AT_abstract_origin :${var_a_abstract_label}}
-			{DW_AT_location {DW_OP_addr [gdb_target_symbol "var_a"]} SPECIAL_expr}
+			DW_AT_abstract_origin :${var_a_abstract_label}
+			DW_AT_location [subst {
+			    DW_OP_addr [gdb_target_symbol "var_a"]
+			}] SPECIAL_expr
 		    }
 		    DW_TAG_variable {
-			{DW_AT_name "constval"}
-			{DW_AT_type :${int_label}}
-			{DW_AT_location {
+			DW_AT_name "constval"
+			DW_AT_type :${int_label}
+			DW_AT_location [subst {
 			    DW_OP_GNU_variable_value ${var_c_label}
 			    DW_OP_stack_value
-			} SPECIAL_expr}
+			}] SPECIAL_expr
 		    }
 		    DW_TAG_variable {
-			{DW_AT_name "mixedval"}
-			{DW_AT_type :${int_label}}
-			{DW_AT_location {
+			DW_AT_name "mixedval"
+			DW_AT_type :${int_label}
+			DW_AT_location [subst {
 			    DW_OP_GNU_variable_value ${var_c_label}
 			    DW_OP_GNU_variable_value ${var_b_label}
 			    DW_OP_div
@@ -244,55 +258,55 @@
 			    DW_OP_GNU_variable_value ${varval_label}
 			    DW_OP_minus
 			    DW_OP_stack_value
-			} SPECIAL_expr}
+			}] SPECIAL_expr
 		    }
 		    DW_TAG_variable {
-			{DW_AT_name "pointerval"}
-			{DW_AT_type :${ptr_label}}
-			{DW_AT_location {
+			DW_AT_name "pointerval"
+			DW_AT_type :${ptr_label}
+			DW_AT_location [subst {
 			    DW_OP_GNU_variable_value ${var_p_label}
 			    DW_OP_stack_value
-			} SPECIAL_expr}
+			}] SPECIAL_expr
 		    }
 		    if { $bad } {
 			DW_TAG_variable {
-			    {DW_AT_name "badval"}
-			    {DW_AT_type :${int_label}}
-			    {DW_AT_location {
+			    DW_AT_name "badval"
+			    DW_AT_type :${int_label}
+			    DW_AT_location [subst {
 				DW_OP_GNU_variable_value ${var_bad_label}
 				DW_OP_stack_value
-			    } SPECIAL_expr}
+			    }] SPECIAL_expr
 			}
 		    }
 		    DW_TAG_variable {
-			{DW_AT_name "structval"}
-			{DW_AT_type :${struct_label}}
-			{DW_AT_location {
+			DW_AT_name "structval"
+			DW_AT_type :${struct_label}
+			DW_AT_location [subst {
 			    DW_OP_GNU_variable_value ${var_s_label}
 			    DW_OP_stack_value
-			} SPECIAL_expr}
+			}] SPECIAL_expr
 		    }
 		    DW_TAG_variable {
-			{DW_AT_name "untypedval"}
-			{DW_AT_location {
+			DW_AT_name "untypedval"
+			DW_AT_location [subst {
 			    DW_OP_GNU_variable_value ${var_untyped_label}
 			    DW_OP_stack_value
-			} SPECIAL_expr}
+			}] SPECIAL_expr
 		    }
 		    if { $bad } {
 			DW_TAG_variable {
-			    {DW_AT_name "bad_die_val1"}
-			    {DW_AT_location {
+			    DW_AT_name "bad_die_val1"
+			    DW_AT_location {
 				DW_OP_GNU_variable_value 0xabcdef11
 				DW_OP_stack_value
-			    } SPECIAL_expr}
+			    } SPECIAL_expr
 			}
 			DW_TAG_variable {
-			    {DW_AT_name "bad_die_val2"}
-			    {DW_AT_location {
+			    DW_AT_name "bad_die_val2"
+			    DW_AT_location [subst {
 				DW_OP_GNU_variable_value ${ptr_label}+1
 				DW_OP_stack_value
-			    } SPECIAL_expr}
+			    }] SPECIAL_expr
 			}
 		    }
 		}
diff --git a/gdb/testsuite/gdb.dwarf2/void-type.exp b/gdb/testsuite/gdb.dwarf2/void-type.exp
index 64bebe1..10f5738 100644
--- a/gdb/testsuite/gdb.dwarf2/void-type.exp
+++ b/gdb/testsuite/gdb.dwarf2/void-type.exp
@@ -38,50 +38,54 @@
 
     cu {} {
 	DW_TAG_compile_unit {
-	        {DW_AT_producer "Intel(R) C Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 14.0.5.212 Build 20150212"}
-                {DW_AT_language @DW_LANG_C}
-                {DW_AT_name     $srcfile}
-                {DW_AT_comp_dir /tmp}
-        } {
+		DW_AT_producer "Intel(R) C Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 14.0.5.212 Build 20150212"
+		DW_AT_language @DW_LANG_C
+		DW_AT_name     $srcfile
+		DW_AT_comp_dir /tmp
+	} {
 	    declare_labels int_type void_type ptr_type
 
 	    int_type: DW_TAG_base_type {
-		{DW_AT_byte_size 4 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      int}
+		DW_AT_byte_size 4 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	int
 	    }
 
 	    void_type: DW_TAG_base_type {
-		{DW_AT_byte_size 0 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      void}
+		DW_AT_byte_size 0 DW_FORM_sdata
+		DW_AT_encoding	@DW_ATE_signed
+		DW_AT_name	void
 	    }
 
 	    ptr_type: DW_TAG_pointer_type {
-		{DW_AT_type :$void_type}
+		DW_AT_type :$void_type
 	    }
 
-            DW_TAG_subprogram {
-		{MACRO_AT_func {func}}
-                {type :$void_type}
+	    DW_TAG_subprogram {
+		MACRO_AT_func {func}
+		DW_AT_type :$void_type
 	    }
-            DW_TAG_subprogram {
-		{MACRO_AT_func {main}}
-                {type :$int_type}
+	    DW_TAG_subprogram {
+		MACRO_AT_func {main}
+		DW_AT_type :$int_type
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "var_a"}
-		{DW_AT_type :$int_type}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "var_a"]} SPECIAL_expr}
+		DW_AT_name "var_a"
+		DW_AT_type :$int_type
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "var_a"]
+		}] SPECIAL_expr
 	    }
 
 	    DW_TAG_variable {
-		{DW_AT_name "var_ptr"}
-		{DW_AT_type :$ptr_type}
-		{DW_AT_external 1 DW_FORM_flag}
-		{DW_AT_location {DW_OP_addr [gdb_target_symbol "var_ptr"]} SPECIAL_expr}
+		DW_AT_name "var_ptr"
+		DW_AT_type :$ptr_type
+		DW_AT_external 1 DW_FORM_flag
+		DW_AT_location [subst {
+		    DW_OP_addr [gdb_target_symbol "var_ptr"]
+		}] SPECIAL_expr
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.python/py-linetable-empty.exp b/gdb/testsuite/gdb.python/py-linetable-empty.exp
index 1e737e1..55f4fed 100644
--- a/gdb/testsuite/gdb.python/py-linetable-empty.exp
+++ b/gdb/testsuite/gdb.python/py-linetable-empty.exp
@@ -27,11 +27,11 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name py-linetable-empty.c}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name py-linetable-empty.c
 	} {
 	    subprogram {
-			{MACRO_AT_func {main}}
+		MACRO_AT_func {main}
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.python/py-sym-artificial.exp b/gdb/testsuite/gdb.python/py-sym-artificial.exp
index e26e9d2..831ebd2 100644
--- a/gdb/testsuite/gdb.python/py-sym-artificial.exp
+++ b/gdb/testsuite/gdb.python/py-sym-artificial.exp
@@ -27,21 +27,21 @@
 Dwarf::assemble $asm_file {
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name py-sym-artificial.c}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name py-sym-artificial.c
 	} {
 	    declare_labels signed
 
 	    signed: DW_TAG_base_type {
-		{DW_AT_byte_size 1 DW_FORM_sdata}
-		{DW_AT_encoding  @DW_ATE_signed}
-		{DW_AT_name      bool}
+		DW_AT_byte_size 1 DW_FORM_sdata
+		DW_AT_encoding  @DW_ATE_signed
+		DW_AT_name      bool
 	    }
 
 	    DW_TAG_variable {
-		{name the_variable}
-		{DW_AT_type :$signed}
-		{artificial 1 DW_FORM_flag_present}
+		DW_AT_name the_variable
+		DW_AT_type :$signed
+		DW_AT_artificial 1 DW_FORM_flag_present
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.reverse/map-to-same-line.exp b/gdb/testsuite/gdb.reverse/map-to-same-line.exp
index 410394c..e31eef0 100644
--- a/gdb/testsuite/gdb.reverse/map-to-same-line.exp
+++ b/gdb/testsuite/gdb.reverse/map-to-same-line.exp
@@ -48,16 +48,16 @@
 
     cu {} {
 	compile_unit {
-	    {language @DW_LANG_C}
-	    {name map-to-same-line.c}
-	    {stmt_list $L DW_FORM_sec_offset}
-	    {low_pc 0 addr}
+	    DW_AT_language @DW_LANG_C
+	    DW_AT_name map-to-same-line.c
+	    DW_AT_stmt_list $L DW_FORM_sec_offset
+	    DW_AT_low_pc 0 addr
 	} {
 	    subprogram {
-		{external 1 flag}
-		{name main}
-		{low_pc $main_start addr}
-		{high_pc $main_len DW_FORM_data4}
+		DW_AT_external 1 flag
+		DW_AT_name main
+		DW_AT_low_pc $main_start addr
+		DW_AT_high_pc $main_len DW_FORM_data4
 	    }
 	}
     }
diff --git a/gdb/testsuite/gdb.trace/entry-values.exp b/gdb/testsuite/gdb.trace/entry-values.exp
index 161496a..1d2e8e9 100644
--- a/gdb/testsuite/gdb.trace/entry-values.exp
+++ b/gdb/testsuite/gdb.trace/entry-values.exp
@@ -90,61 +90,63 @@
     set bar_length [lindex $bar_result 1]
 
     cu {} {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    int_label: base_type {
-		{name int}
-		{encoding @DW_ATE_signed}
-		{byte_size 4 DW_FORM_sdata}
+		DW_AT_name int
+		DW_AT_encoding @DW_ATE_signed
+		DW_AT_byte_size 4 DW_FORM_sdata
 	    }
 
 	    foo_label: subprogram {
-		{decl_file 0 udata}
-		{MACRO_AT_func { foo }}
+		DW_AT_decl_file 0 udata
+		MACRO_AT_func { foo }
 	    } {
 		formal_parameter {
-		    {type :$int_label}
-		    {name i}
-		    {location {DW_OP_reg0} SPECIAL_expr}
+		    DW_AT_type :$int_label
+		    DW_AT_name i
+		    DW_AT_location {DW_OP_reg0} SPECIAL_expr
 		}
 		formal_parameter {
-		    {type :$int_label}
-		    {name j}
-		    {location {DW_OP_reg1} SPECIAL_expr}
+		    DW_AT_type :$int_label
+		    DW_AT_name j
+		    DW_AT_location {DW_OP_reg1} SPECIAL_expr
 		}
 	    }
 
 	    subprogram {
-		{name bar}
-		{decl_file 0 udata}
-		{low_pc $bar_start addr}
-		{high_pc "$bar_start + $bar_length" addr}
-		{GNU_all_call_sites 1 sdata}
+		DW_AT_name bar
+		DW_AT_decl_file 0 udata
+		DW_AT_low_pc $bar_start addr
+		DW_AT_high_pc "$bar_start + $bar_length" addr
+		DW_AT_GNU_all_call_sites 1 sdata
 	    } {
 		formal_parameter {
-		    {type :$int_label}
-		    {name i}
+		    DW_AT_type :$int_label
+		    DW_AT_name i
 		}
 
 		GNU_call_site {
-		    {low_pc "$bar_start + $returned_from_foo" addr}
-		    {abstract_origin :$foo_label}
+		    DW_AT_low_pc "$bar_start + $returned_from_foo" addr
+		    DW_AT_abstract_origin :$foo_label
 		} {
 		    # Faked entry values are reference to variables 'global1'
 		    # and 'global2' and faked locations are register 0 and
 		    # register 1.
 		    GNU_call_site_parameter {
-			{location {DW_OP_reg0} SPECIAL_expr}
-			{GNU_call_site_value {
+			DW_AT_location {DW_OP_reg0} SPECIAL_expr
+			DW_AT_GNU_call_site_value {
 			    addr global1
 			    deref_size 4
-			} SPECIAL_expr}
+			} SPECIAL_expr
 		    }
 		    GNU_call_site_parameter {
-			{location {DW_OP_reg1} SPECIAL_expr}
-			{GNU_call_site_value {
+			DW_AT_location {DW_OP_reg1} SPECIAL_expr
+			DW_AT_GNU_call_site_value {
 			    addr global2
 			    deref_size 4
-			} SPECIAL_expr}
+			} SPECIAL_expr
 		    }
 		}
 	    }
diff --git a/gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp b/gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp
index 98207f0..3adf24a 100644
--- a/gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp
+++ b/gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp
@@ -32,165 +32,167 @@
     declare_labels uchar_label struct_s_label foo_label struct_t_label bar_label
 
     cu {} {
-	compile_unit {{language @DW_LANG_C}} {
+	compile_unit {
+	    DW_AT_language @DW_LANG_C
+	} {
 	    uchar_label: DW_TAG_base_type {
-		{name "unsigned char"}
-		{byte_size 1 DW_FORM_sdata}
-		{encoding @DW_ATE_unsigned_char}
+		DW_AT_name "unsigned char"
+		DW_AT_byte_size 1 DW_FORM_sdata
+		DW_AT_encoding @DW_ATE_unsigned_char
 	    }
 
 	    struct_s_label: DW_TAG_structure_type {
-		{name s}
-		{byte_size 3 DW_FORM_sdata}
-		{decl_file 0 DW_FORM_udata}
-		{decl_line 1 DW_FORM_udata}
+		DW_AT_name s
+		DW_AT_byte_size 3 DW_FORM_sdata
+		DW_AT_decl_file 0 DW_FORM_udata
+		DW_AT_decl_line 1 DW_FORM_udata
 	    } {
 		DW_TAG_member {
-		    {name a}
-		    {type :$uchar_label}
-		    {data_member_location {
+		    DW_AT_name a
+		    DW_AT_type :$uchar_label
+		    DW_AT_data_member_location {
 			DW_OP_plus_uconst 0
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		DW_TAG_member {
-		    {name b}
-		    {type :$uchar_label}
-		    {data_member_location {
+		    DW_AT_name b
+		    DW_AT_type :$uchar_label
+		    DW_AT_data_member_location {
 			DW_OP_plus_uconst 1
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		DW_TAG_member {
-		    {name c}
-		    {type :$uchar_label}
-		    {data_member_location {
+		    DW_AT_name c
+		    DW_AT_type :$uchar_label
+		    DW_AT_data_member_location {
 			DW_OP_plus_uconst 2
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 	    }
 
 	    struct_t_label: DW_TAG_structure_type {
-		{name t}
-		{byte_size 3 DW_FORM_sdata}
-		{decl_file 0 DW_FORM_udata}
-		{decl_line 1 DW_FORM_udata}
+		DW_AT_name t
+		DW_AT_byte_size 3 DW_FORM_sdata
+		DW_AT_decl_file 0 DW_FORM_udata
+		DW_AT_decl_line 1 DW_FORM_udata
 	    } {
 		DW_TAG_member {
-		    {name a}
-		    {type :$uchar_label}
-		    {data_member_location {
+		    DW_AT_name a
+		    DW_AT_type :$uchar_label
+		    DW_AT_data_member_location {
 			DW_OP_plus_uconst 0
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		DW_TAG_member {
-		    {name b}
-		    {type :$uchar_label}
-		    {byte_size 1 DW_FORM_sdata}
-		    {bit_size 1 DW_FORM_sdata}
-		    {bit_offset 7 DW_FORM_sdata}
-		    {data_member_location {
+		    DW_AT_name b
+		    DW_AT_type :$uchar_label
+		    DW_AT_byte_size 1 DW_FORM_sdata
+		    DW_AT_bit_size 1 DW_FORM_sdata
+		    DW_AT_bit_offset 7 DW_FORM_sdata
+		    DW_AT_data_member_location {
 			DW_OP_plus_uconst 1
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		DW_TAG_member {
-		    {name c}
-		    {type :$uchar_label}
-		    {byte_size 1 DW_FORM_sdata}
-		    {bit_size 1 DW_FORM_sdata}
-		    {bit_offset 6 DW_FORM_sdata}
-		    {data_member_location {
+		    DW_AT_name c
+		    DW_AT_type :$uchar_label
+		    DW_AT_byte_size 1 DW_FORM_sdata
+		    DW_AT_bit_size 1 DW_FORM_sdata
+		    DW_AT_bit_offset 6 DW_FORM_sdata
+		    DW_AT_data_member_location {
 			DW_OP_plus_uconst 1
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		DW_TAG_member {
-		    {name d}
-		    {type :$uchar_label}
-		    {byte_size 1 DW_FORM_sdata}
-		    {bit_size 1 DW_FORM_sdata}
-		    {bit_offset 5 DW_FORM_sdata}
-		    {data_member_location {
+		    DW_AT_name d
+		    DW_AT_type :$uchar_label
+		    DW_AT_byte_size 1 DW_FORM_sdata
+		    DW_AT_bit_size 1 DW_FORM_sdata
+		    DW_AT_bit_offset 5 DW_FORM_sdata
+		    DW_AT_data_member_location {
 			DW_OP_plus_uconst 1
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		DW_TAG_member {
-		    {name e}
-		    {type :$uchar_label}
-		    {byte_size 1 DW_FORM_sdata}
-		    {bit_size 1 DW_FORM_sdata}
-		    {bit_offset 4 DW_FORM_sdata}
-		    {data_member_location {
+		    DW_AT_name e
+		    DW_AT_type :$uchar_label
+		    DW_AT_byte_size 1 DW_FORM_sdata
+		    DW_AT_bit_size 1 DW_FORM_sdata
+		    DW_AT_bit_offset 4 DW_FORM_sdata
+		    DW_AT_data_member_location {
 			DW_OP_plus_uconst 1
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		DW_TAG_member {
-		    {name f}
-		    {type :$uchar_label}
-		    {byte_size 1 DW_FORM_sdata}
-		    {bit_size 1 DW_FORM_sdata}
-		    {bit_offset 3 DW_FORM_sdata}
-		    {data_member_location {
+		    DW_AT_name f
+		    DW_AT_type :$uchar_label
+		    DW_AT_byte_size 1 DW_FORM_sdata
+		    DW_AT_bit_size 1 DW_FORM_sdata
+		    DW_AT_bit_offset 3 DW_FORM_sdata
+		    DW_AT_data_member_location {
 			DW_OP_plus_uconst 1
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		DW_TAG_member {
-		    {name g}
-		    {type :$uchar_label}
-		    {byte_size 1 DW_FORM_sdata}
-		    {bit_size 1 DW_FORM_sdata}
-		    {bit_offset 2 DW_FORM_sdata}
-		    {data_member_location {
+		    DW_AT_name g
+		    DW_AT_type :$uchar_label
+		    DW_AT_byte_size 1 DW_FORM_sdata
+		    DW_AT_bit_size 1 DW_FORM_sdata
+		    DW_AT_bit_offset 2 DW_FORM_sdata
+		    DW_AT_data_member_location {
 			DW_OP_plus_uconst 1
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		DW_TAG_member {
-		    {name h}
-		    {type :$uchar_label}
-		    {byte_size 1 DW_FORM_sdata}
-		    {bit_size 1 DW_FORM_sdata}
-		    {bit_offset 1 DW_FORM_sdata}
-		    {data_member_location {
+		    DW_AT_name h
+		    DW_AT_type :$uchar_label
+		    DW_AT_byte_size 1 DW_FORM_sdata
+		    DW_AT_bit_size 1 DW_FORM_sdata
+		    DW_AT_bit_offset 1 DW_FORM_sdata
+		    DW_AT_data_member_location {
 			DW_OP_plus_uconst 1
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		DW_TAG_member {
-		    {name i}
-		    {type :$uchar_label}
-		    {byte_size 1 DW_FORM_sdata}
-		    {bit_size 1 DW_FORM_sdata}
-		    {bit_offset 0 DW_FORM_sdata}
-		    {data_member_location {
+		    DW_AT_name i
+		    DW_AT_type :$uchar_label
+		    DW_AT_byte_size 1 DW_FORM_sdata
+		    DW_AT_bit_size 1 DW_FORM_sdata
+		    DW_AT_bit_offset 0 DW_FORM_sdata
+		    DW_AT_data_member_location {
 			DW_OP_plus_uconst 1
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		DW_TAG_member {
-		    {name j}
-		    {type :$uchar_label}
-		    {data_member_location {
+		    DW_AT_name j
+		    DW_AT_type :$uchar_label
+		    DW_AT_data_member_location {
 			DW_OP_plus_uconst 2
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 	    }
 
 	    DW_TAG_subprogram {
-		{name foo}
-		{decl_file 0 udata}
-		{low_pc foo_start_lbl addr}
-		{high_pc foo_end_lbl addr}
+		DW_AT_name foo
+		DW_AT_decl_file 0 udata
+		DW_AT_low_pc foo_start_lbl addr
+		DW_AT_high_pc foo_end_lbl addr
 	    } {
 		DW_TAG_formal_parameter {
-		    {type :$struct_s_label}
-		    {name x}
-		    {location {
+		    DW_AT_type :$struct_s_label
+		    DW_AT_name x
+		    DW_AT_location {
 			DW_OP_lit0
 			DW_OP_stack_value
 			DW_OP_piece 2
 			DW_OP_reg0
 			DW_OP_piece 1
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		DW_TAG_formal_parameter {
-		    {type :$struct_s_label}
-		    {name y}
-		    {location {
+		    DW_AT_type :$struct_s_label
+		    DW_AT_name y
+		    DW_AT_location {
 			DW_OP_lit0
 			DW_OP_stack_value
 			DW_OP_piece 1
@@ -199,32 +201,32 @@
 			DW_OP_lit0
 			DW_OP_stack_value
 			DW_OP_piece 1
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		DW_TAG_formal_parameter {
-		    {type :$struct_s_label}
-		    {name z}
-		    {location {
+		    DW_AT_type :$struct_s_label
+		    DW_AT_name z
+		    DW_AT_location {
 			DW_OP_reg0
 			DW_OP_piece 1
 			DW_OP_lit0
 			DW_OP_stack_value
 			DW_OP_piece 2
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 	    }
 
 
 	    DW_TAG_subprogram {
-		{name bar}
-		{decl_file 0 udata}
-		{low_pc bar_start_lbl addr}
-		{high_pc bar_end_lbl addr}
+		DW_AT_name bar
+		DW_AT_decl_file 0 udata
+		DW_AT_low_pc bar_start_lbl addr
+		DW_AT_high_pc bar_end_lbl addr
 	    } {
 		DW_TAG_formal_parameter {
-		    {type :$struct_t_label}
-		    {name x}
-		    {location {
+		    DW_AT_type :$struct_t_label
+		    DW_AT_name x
+		    DW_AT_location {
 			DW_OP_lit0
 			DW_OP_stack_value
 			DW_OP_piece 1
@@ -236,12 +238,12 @@
 			DW_OP_lit0
 			DW_OP_stack_value
 			DW_OP_piece 1
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		DW_TAG_formal_parameter {
-		    {type :$struct_t_label}
-		    {name y}
-		    {location {
+		    DW_AT_type :$struct_t_label
+		    DW_AT_name y
+		    DW_AT_location {
 			DW_OP_lit0
 			DW_OP_stack_value
 			DW_OP_piece 1
@@ -256,12 +258,12 @@
 			DW_OP_lit0
 			DW_OP_stack_value
 			DW_OP_piece 1
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 		DW_TAG_formal_parameter {
-		    {type :$struct_t_label}
-		    {name z}
-		    {location {
+		    DW_AT_type :$struct_t_label
+		    DW_AT_name z
+		    DW_AT_location {
 			DW_OP_lit0
 			DW_OP_stack_value
 			DW_OP_piece 1
@@ -273,7 +275,7 @@
 			DW_OP_lit0
 			DW_OP_stack_value
 			DW_OP_piece 1
-		    } SPECIAL_expr}
+		    } SPECIAL_expr
 		}
 	    }
 
diff --git a/gdb/testsuite/lib/dwarf.exp b/gdb/testsuite/lib/dwarf.exp
index c19240b..911ec88 100644
--- a/gdb/testsuite/lib/dwarf.exp
+++ b/gdb/testsuite/lib/dwarf.exp
@@ -461,16 +461,13 @@
 #
 # proc DW_TAG_mumble {{attrs {}} {children {}}} { ... }
 #
-# ATTRS is an optional list of attributes.
-# It is run through 'subst' in the caller's context before processing.
+# ATTRS holds optional attributes.  It is just Tcl code and is
+# evaluated in the caller's context.  Each attribute is a proc of the
+# form:
 #
-# Each attribute in the list has one of two forms:
-#   1. { NAME VALUE }
-#   2. { NAME VALUE FORM }
+# proc DW_AT_mumble {value {form {}}} { ... }
 #
-# In each case, NAME is the attribute's name.
-# This can either be the full name, like 'DW_AT_name', or a shortened
-# name, like 'name'.  These are fully equivalent.
+# Only the full name can be used here.
 #
 # Besides DWARF standard attributes, assembler supports 'macro' attribute
 # which will be substituted by one or more standard or macro attributes.
@@ -522,8 +519,6 @@
 
     # Constants from dwarf2.h.
     variable _constants
-    # DW_AT short names.
-    variable _AT
     # DW_FORM short names.
     variable _FORM
     # DW_OP short names.
@@ -594,7 +589,6 @@
 
     proc _process_one_constant {name value} {
 	variable _constants
-	variable _AT
 	variable _FORM
 	variable _OP
 
@@ -633,7 +627,8 @@
 	    }
 
 	    AT {
-		set _AT($name2) $name
+		proc $name {value {form {}}} \
+		    "_handle_DW_AT $name \$value \$form"
 	    }
 
 	    FORM {
@@ -917,11 +912,27 @@
 	return $name
     }
 
-    proc _handle_attribute { attr_name attr_value attr_form } {
+    # Implementation of all the DW_AT_* procs.
+    proc _handle_DW_AT {attr_name attr_value attr_form} {
 	variable _abbrev_section
 	variable _constants
 	variable _cu_version
 
+	if {$attr_form == ""} {
+	    set attr_form [_guess_form $attr_value attr_value]
+	    if { $attr_form eq "" } {
+		set attr_form [_default_form $attr_name]
+	    }
+	    if { $attr_form eq "" } {
+		error "No form for $attr_name $attr_value"
+	    }
+	} elseif { [string index $attr_value 0] == ":" } {
+	    # It is a label, get its value.
+	    _guess_form $attr_value attr_value
+	}
+
+	set attr_form [_map_name $attr_form _FORM]
+
 	_handle_DW_FORM $attr_form $attr_value
 
 	_defer_output $_abbrev_section {
@@ -942,9 +953,8 @@
 	}
     }
 
-    # Handle macro attribute MACRO_AT_range.
-
-    proc _handle_macro_at_range { attr_value } {
+    # Handle extension attribute MACRO_AT_range.
+    proc MACRO_AT_range { attr_value } {
 	variable _cu_is_fission
 
 	if {[llength $attr_value] != 1} {
@@ -961,19 +971,17 @@
 	    set form DW_FORM_GNU_addr_index
 	}
 
-	_handle_attribute DW_AT_low_pc [lindex $result 0] $form
-	_handle_attribute DW_AT_high_pc \
-	    "[lindex $result 0] + [lindex $result 1]" $form
+	DW_AT_low_pc [lindex $result 0] $form
+	DW_AT_high_pc "[lindex $result 0] + [lindex $result 1]" $form
     }
 
-    # Handle macro attribute MACRO_AT_func.
-
-    proc _handle_macro_at_func { attr_value } {
+    # Handle extension attribute MACRO_AT_func.
+    proc MACRO_AT_func { attr_value } {
 	if {[llength $attr_value] != 1} {
 	    error "usage: MACRO_AT_func { func file }"
 	}
-	_handle_attribute DW_AT_name [lindex $attr_value 0] DW_FORM_string
-	_handle_macro_at_range $attr_value
+	DW_AT_name [lindex $attr_value 0] DW_FORM_string
+	MACRO_AT_range $attr_value
     }
 
     # Return the next available abbrev number in the current CU's abbrev
@@ -1003,47 +1011,7 @@
 
 	_op .uleb128 $my_abbrev "Abbrev ($tag_name)"
 
-	foreach attr $attrs {
-	    set attr_name [_map_name [lindex $attr 0] _AT]
-
-	    # When the length of ATTR is greater than 2, the last
-	    # element of the list must be a form.  The second through
-	    # the penultimate elements are joined together and
-	    # evaluated using subst.  This allows constructs such as
-	    # [gdb_target_symbol foo] to be used.
-
-	    if {[llength $attr] > 2} {
-	        set attr_value [uplevel 2 [list subst [join [lrange $attr 1 end-1]]]]
-	    } else {
-	        set attr_value [uplevel 2 [list subst [lindex $attr 1]]]
-	    }
-
-	    if { [string equal "MACRO_AT_func" $attr_name] } {
-		_handle_macro_at_func $attr_value
-	    } elseif { [string equal "MACRO_AT_range" $attr_name] } {
-		_handle_macro_at_range $attr_value
-	    } else {
-		if {[llength $attr] > 2} {
-		    set attr_form [uplevel 2 [list subst [lindex $attr end]]]
-
-		    if { [string index $attr_value 0] == ":" } {
-			# It is a label, get its value.
-			_guess_form $attr_value attr_value
-		    }
-		} else {
-		    set attr_form [_guess_form $attr_value attr_value]
-		    if { $attr_form eq "" } {
-			set attr_form [_default_form $attr_name]
-		    }
-		    if { $attr_form eq "" } {
-			error "No form for $attr_name $attr_value"
-		    }
-		}
-		set attr_form [_map_name $attr_form _FORM]
-
-		_handle_attribute $attr_name $attr_value $attr_form
-	    }
-	}
+	uplevel 2 $attrs
 
 	_defer_output $_abbrev_section {
 	    # Terminator.