public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug testsuite/26617] New: [ppc64] UNRESOLVED: gdb.dlang/watch-loc.exp: p _Dmain_label - _Dmain
@ 2020-09-15 13:47 vries at gcc dot gnu.org
  2020-09-15 13:48 ` [Bug testsuite/26617] " vries at gcc dot gnu.org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: vries at gcc dot gnu.org @ 2020-09-15 13:47 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=26617

            Bug ID: 26617
           Summary: [ppc64] UNRESOLVED: gdb.dlang/watch-loc.exp: p
                    _Dmain_label - _Dmain
           Product: gdb
           Version: HEAD
            Status: NEW
          Severity: normal
          Priority: P2
         Component: testsuite
          Assignee: unassigned at sourceware dot org
          Reporter: vries at gcc dot gnu.org
  Target Milestone: ---

On ppc64, we run into:
...
(gdb) UNRESOLVED: gdb.dlang/watch-loc.exp: p _Dmain_label - _Dmain
...

The cause a bit earlier:
...
/tmp/ccKXURmw.s: Assembler messages:^M
/tmp/ccKXURmw.s:99: Error: can't resolve `_Dmain_end' {.text section} -
`_Dmain' {.opd section}^M
compiler exited with status 1
output is:
/tmp/ccKXURmw.s: Assembler messages:^M
/tmp/ccKXURmw.s:99: Error: can't resolve `_Dmain_end' {.text section} -
`_Dmain' {.opd section}^M

gdb compile failed, /tmp/ccKXURmw.s: Assembler messages:
/tmp/ccKXURmw.s:99: Error: can't resolve `_Dmain_end' {.text section} -
`_Dmain' {.opd section}
...

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug testsuite/26617] [ppc64] UNRESOLVED: gdb.dlang/watch-loc.exp: p _Dmain_label - _Dmain
  2020-09-15 13:47 [Bug testsuite/26617] New: [ppc64] UNRESOLVED: gdb.dlang/watch-loc.exp: p _Dmain_label - _Dmain vries at gcc dot gnu.org
@ 2020-09-15 13:48 ` vries at gcc dot gnu.org
  2020-09-16 16:04 ` cvs-commit at gcc dot gnu.org
  2020-09-16 16:07 ` vries at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: vries at gcc dot gnu.org @ 2020-09-15 13:48 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=26617

--- Comment #1 from Tom de Vries <vries at gcc dot gnu.org> ---
Tentative patch:
...
diff --git a/gdb/testsuite/gdb.dlang/watch-loc.c
b/gdb/testsuite/gdb.dlang/watch-loc.c
index de594f35ae..0a58f27d9f 100644
--- a/gdb/testsuite/gdb.dlang/watch-loc.c
+++ b/gdb/testsuite/gdb.dlang/watch-loc.c
@@ -36,6 +36,9 @@ main (void)
   return _Dmain ();
 }

+#ifdef WITH_DEBUG_SECTIONS
+#define xstr(s) str(s)
+#define str(s) #s
 /* The .debug_names-based index support depends on .debug_aranges
    generated by GCC.  (.gdb_index includes a gdb-generated map
    instead.)  */
@@ -52,10 +55,11 @@ asm (
 "      .byte   0 \n"   // Size of Segment Descriptor
 "      .2byte  0 \n"   // Pad to 16 byte boundary
 "      .2byte  0 \n"
-"      .4byte  _Dmain \n"      // Address
-"      .4byte  _Dmain_end - _Dmain \n" // Length
+"      .4byte  " xstr(DMAIN_START_0) xstr(DMAIN_START_1) xstr(DMAIN_START_2)
"\n"      --More
+"      .4byte  " xstr(DMAIN_LENGTH) "\n"       // Length
 "      .4byte  0 \n"
 "      .4byte  0 \n"
 ".Laranges_end: \n"
 "      .popsection \n"
 );
+#endif
diff --git a/gdb/testsuite/gdb.dlang/watch-loc.exp
b/gdb/testsuite/gdb.dlang/watch-loc.exp

index d65f3c674f..dcd93789ce 100644
--- a/gdb/testsuite/gdb.dlang/watch-loc.exp
+++ b/gdb/testsuite/gdb.dlang/watch-loc.exp
@@ -27,6 +27,10 @@ if {![dwarf2_support]} {

 standard_testfile watch-loc.c watch-loc-dw.S

+lassign [function_range _Dmain ${srcdir}/${subdir}/${srcfile}] \
+    dmain_start dmain_length
+
+
 # Make some DWARF for the test.
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
@@ -62,8 +66,19 @@ Dwarf::assemble $asm_file {
     }
 }

