[gdb/testsuite] Fix gdb.arch/amd64-tailcall-self.S
authorTom de Vries <tdevries@suse.de>
Thu, 9 May 2019 10:24:38 +0000 (12:24 +0200)
committerTom de Vries <tdevries@suse.de>
Thu, 9 May 2019 10:24:38 +0000 (12:24 +0200)
The test-case gdb.arch/amd64-tailcall-self.exp fails here:
...
if ![runto b] {
    return -1
}
...
like:
...
(gdb) file build/gdb/testsuite/outputs/gdb.arch/amd64-tailcall-self/\
  amd64-tailcall-self
Reading symbols from build/gdb/testsuite/outputs/gdb.arch/\
  amd64-tailcall-self/amd64-tailcall-self...
Dwarf Error: Cannot find DIE at 0x1f5 referenced from DIE at 0x107 [in \
  module build/gdb/testsuite/outputs/gdb.arch/amd64-tailcall-self/\
  amd64-tailcall-self]
...

The problem is that in amd64-tailcall-self.S, CU-relative references are
assigned .debug_info section relative values.  [ This is similar to the
problem fixed by "Fix gdb.arch/amd64-entry-value-paramref.S". ]

Fix this by assigning CU-relative references instead.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2019-05-09  Tom de Vries  <tdevries@suse.de>

* gdb.arch/amd64-tailcall-self.S: Make DW_FORM_ref4 references
CU-relative.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.arch/amd64-tailcall-self.S

index 47e82c4..867dc87 100644 (file)
@@ -1,5 +1,10 @@
 2019-05-09  Tom de Vries  <tdevries@suse.de>
 
+       * gdb.arch/amd64-tailcall-self.S: Make DW_FORM_ref4 references
+       CU-relative.
+
+2019-05-09  Tom de Vries  <tdevries@suse.de>
+
        * gdb.arch/amd64-entry-value-paramref.S: Make DW_FORM_ref4 references
        CU-relative.
 
index de59795..0dce7e2 100644 (file)
@@ -209,7 +209,7 @@ die29:
        .byte   0x1     # DW_AT_decl_file (amd64-tailcall-self.c)
        .byte   0x7     # DW_AT_decl_line
                        # DW_AT_prototyped
-       .long   die6b   # DW_AT_type
+       .long   die6b - .Ldebug_info0   # DW_AT_type
        .quad   .LFB1   # DW_AT_low_pc
        .quad   .LFE1-.LFB1     # DW_AT_high_pc
        .uleb128 0x1    # DW_AT_frame_base
@@ -219,7 +219,7 @@ die29:
        .ascii "q\0"    # DW_AT_name
        .byte   0x1     # DW_AT_decl_file (amd64-tailcall-self.c)
        .byte   0x7     # DW_AT_decl_line
-       .long   die6b   # DW_AT_type
+       .long   die6b - .Ldebug_info0   # DW_AT_type
        .uleb128 0x1    # DW_AT_location
        .byte   0x55    # DW_OP_reg5
        .byte   0       # end of children of DIE 0x40
@@ -244,7 +244,7 @@ die72:
        .ascii "q\0"    # DW_AT_name
        .byte   0x1     # DW_AT_decl_file (amd64-tailcall-self.c)
        .byte   0xb     # DW_AT_decl_line
-       .long   die6b   # DW_AT_type
+       .long   die6b - .Ldebug_info0   # DW_AT_type
        .uleb128 0x4    # DW_AT_location
        .byte   0xf3    # DW_OP_GNU_entry_value
        .uleb128 0x1
@@ -253,11 +253,11 @@ die72:
        .uleb128 0x7    # (DIE () DW_TAG_GNU_call_site)
        .quad   .Lfirsttailcall # DW_AT_low_pc
                        # DW_AT_GNU_tail_call
-       .long   die72   # DW_AT_abstract_origin
+       .long   die72 - .Ldebug_info0   # DW_AT_abstract_origin
        .uleb128 0x7    # (DIE (0x9b) DW_TAG_GNU_call_site)
        .quad   .LVL2   # DW_AT_low_pc
                        # DW_AT_GNU_tail_call
-       .long   die29   # DW_AT_abstract_origin
+       .long   die29 - .Ldebug_info0   # DW_AT_abstract_origin
        .byte   0       # end of children of DIE 0x72
        .uleb128 0x8    # (DIE (0xa9) DW_TAG_subprogram)
                        # DW_AT_external
@@ -265,7 +265,7 @@ die72:
        .byte   0x1     # DW_AT_decl_file (amd64-tailcall-self.c)
        .byte   0x14    # DW_AT_decl_line
                        # DW_AT_prototyped
-       .long   die6b   # DW_AT_type
+       .long   die6b - .Ldebug_info0   # DW_AT_type
        .quad   .LFB3   # DW_AT_low_pc
        .quad   .LFE3-.LFB3     # DW_AT_high_pc
        .uleb128 0x1    # DW_AT_frame_base
@@ -275,17 +275,17 @@ die72:
        .long   .LASF1  # DW_AT_name: "argc"
        .byte   0x1     # DW_AT_decl_file (amd64-tailcall-self.c)
        .byte   0x14    # DW_AT_decl_line
-       .long   die6b   # DW_AT_type
+       .long   die6b - .Ldebug_info0   # DW_AT_type
        .long   .LLST0  # DW_AT_location
        .uleb128 0x9    # (DIE (0xd9) DW_TAG_formal_parameter)
        .long   .LASF2  # DW_AT_name: "argv"
        .byte   0x1     # DW_AT_decl_file (amd64-tailcall-self.c)
        .byte   0x14    # DW_AT_decl_line
-       .long   diefe   # DW_AT_type
+       .long   diefe - .Ldebug_info0   # DW_AT_type
        .long   .LLST1  # DW_AT_location
        .uleb128 0xa    # (DIE (0xe8) DW_TAG_GNU_call_site)
        .quad   .LVL4   # DW_AT_low_pc
-       .long   die72   # DW_AT_abstract_origin
+       .long   die72 - .Ldebug_info0   # DW_AT_abstract_origin
        .uleb128 0xb    # (DIE (0xf5) DW_TAG_GNU_call_site_parameter)
        .uleb128 0x1    # DW_AT_location
        .byte   0x55    # DW_OP_reg5
@@ -298,11 +298,11 @@ die72:
 diefe:
        .uleb128 0xc    # (DIE (0xfe) DW_TAG_pointer_type)
        .byte   0x8     # DW_AT_byte_size
-       .long   die104  # DW_AT_type
+       .long   die104 - .Ldebug_info0  # DW_AT_type
 die104:
        .uleb128 0xc    # (DIE (0x104) DW_TAG_pointer_type)
        .byte   0x8     # DW_AT_byte_size
-       .long   die10a  # DW_AT_type
+       .long   die10a - .Ldebug_info0  # DW_AT_type
 die10a:
        .uleb128 0xd    # (DIE (0x10a) DW_TAG_base_type)
        .byte   0x1     # DW_AT_byte_size
@@ -312,7 +312,7 @@ die10a:
        .ascii "i\0"    # DW_AT_name
        .byte   0x1     # DW_AT_decl_file (amd64-tailcall-self.c)
        .byte   0x5     # DW_AT_decl_line
-       .long   die6b   # DW_AT_type
+       .long   die6b - .Ldebug_info0   # DW_AT_type
                        # DW_AT_external
        .uleb128 0x9    # DW_AT_location
        .byte   0x3     # DW_OP_addr