gdb.dwarf2: Testsuite 64-bit pointer truncation fixes
authorMaciej W. Rozycki <macro@codesourcery.com>
Tue, 14 Oct 2014 20:16:07 +0000 (21:16 +0100)
committerMaciej W. Rozycki <macro@codesourcery.com>
Tue, 14 Oct 2014 20:16:07 +0000 (21:16 +0100)
* gdb.dwarf2/dw2-case-insensitive-debug.S: Handle 64-bit pointers.
* gdb.dwarf2/dw2-case-insensitive.exp: Update accordingly.
* gdb.dwarf2/dw2-skip-prologue.S: Handle 64-bit pointers.
* gdb.dwarf2/dw2-skip-prologue.exp: Update accordingly.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S
gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp
gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.S
gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.exp

index c6384c9..e780db3 100644 (file)
@@ -1,3 +1,10 @@
+2014-10-14  Maciej W. Rozycki  <macro@codesourcery.com>
+
+       * gdb.dwarf2/dw2-case-insensitive-debug.S: Handle 64-bit pointers.
+       * gdb.dwarf2/dw2-case-insensitive.exp: Update accordingly.
+       * gdb.dwarf2/dw2-skip-prologue.S: Handle 64-bit pointers.
+       * gdb.dwarf2/dw2-skip-prologue.exp: Update accordingly.
+
 2014-10-14  Sergio Durigan Junior  <sergiodj@redhat.com>
 
        * gdb.arch/stap-eval-lang-ada.S: Likewise.
index f7449fd..8210a74 100644 (file)
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#if PTRBITS == 64
+# define PTRBYTE .8byte
+#elif PTRBITS == 32
+# define PTRBYTE .4byte
+#else
+# error "Unsupported pointer size"
+#endif
+
        .section .debug_info
 .Lcu1_begin:
        /* CU header */
 .Lcu1_start:
        .2byte  2                               /* DWARF Version */
        .4byte  .Labbrev1_begin                 /* Offset into abbrev section */
-       .byte   4                               /* Pointer size */
+       .byte   PTRBITS / 8                     /* 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   8                               /* DW_AT_language (DW_LANG_Fortran90) */
-       .4byte          cu_text_start           /* DW_AT_low_pc */
-       .4byte          cu_text_end             /* DW_AT_high_pc */
+       PTRBYTE         cu_text_start           /* DW_AT_low_pc */
+       PTRBYTE         cu_text_end             /* DW_AT_high_pc */
 
        .uleb128        3                       /* Abbrev: DW_TAG_subprogram */
        .byte           1                       /* DW_AT_external */
        .ascii          "FUNC_lang\0"           /* DW_AT_name */
-       .4byte          FUNC_lang_start         /* DW_AT_low_pc */
-       .4byte          FUNC_lang_end           /* DW_AT_high_pc */
+       PTRBYTE         FUNC_lang_start         /* DW_AT_low_pc */
+       PTRBYTE         FUNC_lang_end           /* DW_AT_high_pc */
        .byte           1                       /* DW_AT_prototyped */
        .4byte          .Ltype - .Lcu1_begin    /* DW_AT_type */
 
index c18533c..9d9b395 100644 (file)
@@ -21,8 +21,15 @@ if {![dwarf2_support]} {
 
 standard_testfile .c dw2-case-insensitive-debug.S
 
+if [is_ilp32_target] {
+    set ptrbits 32
+} else {
+    set ptrbits 64
+}
+
 if { [prepare_for_testing ${testfile}.exp ${testfile} \
-         [list $srcfile $srcfile2] {nodebug}] } {
+         [list $srcfile $srcfile2] \
+         [list nodebug additional_flags=-DPTRBITS=$ptrbits]] } {
     return -1
 }
 
index 2aa66f7..6124918 100644 (file)
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#if PTRBITS == 64
+# define PTRBYTE .8byte
+#elif PTRBITS == 32
+# define PTRBYTE .4byte
+#else
+# error "Unsupported pointer size"
+#endif
+
        .section .debug_info
 .Lcu1_begin:
        /* CU header */
 .Lcu1_start:
        .2byte  2                               /* DWARF Version */
        .4byte  .Labbrev1_begin                 /* Offset into abbrev section */
-       .byte   4                               /* Pointer size */
+       .byte   PTRBITS / 8                     /* Pointer size */
 
        /* CU die */
        .uleb128 1                              /* Abbrev: DW_TAG_compile_unit */
        .4byte  .Lline1_begin                   /* DW_AT_stmt_list */
