aboutsummaryrefslogtreecommitdiff
path: root/libgo
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2019-09-11 12:44:12 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2019-09-11 12:44:12 +0000
commitd694576e174d95b7f6066d924715691c55824f30 (patch)
treeaf823b9b492afa34174b7e138d7d5141dee16cd3 /libgo
parentc5748fdbf403203195e20cfc06acfa96a733486e (diff)
downloadgcc-d694576e174d95b7f6066d924715691c55824f30.zip
gcc-d694576e174d95b7f6066d924715691c55824f30.tar.gz
gcc-d694576e174d95b7f6066d924715691c55824f30.tar.bz2
gotest: force test package to be imported first
When compiling the x_test package, force the test package to be imported first. That ensures that we will see the types defined in the test package before the types defined in the non-test version of the package. This matters if the types differ in some way, such as by adding a new method. This avoids a failure in internal/poll on Solaris, in which the test package adds a method to a type (FD.EOFError). I think it was Solaris- specific because files are sorted in a different order by default. The go tool handles this kind of thing correctly, by rebuilding dependent packages. This is just a hack sufficient to run the libgo testsuite without using the go tool. Fixes https://gcc.gnu.org/PR91712 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/194637 From-SVN: r275648
Diffstat (limited to 'libgo')
-rwxr-xr-xlibgo/testsuite/gotest13
1 files changed, 11 insertions, 2 deletions
diff --git a/libgo/testsuite/gotest b/libgo/testsuite/gotest
index 60bead5..9d46916 100755
--- a/libgo/testsuite/gotest
+++ b/libgo/testsuite/gotest
@@ -419,10 +419,12 @@ esac
# Split $gofiles into external gofiles (those in *_test packages)
# and internal ones (those in the main package).
xgofiles=
+xpackage=
for f in $gofiles; do
package=`grep '^package[ ]' $f | sed 1q`
case "$package" in
*_test)
+ xpackage=`echo $package | sed -e 's/package[ ]//' -e 's/[ ]*$//'`
xgofiles="$xgofiles $f"
;;
*)
@@ -471,10 +473,17 @@ $GC -g $pkgpatharg $prefixarg -c -I . -fno-toplevel-reorder -o _gotest_.o $gofil
if $havex; then
mkdir -p `dirname $package`
cp _gotest_.o `dirname $package`/lib`basename $package`.a
+
+ # Force the test version of the package to be imported first,
+ # so that it's type definitions will be used, in case any new
+ # methods appear in export_test.go files.
+ echo "package $xpackage" > _first_test.go
+ echo 'import _ "'$package'"' >> _first_test.go
+
if test "$trace" = "true"; then
- echo $GC -g $xpkgpatharg -c -I . -fno-toplevel-reorder -o $xofile $xgofiles
+ echo $GC -g $xpkgpatharg -c -I . -fno-toplevel-reorder -o $xofile _first_test.go $xgofiles
fi
- $GC -g $xpkgpatharg -c -I . -fno-toplevel-reorder -o $xofile $xgofiles
+ $GC -g $xpkgpatharg -c -I . -fno-toplevel-reorder -o $xofile _first_test.go $xgofiles
fi
# They all compile; now generate the code to call them.