Migrate dw2-ifort-parameter.exp to Dwarf::assemble
authorAndreas Arnez <arnez@linux.vnet.ibm.com>
Fri, 7 Mar 2014 11:52:54 +0000 (11:52 +0000)
committerAndreas Krebbel <krebbel@linux.vnet.ibm.com>
Wed, 12 Mar 2014 15:22:19 +0000 (16:22 +0100)
A "side effect" of the migration to Dwarf::assemble is that the DWARF
address size is now automatically adjusted to the target architecture.
The original assembler source hard-coded the DWARF address size to 4,
even on 64-bit architectures.  This address size mismatch caused a
test case failure on s390x due to a wrong result from DW_OP_deref.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.dwarf2/dw2-ifort-parameter-debug.S [deleted file]
gdb/testsuite/gdb.dwarf2/dw2-ifort-parameter.exp

index 70b75124909e5354274202716d1d8a1fac7e4868..2452c77fe751392447fbff9ae3d42bc609023540 100644 (file)
@@ -1,3 +1,9 @@
+2014-03-12  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+       * gdb.dwarf2/dw2-ifort-parameter-debug.S: Remove.
+       * gdb.dwarf2/dw2-ifort-parameter.exp: Use Dwarf::assemble to
+       generate the debug info assembler source.
+
 2014-03-12  Andreas Arnez  <arnez@linux.vnet.ibm.com>
 
        * gdb.dwarf2/arr-stride.exp: Exploit 'prepare_for_testing'.
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ifort-parameter-debug.S b/gdb/testsuite/gdb.dwarf2/dw2-ifort-parameter-debug.S
deleted file mode 100644 (file)
index c7dd9be..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2011-2014 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
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-       .section .debug_info
-.Lcu1_begin:
-       /* CU header */
-       .4byte  .Lcu1_end - .Lcu1_start         /* Length of Compilation Unit */
-.Lcu1_start:
-       .2byte  2                               /* DWARF Version */
-       .4byte  .Labbrev1_begin                 /* Offset into abbrev section */
-       .byte   4                               /* Pointer size */
-
-       /* CU die */
-       .uleb128 1                              /* Abbrev: DW_TAG_compile_unit */
-       .ascii  "file1.txt\0"                   /* DW_AT_name */
-       .ascii  "GNU C 3.3.3\0"                 /* DW_AT_producer */
-       .byte   1                               /* DW_AT_language (C) */
-       .4byte  func                            /* DW_AT_low_pc */
-       .4byte  main                            /* DW_AT_high_pc */
-
-       .uleb128        2                       /* Abbrev: DW_TAG_subprogram */
-       .byte           1                       /* DW_AT_external */
-       .ascii          "func\0"                /* DW_AT_name */
-       .4byte          func                    /* DW_AT_low_pc */
-       .4byte          main                    /* DW_AT_high_pc */
-
-       .uleb128        3                       /* Abbrev: DW_TAG_formal_parameter */
-       .ascii          "param\0"               /* DW_AT_name */
-       .byte           1                       /* DW_AT_variable_parameter */
-       .4byte          .Ltype_int - .Lcu1_begin        /* DW_AT_type */
-       .byte           2f - 1f                 /* DW_AT_location */
-1:     .byte           3                       /*   DW_OP_addr */
-       .4byte          ptr                     /*   <addr> */
-       .byte           0x6                     /*   DW_OP_deref */
-2:
-
-       .byte           0                       /* End of children of func */
-
-.Ltype_int:
-       .uleb128        4                       /* Abbrev: DW_TAG_base_type */
-       .ascii          "int\0"                 /* DW_AT_name */
-       .byte           4                       /* DW_AT_byte_size */
-       .byte           5                       /* DW_AT_encoding */
-
-       .byte           0                       /* End of children of CU */
-.Lcu1_end:
-
-/* Abbrev table */
-       .section .debug_abbrev
-.Labbrev1_begin:
-       .uleb128        1                       /* Abbrev code */
-       .uleb128        0x11                    /* DW_TAG_compile_unit */
-       .byte           1                       /* has_children */
-       .uleb128        0x3                     /* DW_AT_name */
-       .uleb128        0x8                     /* DW_FORM_string */
-       .uleb128        0x25                    /* DW_AT_producer */
-       .uleb128        0x8                     /* DW_FORM_string */
-       .uleb128        0x13                    /* DW_AT_language */
-       .uleb128        0xb                     /* DW_FORM_data1 */
-       .uleb128        0x11                    /* DW_AT_low_pc */
-       .uleb128        0x1                     /* DW_FORM_addr */
-       .uleb128        0x12                    /* DW_AT_high_pc */
-       .uleb128        0x1                     /* DW_FORM_addr */
-       .byte           0x0                     /* Terminator */
-       .byte           0x0                     /* Terminator */
-
-       .uleb128        2                       /* Abbrev code */
-       .uleb128        0x2e                    /* DW_TAG_subprogram */
-       .byte           1                       /* has_children */
-       .uleb128        0x3f                    /* DW_AT_external */
-       .uleb128        0xc                     /* DW_FORM_flag */
-       .uleb128        0x3                     /* DW_AT_name */
-       .uleb128        0x8                     /* DW_FORM_string */
-       .uleb128        0x11                    /* DW_AT_low_pc */
-       .uleb128        0x1                     /* DW_FORM_addr */
-       .uleb128        0x12                    /* DW_AT_high_pc */
-       .uleb128        0x1                     /* DW_FORM_addr */
-       .byte           0x0                     /* Terminator */
-       .byte           0x0                     /* Terminator */
-
-       .uleb128        3                       /* Abbrev code */
-       .uleb128        0x05                    /* DW_TAG_formal_parameter */
-       .byte           0                       /* has_children */
-       .uleb128        0x3                     /* DW_AT_name */
-       .uleb128        0x8                     /* DW_FORM_string */
-       .uleb128        0x4b                    /* DW_AT_variable_parameter */
-       .uleb128        0xb                     /* DW_FORM_data1 */
-       .uleb128        0x49                    /* DW_AT_type */
-       .uleb128        0x13                    /* DW_FORM_ref4 */
-       .uleb128        0x2                     /* DW_AT_location */
-       .uleb128        0xa                     /* DW_FORM_block1 */
-       .byte           0x0                     /* Terminator */
-       .byte           0x0                     /* Terminator */
-
-       .uleb128        4                       /* Abbrev code */
-       .uleb128        0x24                    /* DW_TAG_base_type */
-       .byte           0                       /* has_children */
-       .uleb128        0x3                     /* DW_AT_name */
-       .uleb128        0x8                     /* DW_FORM_string */
-       .uleb128        0xb                     /* DW_AT_byte_size */
-       .uleb128        0xb                     /* DW_FORM_data1 */
-       .uleb128        0x3e                    /* DW_AT_encoding */
-       .uleb128        0xb                     /* DW_FORM_data1 */
-       .byte           0x0                     /* Terminator */
-       .byte           0x0                     /* Terminator */
-
-       .byte           0x0                     /* Terminator */
-       .byte           0x0                     /* Terminator */
index 3fdb996ac38d9209b378d304efb352a19ac453b0..d11de9ed3184b4d7a1ba826baa4fd67896ec744d 100644 (file)
@@ -22,10 +22,50 @@ if {![dwarf2_support]} {
     return 0
 }
 
-standard_testfile .c dw2-ifort-parameter-debug.S
+standard_testfile .c dw2-ifort-parameter-dw.S
+
+# Make some DWARF for the test.
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    declare_labels int_label
+
+    extern main func ptr
+
+    cu {} {
+       compile_unit {
+           {name file1.txt}
+           {language @DW_LANG_C}
+           {low_pc func addr}
+           {high_pc main addr}
+       } {
+           int_label: base_type {
+               {name int}
+               {byte_size 4 sdata}
+               {encoding @DW_ATE_signed}
+           }
+
+           subprogram {
+               {external 1 flag}
+               {name func}
+               {low_pc func addr}
+               {high_pc main addr}
+           } {
+               formal_parameter {
+                   {name param}
+                   {variable_parameter 1 flag}
+                   {type :$int_label}
+                   {location {
+                       addr ptr
+                       deref
+                   } SPECIAL_expr}
+               }
+           }
+       }
+    }
+}
 
 if { [prepare_for_testing ${testfile}.exp ${testfile} \
-         [list $srcfile $srcfile2] {nodebug}] } {
+         [list $srcfile $asm_file] {nodebug}] } {
     return -1
 }