public inbox for gdb-testers@sourceware.org
help / color / mirror / Atom feed
From: gdb-buildbot@sergiodj.net
To: gdb-testers@sourceware.org
Subject: [binutils-gdb] [gdb/testsuite] Fix hello.go xpass
Date: Wed, 04 Mar 2020 07:35:00 -0000	[thread overview]
Message-ID: <a9c798035de33ccc3bc3e494449bbe931e900372@gdb-build> (raw)

*** TEST RESULTS FOR COMMIT a9c798035de33ccc3bc3e494449bbe931e900372 ***

commit a9c798035de33ccc3bc3e494449bbe931e900372
Author:     Tom de Vries <tdevries@suse.de>
AuthorDate: Thu Feb 20 17:46:17 2020 +0100
Commit:     Tom de Vries <tdevries@suse.de>
CommitDate: Thu Feb 20 17:46:17 2020 +0100

    [gdb/testsuite] Fix hello.go xpass
    
    With gdb.go/hello.go, we run into an xpass:
    ...
    Thread 1 "hello" hit Breakpoint 1, main.main () at hello.go:7^M
    7       func main () {^M
    (gdb) print st^M
    $1 = 0x0 ""^M
    (gdb) XPASS: gdb.go/hello.exp: starting string check
    ...
    
    The xfail is setup as follows:
    ...
    \# This used to print "", i.e., the local "st" initialized as "".
    setup_xfail "*-*-*"
    
    gdb_test "print st" \
        ".* = $hex \"\"" \
        "starting string check"
    ...
    
    It's not clear what gccgo/gc PR this xfail refers to.
    
    It's also not clear why the empty string is both:
    - listed as reason for xfail, and
    - used in the pass pattern.
    
    Furthermore, there's a comment in the hello.go testcase:
    ...
      st := "Hello, world!" // this intentionally shadows the global "st"
    ...
    while there's no global st variable present, only a variable myst:
    ...
    var myst = "Shall we?"
    ...
    
    Fix this by splitting up the test-case in two test-cases, hello.{go,exp} and
    global-local-var-shadow.{go,exp}.
    
    In hello.exp we no longer attempt to print st before its declaration.  In
    hello.go we remove the myst variable as well the comment related to shadowing.
    
    In global-local-var-shadow.go, we rename myst to st, such that the comment
    related to shadowing is correct.  In global-local-var-shadow.exp we attempt to
    print the value of st before the local definition, which should print the
    value of the global definition, and xfail this with reference to GCC PR93844.
    
    Tested on x86_64-linux, with gccgo 10.
    
    gdb/testsuite/ChangeLog:
    
    2020-02-20  Tom de Vries  <tdevries@suse.de>
    
            PR go/17018
            * gdb.go/hello.exp: Copy ...
            * gdb.go/global-local-var-shadow.exp: ... here.  New file.  Expect
            print of st to print value of global definition. Add xfail for GCC
            PR93844.
            * gdb.go/hello.exp: Remove printing of st before definition.
            * gdb.go/hello.go: Copy ...
            * gdb.go/global-local-var-shadow.go: ... here. New test.  Rename myst
            to st.
            * gdb.go/hello.go: Remove myst.  Remove comment about shadowing.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index cf7b3b14f2..5553782e0a 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,16 @@
+2020-02-20  Tom de Vries  <tdevries@suse.de>
+
+	PR go/17018
+	* gdb.go/hello.exp: Copy ...
+	* gdb.go/global-local-var-shadow.exp: ... here.  New file.  Expect
+	print of st to print value of global definition. Add xfail for GCC
+	PR93844.
+	* gdb.go/hello.exp: Remove printing of st before definition.
+	* gdb.go/hello.go: Copy ...
+	* gdb.go/global-local-var-shadow.go: ... here. New test.  Rename myst
+	to st.
+	* gdb.go/hello.go: Remove myst.  Remove comment about shadowing.
+
 2020-02-20  Tom de Vries  <tdevries@suse.de>
 
 	* lib/gdb.exp (support_go_compile): New gdb_caching_proc.
diff --git a/gdb/testsuite/gdb.go/global-local-var-shadow.exp b/gdb/testsuite/gdb.go/global-local-var-shadow.exp
new file mode 100644
index 0000000000..f7fd4e1007
--- /dev/null
+++ b/gdb/testsuite/gdb.go/global-local-var-shadow.exp
@@ -0,0 +1,58 @@
+# This testcase is part of GDB, the GNU debugger.
+
+# Copyright 2012-2020 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/>.
+
+# Basic tests.
+
+load_lib "go.exp"
+
+if { [skip_go_tests] } { continue }
+if { [support_go_compile] == 0 } { continue }
+
+standard_testfile .go
+
+if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {debug go}] } {
+    return -1
+}
+
+set bp_location1 [gdb_get_line_number "set breakpoint 1 here"]
+
+if { [go_runto_main] < 0 } {
+    untested "could not run to main"
+    return -1
+}
+
+gdb_test_multiple "print st" "print global var st" {
+    -re -wrap " = $hex \"We shall\"" {
+       pass $gdb_test_name
+    }
+    -re -wrap " = $hex .*" {
+       # GCC PR 93844 (Same problem with google go compiler go1.11.13).
+       # Due to the PR, gdb prints an uninitialized value, which can manifest
+       # as '$3 = 0x0 ""', but also as printing a wild pointer.
+       xfail $gdb_test_name
+    }
+}
+
+if { [gdb_breakpoint ${srcfile}:${bp_location1}] } {
+    pass "setting breakpoint 1"
+}
+
+gdb_test "cont" "Breakpoint .*:${bp_location1}.*" "going to first breakpoint"
+
+gdb_test "print st" \
+    ".* = $hex \"Hello, world!\"" \
+    "string after assignment check"
diff --git a/gdb/testsuite/gdb.go/global-local-var-shadow.go b/gdb/testsuite/gdb.go/global-local-var-shadow.go
new file mode 100644
index 0000000000..73f39446dd
--- /dev/null
+++ b/gdb/testsuite/gdb.go/global-local-var-shadow.go
@@ -0,0 +1,11 @@
+package main
+
+import "fmt"
+
+var st = "We shall"
+
+func main () {
+  fmt.Println ("Before assignment")
+  st := "Hello, world!" // this intentionally shadows the global "st"
+  fmt.Println (st) // set breakpoint 1 here
+}
diff --git a/gdb/testsuite/gdb.go/hello.exp b/gdb/testsuite/gdb.go/hello.exp
index e2ed54a93a..69f3a8c322 100644
--- a/gdb/testsuite/gdb.go/hello.exp
+++ b/gdb/testsuite/gdb.go/hello.exp
@@ -35,13 +35,6 @@ if { [go_runto_main] < 0 } {
     return -1
 }
 