+set dmain_start_list [split $dmain_start]
+set dmain_start_0 [lindex $dmain_start_list 0]
+set dmain_start_1 [lindex $dmain_start_list 1]
+set dmain_start_2 [lindex $dmain_start_list 2]
+
 if { [prepare_for_testing "failed to prepare" ${testfile} \
-          [list $srcfile $asm_file] {nodebug}] } {
+          [list $srcfile $asm_file] \
+         "nodebug \
+              additional_flags=-DWITH_DEBUG_SECTIONS \
+              additional_flags=-DDMAIN_START_0=$dmain_start_0 \
+              additional_flags=-DDMAIN_START_1=$dmain_start_1 \
+              additional_flags=-DDMAIN_START_2=$dmain_start_2 \
+              additional_flags=-DDMAIN_LENGTH=$dmain_length"] } {
     return -1
 }

...

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug testsuite/26617] [ppc64] UNRESOLVED: gdb.dlang/watch-loc.exp: p _Dmain_label - _Dmain
  2020-09-15 13:47 [Bug testsuite/26617] New: [ppc64] UNRESOLVED: gdb.dlang/watch-loc.exp: p _Dmain_label - _Dmain vries at gcc dot gnu.org
  2020-09-15 13:48 ` [Bug testsuite/26617] " vries at gcc dot gnu.org
@ 2020-09-16 16:04 ` cvs-commit at gcc dot gnu.org
  2020-09-16 16:07 ` vries at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2020-09-16 16:04 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=26617

--- Comment #2 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tom de Vries <vries@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=945ff6e213d206c79386f225626e887abad0e22d

commit 945ff6e213d206c79386f225626e887abad0e22d
Author: Tom de Vries <tdevries@suse.de>
Date:   Wed Sep 16 18:04:37 2020 +0200

    [gdb/testsuite] Fix gdb.dlang/watch-loc.exp on ppc64

    On ppc64, we run into:
    ...
    /tmp/ccKXURmw.s: Assembler messages:^M
    /tmp/ccKXURmw.s:99: Error: can't resolve \
      `_Dmain_end' {.text section} - `_Dmain' {.opd section}^M
    compiler exited with status 1
    ...

    The unresolvable entity comes from the .debug_aranges section hardcoded in
    watch-loc.c:
    ...
    "      .4byte  _Dmain \n"      // Address
    "      .4byte  _Dmain_end - _Dmain \n" // Length
    ...
    where _Dmain is the function label for function _Dmain, and _Dmain_end is a
    label after function _Dmain:
    ...
    int _Dmain (void)
    {
      asm ("_Dmain_label: .globl _Dmain_label");
      return 0;
    }

    asm ("_Dmain_end: .globl _Dmain_end");
    ...

    The problem is that the two labels are not in the same section, because
_Dmain
    ends up in the .opd section, which "contains the official procedure
    descriptors.  A pointer to a function shall reference a procedure
descriptor in
    this section."

    Fix this by using function_range instead to get the length.

    Also, fix the address part to not use _Dmain, but instead use the function
    start as returned by function_range.

    Tested on x86_64-linux.

    gdb/testsuite/ChangeLog:

    2020-09-16  Tom de Vries  <tdevries@suse.de>

            PR testsuite/26617
            * gdb.dlang/watch-loc.c: Only add .debug_aranges if
            WITH_DEBUG_SECTIONS is defined.
            (xstr, str): New macro.
            (.debug_aranges): Use DMAIN_START_0/1/2 and DMAIN_LENGTH
            to get start and size of _Dmain.
            * gdb.dlang/watch-loc.exp: Pass DMAIN_START_0/1/2 and DMAIN_LENGTH
            using additional_flags.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug testsuite/26617] [ppc64] UNRESOLVED: gdb.dlang/watch-loc.exp: p _Dmain_label - _Dmain
  2020-09-15 13:47 [Bug testsuite/26617] New: [ppc64] UNRESOLVED: gdb.dlang/watch-loc.exp: p _Dmain_label - _Dmain vries at gcc dot gnu.org
  2020-09-15 13:48 ` [Bug testsuite/26617] " vries at gcc dot gnu.org
  2020-09-16 16:04 ` cvs-commit at gcc dot gnu.org
@ 2020-09-16 16:07 ` vries at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: vries at gcc dot gnu.org @ 2020-09-16 16:07 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=26617

Tom de Vries <vries at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|NEW                         |RESOLVED

--- Comment #3 from Tom de Vries <vries at gcc dot gnu.org> ---
Patch fixing test-case committed, marking resolved-fixed.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-09-16 16:07 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-15 13:47 [Bug testsuite/26617] New: [ppc64] UNRESOLVED: gdb.dlang/watch-loc.exp: p _Dmain_label - _Dmain vries at gcc dot gnu.org
2020-09-15 13:48 ` [Bug testsuite/26617] " vries at gcc dot gnu.org
2020-09-16 16:04 ` cvs-commit at gcc dot gnu.org
2020-09-16 16:07 ` vries at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).