Patchwork Go patch committed: Make DejaGNU work for libgo

login
register
mail settings
Submitter Ian Taylor
Date Jan. 12, 2011, 9:56 p.m.
Message ID <mcrlj2pvla9.fsf@google.com>
Download mbox | patch
Permalink /patch/78617/
State New
Headers show

Comments

Ian Taylor - Jan. 12, 2011, 9:56 p.m.
This patch, partially due to Rainer Orth, makes DejaGNU work for libgo.
It's still not run by default, though.  Bootstrapped and ran Go
testsuite, both with and without DejaGNU, on x86_64-unknown-linux-gnu.
Committed to mainline.

Ian

Patch

diff -r 308cbbace152 libgo/Makefile.am
--- a/libgo/Makefile.am	Tue Jan 11 22:32:00 2011 -0800
+++ b/libgo/Makefile.am	Wed Jan 12 13:52:27 2011 -0800
@@ -1237,12 +1237,16 @@ 
 	rm -f $@-log; \
 	prefix=`if test "$(@D)" = "regexp"; then echo regexp-test; else dirname $(@D); fi`; \
 	test "$${prefix}" != "." || prefix="$(@D)"; \
-	if $(srcdir)/testsuite/gotest --dejagnu=$(use_dejagnu) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --prefix="libgo_$${prefix}" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" >>$@-log 2>&1; then \
-	  echo "PASS: $(@D)"; \
+	if test "$(use_dejagnu)" = "yes"; then \
+	  $(srcdir)/testsuite/gotest --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --prefix="libgo_$${prefix}" --pkgfiles="$(go_$(subst /,_,$(@D))_files)"; \
 	else \
-	  echo "FAIL: $(@D)"; \
-	  cat $@-log; \
-	  exit 1; \
+	  if $(srcdir)/testsuite/gotest --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --prefix="libgo_$${prefix}" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" >>$@-log 2>&1; then \
+	    echo "PASS: $(@D)"; \
+	  else \
+	    echo "FAIL: $(@D)"; \
+	    cat $@-log; \
+	    exit 1; \
+	  fi; \
 	fi
 
 # Build all packages before checking any.
diff -r 308cbbace152 libgo/testsuite/gotest
--- a/libgo/testsuite/gotest	Tue Jan 11 22:32:00 2011 -0800
+++ b/libgo/testsuite/gotest	Wed Jan 12 13:52:27 2011 -0800
@@ -314,16 +314,26 @@ 
 	./a.out "$@"
 	;;
 xyes)
-	# This is the only file which is optionally made.
-	# All others are overwritten on copying/building,
-	# but this may remain and cause conflicts if not
-	# deleted.
-	rm -rf ../testsuite/_xtest_.o
-	cp *.o _testmain.go ../testsuite
+	rm -rf ../testsuite/*.o
+	files=`echo *`
+	for f in $files; do
+		if test "$f" = "_obj" || test "$f" = "_test"; then
+			continue
+		fi
+		rm -rf ../testsuite/$f
+		if test -f $f; then
+			cp $f ../testsuite/
+		else
+			ln -s ../$DIR/$f ../testsuite/
+		fi
+	done
 	cd ../testsuite
+	rm -rf _obj _test
+	mkdir _obj _test
 	$MAKE check RUNTESTFLAGS="$RUNTESTFLAGS GOTEST_TMPDIR=$DIR"
 	# Useful when using make check-target-libgo
 	cat libgo.log >> libgo-all.log
 	cat libgo.sum >> libgo-all.sum
+	rm -rf $files
 	;;
 esac
diff -r 308cbbace152 libgo/testsuite/lib/libgo.exp
--- a/libgo/testsuite/lib/libgo.exp	Tue Jan 11 22:32:00 2011 -0800
+++ b/libgo/testsuite/lib/libgo.exp	Wed Jan 12 13:52:27 2011 -0800
@@ -18,7 +18,7 @@ 
 if {$gccdir != ""} {
     set gccdir [file dirname $gccdir]
 }
-set GO_UNDER_TEST "$gccdir/gccgo -B$gccdir/"
+set GOC_UNDER_TEST "$gccdir/gccgo -B$gccdir/"
 set TESTING_IN_BUILD_TREE 1
 
 proc go_maybe_build_wrapper { args } {
diff -r 308cbbace152 libgo/testsuite/libgo.testmain/testmain.exp
--- a/libgo/testsuite/libgo.testmain/testmain.exp	Tue Jan 11 22:32:00 2011 -0800
+++ b/libgo/testsuite/libgo.testmain/testmain.exp	Wed Jan 12 13:52:27 2011 -0800
@@ -17,7 +17,6 @@ 
 load_lib libgo.exp
 
 lappend options "additional_flags=-I. -w -g"
-lappend ld_options "ldflags=-lgotesting"
 
 if [istarget "*-*-rtems*"] {
     global options
@@ -44,9 +43,9 @@ 
 }
 
 set object_files [glob -nocomplain "*.o"]
-regsub $gluefile $object_files "" object_files
-
-lappend options $ld_options
+if [info exists gluefile] {
+    regsub $gluefile $object_files "" object_files
+}
 
 set comp_output [go_target_compile "$object_files _testmain.go" \
 			 "./a.exe" "executable" $options]
@@ -55,4 +54,7 @@ 
     exit 1
 }
 
-libgo_load "./a.exe" "" ""
+set result [libgo_load "./a.exe" "" ""]
+
+set status [lindex $result 0]
+$status go