From 1fae9801e45958493870828b44c64726609c7500 Mon Sep 17 00:00:00 2001
From: Ian Lance Taylor <ian@gcc.gnu.org>
Date: Thu, 26 Jul 2012 01:57:04 +0000
Subject: [PATCH] runtime, runtime/pprof: Fix runtime/pprof test to pass,
 enable it.

From-SVN: r189878
---
 libgo/Makefile.am                    | 6 +++++-
 libgo/Makefile.in                    | 6 +++++-
 libgo/go/runtime/pprof/pprof_test.go | 3 ++-
 libgo/runtime/go-signal.c            | 3 +--
 libgo/runtime/proc.c                 | 5 +----
 libgo/runtime/runtime.h              | 2 +-
 6 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/libgo/Makefile.am b/libgo/Makefile.am
index 7923567e978d..f59b00484950 100644
--- a/libgo/Makefile.am
+++ b/libgo/Makefile.am
@@ -1794,7 +1794,7 @@ GOTESTFLAGS =
 
 # Check a package.
 CHECK = \
-	GC="$(GOC) $(GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \
+	GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \
 	export GC; \
 	GOLIBS="$(MATH_LIBS) $(NET_LIBS)"; \
 	export GOLIBS; \
@@ -3012,6 +3012,9 @@ runtime/pprof.lo: $(go_runtime_pprof_files)
 runtime/pprof/check: $(CHECK_DEPS)
 	@$(CHECK)
 .PHONY: runtime/pprof/check
+# At least for now, we need -static-libgo for this test, because
+# otherwise we can't get the line numbers.
+runtime_pprof_check_GOCFLAGS = -static-libgo
 
 @go_include@ sync/atomic.lo.dep
 sync/atomic.lo.dep: $(go_sync_atomic_files)
@@ -3548,6 +3551,7 @@ TEST_PACKAGES = \
 	os/user/check \
 	path/filepath/check \
 	regexp/syntax/check \
+	runtime/pprof/check \
 	sync/atomic/check \
 	text/scanner/check \
 	text/tabwriter/check \
diff --git a/libgo/Makefile.in b/libgo/Makefile.in
index 90d38206cdc7..18f14141b47c 100644
--- a/libgo/Makefile.in
+++ b/libgo/Makefile.in
@@ -2029,7 +2029,7 @@ GOTESTFLAGS =
 
 # Check a package.
 CHECK = \
-	GC="$(GOC) $(GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \
+	GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \
 	export GC; \
 	GOLIBS="$(MATH_LIBS) $(NET_LIBS)"; \
 	export GOLIBS; \
@@ -2089,6 +2089,9 @@ CHECK_DEPS = libgo.la libgobegin.a \
 	$(toolexeclibgotexttemplate_DATA) \
 	$(toolexeclibgounicode_DATA)
 
+# At least for now, we need -static-libgo for this test, because
+# otherwise we can't get the line numbers.
+runtime_pprof_check_GOCFLAGS = -static-libgo
 
 # How to build a .gox file from a .lo file.
 BUILDGOX = \
@@ -2218,6 +2221,7 @@ TEST_PACKAGES = \
 	os/user/check \
 	path/filepath/check \
 	regexp/syntax/check \
+	runtime/pprof/check \
 	sync/atomic/check \
 	text/scanner/check \
 	text/tabwriter/check \
diff --git a/libgo/go/runtime/pprof/pprof_test.go b/libgo/go/runtime/pprof/pprof_test.go
index 82bb2a2926b2..e933058e5580 100644
--- a/libgo/go/runtime/pprof/pprof_test.go
+++ b/libgo/go/runtime/pprof/pprof_test.go
@@ -71,7 +71,8 @@ func TestCPUProfile(t *testing.T) {
 			if f == nil {
 				continue
 			}
-			if strings.Contains(f.Name(), "ChecksumIEEE") {
+			if strings.Contains(f.Name(), "ChecksumIEEE") ||
+				(strings.Contains(f.Name(), "update") && strings.Contains(f.Name(), "crc32")) {
 				found = true
 			}
 		}
diff --git a/libgo/runtime/go-signal.c b/libgo/runtime/go-signal.c
index 5d398b04a022..9fbe86e0c51b 100644
--- a/libgo/runtime/go-signal.c
+++ b/libgo/runtime/go-signal.c
@@ -149,8 +149,7 @@ sig_handler (int sig)
 #ifdef SIGPROF
   if (sig == SIGPROF)
     {
-      /* FIXME.  */
-      runtime_sigprof (0, 0, nil, nil);
+      runtime_sigprof ();
       return;
     }
 #endif
diff --git a/libgo/runtime/proc.c b/libgo/runtime/proc.c
index e3befbec996d..224dce95ba02 100644
--- a/libgo/runtime/proc.c
+++ b/libgo/runtime/proc.c
@@ -1681,10 +1681,7 @@ static struct {
 
 // Called if we receive a SIGPROF signal.
 void
-runtime_sigprof(uint8 *pc __attribute__ ((unused)),
-		uint8 *sp __attribute__ ((unused)),
-		uint8 *lr __attribute__ ((unused)),
-		G *gp __attribute__ ((unused)))
+runtime_sigprof()
 {
 	int32 n;
 
diff --git a/libgo/runtime/runtime.h b/libgo/runtime/runtime.h
index 76a9eef4fd65..dc4fc0817f52 100644
--- a/libgo/runtime/runtime.h
+++ b/libgo/runtime/runtime.h
@@ -451,7 +451,7 @@ const byte*	runtime_getenv(const char*);
 int32	runtime_atoi(const byte*);
 uint32	runtime_fastrand1(void);
 
-void	runtime_sigprof(uint8 *pc, uint8 *sp, uint8 *lr, G *gp);
+void	runtime_sigprof();
 void	runtime_resetcpuprofiler(int32);
 void	runtime_setcpuprofilerate(void(*)(uintptr*, int32), int32);
 void	runtime_usleep(uint32);