-# This used to print "", i.e., the local "st" initialized as "".
-setup_xfail "*-*-*"
-
-gdb_test "print st" \
-    ".* = $hex \"\"" \
-    "starting string check"
-
 if { [gdb_breakpoint ${srcfile}:${bp_location1}] } {
     pass "setting breakpoint 1"
 }
diff --git a/gdb/testsuite/gdb.go/hello.go b/gdb/testsuite/gdb.go/hello.go
index 17b1d4ac1f..67114dde71 100644
--- a/gdb/testsuite/gdb.go/hello.go
+++ b/gdb/testsuite/gdb.go/hello.go
@@ -2,11 +2,8 @@ package main
 
 import "fmt"
 
-var myst = "Shall we?"
-
 func main () {
   fmt.Println ("Before assignment")
-  st := "Hello, world!" // this intentionally shadows the global "st"
+  st := "Hello, world!"
   fmt.Println (st) // set breakpoint 1 here
-  fmt.Println (myst)
 }


             reply	other threads:[~2020-03-04  6:41 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-04  7:35 gdb-buildbot [this message]
2020-03-04  7:05 ` Failures on Ubuntu-Aarch64-native-extended-gdbserver-m64, branch master gdb-buildbot
2020-03-04 12:48 ` Failures on Fedora-i686, " gdb-buildbot
2020-03-04 12:49 ` Failures on Fedora-x86_64-cc-with-index, " gdb-buildbot
2020-03-04 13:34 ` Failures on Fedora-x86_64-m32, " gdb-buildbot
2020-03-04 13:41 ` Failures on Fedora-x86_64-m64, " gdb-buildbot
2020-03-04 13:46 ` Failures on Fedora-x86_64-native-extended-gdbserver-m64, " gdb-buildbot
2020-03-04 14:41 ` Failures on Fedora-x86_64-native-extended-gdbserver-m32, " gdb-buildbot
2020-03-05  9:38 ` Failures on Fedora-x86_64-native-gdbserver-m64, " gdb-buildbot
2020-03-06 20:39 ` Failures on Fedora-x86_64-native-gdbserver-m32, " gdb-buildbot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a9c798035de33ccc3bc3e494449bbe931e900372@gdb-build \
    --to=gdb-buildbot@sergiodj.net \
    --cc=gdb-testers@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).