-       .4byte  func_start                      /* DW_AT_low_pc */
-       .4byte  func_end                        /* DW_AT_high_pc */
+       PTRBYTE func_start                      /* DW_AT_low_pc */
+       PTRBYTE func_end                        /* DW_AT_high_pc */
        .ascii  "main.c\0"                      /* DW_AT_name */
        .ascii  "GNU C 4.5.0\0"                 /* DW_AT_producer must be >= 4.5  */
        .byte   2                               /* DW_AT_language (DW_LANG_C) */
@@ -37,8 +45,8 @@
        .byte           1                       /* DW_AT_external */
        .ascii          "func\0"                /* DW_AT_name */
        .4byte          .Ltype_int-.Lcu1_begin  /* DW_AT_type */
-       .4byte          func_start              /* DW_AT_low_pc */
-       .4byte          func_end                /* DW_AT_high_pc */
+       PTRBYTE         func_start              /* DW_AT_low_pc */
+       PTRBYTE         func_end                /* DW_AT_high_pc */
 
 /* GDB `has_loclist' detection of -O2 -g code needs to see a DW_AT_location
    location list.  There may exist -O2 -g CUs still not needing/using any such
 
        .uleb128        4                       /* Abbrev: DW_TAG_inlined_subroutine */
        .ascii          "inlined\0"             /* DW_AT_name */
-       .4byte          func0                   /* DW_AT_low_pc */
-       .4byte          func1                   /* DW_AT_high_pc */
+       PTRBYTE         func0                   /* DW_AT_low_pc */
+       PTRBYTE         func1                   /* DW_AT_high_pc */
        .byte           3                       /* DW_AT_inline (DW_INL_declared_inlined) */
        .byte           1                       /* DW_AT_call_file */
        .byte           8                       /* DW_AT_call_line */
 
        .uleb128        4                       /* Abbrev: DW_TAG_inlined_subroutine */
        .ascii          "inlined2\0"            /* DW_AT_name */
-       .4byte          func2                   /* DW_AT_low_pc */
-       .4byte          func3                   /* DW_AT_high_pc */
+       PTRBYTE         func2                   /* DW_AT_low_pc */
+       PTRBYTE         func3                   /* DW_AT_high_pc */
        .byte           3                       /* DW_AT_inline (DW_INL_declared_inlined) */
        .byte           1                       /* DW_AT_call_file */
        .byte           11                      /* DW_AT_call_line */
@@ -68,8 +76,8 @@
 #ifdef INLINED
        .uleb128        4                       /* Abbrev: DW_TAG_inlined_subroutine */
        .ascii          "otherinline\0"         /* DW_AT_name */
-       .4byte          func3                   /* DW_AT_low_pc */
-       .4byte          func_end                /* DW_AT_high_pc */
+       PTRBYTE         func3                   /* DW_AT_low_pc */
+       PTRBYTE         func_end                /* DW_AT_high_pc */
        .byte           3                       /* DW_AT_inline (DW_INL_declared_inlined) */
        .byte           1                       /* DW_AT_call_file */
        .byte           9                       /* DW_AT_call_line */
@@ -77,8 +85,8 @@
 
 #ifdef LEXICAL
        .uleb128        5                       /* Abbrev: DW_TAG_lexical_block */
-       .4byte          func3                   /* DW_AT_low_pc */
-       .4byte          func_end                /* DW_AT_high_pc */
+       PTRBYTE         func3                   /* DW_AT_low_pc */
+       PTRBYTE         func_end                /* DW_AT_high_pc */
 
        /* GDB would otherwise ignore the DW_TAG_lexical_block.  */
        .uleb128        6                       /* Abbrev: DW_TAG_variable */
        .byte           1                       /* DW_AT_external */
        .ascii          "func\0"                /* DW_AT_name */
        .4byte          .Ltype_int-.Lcu1_begin  /* DW_AT_type */
-       .4byte          fund_start              /* DW_AT_low_pc */
-       .4byte          fund_end                /* DW_AT_high_pc */
+       PTRBYTE         fund_start              /* DW_AT_low_pc */
+       PTRBYTE         fund_end                /* DW_AT_high_pc */
 
        .byte           0                       /* End of children of DW_TAG_subprogram */
 
@@ -117,7 +125,7 @@ loclist:
        /* Reset the location list base address first.  */
        .4byte          -1, 0
 
-       .4byte          func_start, func_end
+       PTRBYTE         func_start, func_end
        .2byte          2f-1f
 1:     .byte           0x50    /* DW_OP_reg0 */
 2:
