Update copyright year range in all GDB files
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.dwarf2 / implptr-64bit.exp
index 6d149002d8752ccf944a3a97386b43232cd6a058..0e312d04ac7a63eb199e28ba8d2bc80e2d0bfd74 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2011-2013 Free Software Foundation, Inc.
+# Copyright 2011-2018 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -19,21 +19,121 @@ if {![dwarf2_support]} {
     return 0  
 }
 
-standard_testfile .S
-set mainfile main.c
+standard_testfile main.c
 
 proc test { dwarf_version offset_size addr_size ref_addr_size two_cu } {
-    global testfile srcfile mainfile
+    global testfile srcfile
 
-    # 32-bit targets do not support any of the testcases; keep quiet there.
-    set opts {quiet}
-    foreach n { dwarf_version offset_size addr_size ref_addr_size two_cu } {
-       lappend opts "additional_flags=-D[string toupper $n]=[expr "\$$n"]"
+    set name "d${dwarf_version}o${offset_size}a${addr_size}r${ref_addr_size}t${two_cu}"
+
+    # Make some DWARF for the test.
+    set asm_file [standard_output_file ${testfile}-${name}.S]
+    Dwarf::assemble $asm_file {
+       upvar dwarf_version dwarf_version
+       upvar addr_size addr_size
+       upvar offset_size offset_size
+       upvar ref_addr_size ref_addr_size
+       upvar two_cu two_cu
+
+       set is_64 [expr { $offset_size == 4 ? 0 : 1 }]
+
+       cu {
+           version $dwarf_version
+           addr_size $addr_size
+           is_64 $is_64
+       } {
+           compile_unit {
+               { producer "GNU C 4.4.3" }
+               { language @DW_LANG_C89 }
+               { 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 }
+               }
+
+               struct_label: structure_type {
+                   { name s }
+                   { byte_size 4 sdata }
+               } {
+                   member {
+                       { name f }
+                       { type :$int_label }
+                       { data_member_location 0 data1 }
+                   }
+               }
+
+               pointer_label: pointer_type {
+                   { byte_size $Dwarf::_cu_addr_size sdata }
+                   { type  :$struct_label }
+               }
+
+               variable_label: DW_TAG_variable {
+                   { name v }
+                   { location {
+                       DW_OP_implicit_value 0x1 0x1 0x1 0x1
+                   } SPECIAL_expr}
+                   { type :$struct_label "DW_FORM_ref$ref_addr_size" }
+               }
+
+               if { !$two_cu } {
+                   subprogram {
+                       { name main }
+                       { low_pc main addr }
+                       { high_pc "main+0x100" addr }
+                       { type %$int_label }
+                       { external 1 flag }
+                   } {
+                       DW_TAG_variable {
+                           { name p }
+                           { location {
+                               GNU_implicit_pointer $variable_label 0
+                           } SPECIAL_expr }
+                           { type :$pointer_label "DW_FORM_ref$ref_addr_size" }
+                       }
+                   }
+               }
+           }
+       }
+
+       if { $two_cu } {
+           cu {
+               version $dwarf_version
+               addr_size $addr_size
+               is_64 $is_64
+           } {
+               compile_unit {
+                   { producer "GNU C 4.4.3" }
+                   { language @DW_LANG_C89 }
+                   { name 1.c }
+               } {
+                   subprogram {
+                       { name main }
+                       { low_pc main addr }
+                       { high_pc "main+0x100" addr }
+                       { type %$int_label }
+                       { external 1 flag }
+                   } {
+                       DW_TAG_variable {
+                           { name p }
+                           { location {
+                               GNU_implicit_pointer $variable_label 0
+                           } SPECIAL_expr }
+                           { type %$pointer_label }
+                       }
+                   }
+               }
+           }
+       }
     }
 
-    set name "d${dwarf_version}o${offset_size}a${addr_size}r${ref_addr_size}t${two_cu}"
+    # 32-bit targets do not support any of the testcases; keep quiet there.
+    set opts {quiet}
     set executable ${testfile}-${name}
-    if [prepare_for_testing ${testfile}.exp $executable "${srcfile} ${mainfile}" $opts] {
+    if [prepare_for_testing "failed to prepare" $executable "${asm_file} ${srcfile}" $opts] {
        return -1
     }
 
This page took 0.028057 seconds and 4 git commands to generate.