@@ -277,7 +285,7 @@ loclist:
        .byte           0       /* DW_LNE_set_address */
        .uleb128        5
        .byte           2
-       .4byte          func_start
+       PTRBYTE         func_start
        .byte           3       /* DW_LNS_advance_line */
        .sleb128        4       /* ... to 5 */
        .byte           1       /* DW_LNS_copy */
@@ -285,7 +293,7 @@ loclist:
        .byte           0       /* DW_LNE_set_address */
        .uleb128        5
        .byte           2
-       .4byte          func0
+       PTRBYTE         func0
        .byte           4       /* DW_LNS_set_file */
        .uleb128        2
        .byte           3       /* DW_LNS_advance_line */
@@ -295,7 +303,7 @@ loclist:
        .byte           0       /* DW_LNE_set_address */
        .uleb128        5
        .byte           2
-       .4byte          func1
+       PTRBYTE         func1
        .byte           4       /* DW_LNS_set_file */
        .uleb128        1
        .byte           3       /* DW_LNS_advance_line */
@@ -305,7 +313,7 @@ loclist:
        .byte           0       /* DW_LNE_set_address */
        .uleb128        5
        .byte           2
-       .4byte          func2
+       PTRBYTE         func2
        .byte           4       /* DW_LNS_set_file */
        .uleb128        2
        .byte           3       /* DW_LNS_advance_line */
@@ -315,7 +323,7 @@ loclist:
        .byte           0       /* DW_LNE_set_address */
        .uleb128        5
        .byte           2
-       .4byte          func3
+       PTRBYTE         func3
        .byte           4       /* DW_LNS_set_file */
        .uleb128        1
        .byte           3       /* DW_LNS_advance_line */
@@ -325,14 +333,14 @@ loclist:
        .byte           0       /* DW_LNE_set_address */
        .uleb128        5
        .byte           2
-       .4byte          func_end
+       PTRBYTE         func_end
 
 /* Equivalent copy but renamed s/func/fund/.  */
 
        .byte           0       /* DW_LNE_set_address */
        .uleb128        5
        .byte           2
-       .4byte          fund_start
+       PTRBYTE         fund_start
        .byte           3       /* DW_LNS_advance_line */
        .sleb128        -4      /* ... to 5 */
        .byte           1       /* DW_LNS_copy */
@@ -340,7 +348,7 @@ loclist:
        .byte           0       /* DW_LNE_set_address */
        .uleb128        5
        .byte           2
-       .4byte          fund0
+       PTRBYTE         fund0
        .byte           4       /* DW_LNS_set_file */
        .uleb128        2
        .byte           3       /* DW_LNS_advance_line */
@@ -350,7 +358,7 @@ loclist:
        .byte           0       /* DW_LNE_set_address */
        .uleb128        5
        .byte           2
-       .4byte          fund1
+       PTRBYTE         fund1
        .byte           4       /* DW_LNS_set_file */
        .uleb128        1
        .byte           3       /* DW_LNS_advance_line */
@@ -360,7 +368,7 @@ loclist:
        .byte           0       /* DW_LNE_set_address */
        .uleb128        5
        .byte           2
-       .4byte          fund2
+       PTRBYTE         fund2
        .byte           4       /* DW_LNS_set_file */
        .uleb128        2
        .byte           3       /* DW_LNS_advance_line */
@@ -370,7 +378,7 @@ loclist:
        .byte           0       /* DW_LNE_set_address */
        .uleb128        5
        .byte           2
-       .4byte          fund3
+       PTRBYTE         fund3
        .byte           4       /* DW_LNS_set_file */
        .uleb128        1
        .byte           3       /* DW_LNS_advance_line */
@@ -380,7 +388,7 @@ loclist:
        .byte           0       /* DW_LNE_set_address */
        .uleb128        5
        .byte           2
-       .4byte          fund_end
+       PTRBYTE         fund_end
 
 /* Line numbering end.  */
 
index 7bea4cf..4c3d773 100644 (file)
@@ -39,7 +39,16 @@ if {![dwarf2_support]} {
 standard_testfile
 set executable ${testfile}
 
-if {[build_executable ${testfile}.exp ${executable} "${testfile}.c ${testfile}.S" {additional_flags=-DINLINED}] == -1} {
+if [is_ilp32_target] {
+    set ptrbits 32
+} else {
+    set ptrbits 64
+}
+
+if { [build_executable ${testfile}.exp ${executable} \
+         "${testfile}.c ${testfile}.S" \
+         [list additional_flags=-DINLINED \
+               additional_flags=-DPTRBITS=$ptrbits]] == -1 } {
     return -1
 }