runtime: call timer functions via syscall

It turns out to be painful to require linking against -lrt on
GNU/Linux, as that makes it harder to link Go code into C programs.
Instead just call the timer syscalls directly.  That is what the
upstream library does anyhow.

gcc/go/
	* gospec.cc: Revert 2022-02-09 change:
	(RTLIB, RT_LIBRARY): Don't define.
	(lang_specific_driver): Don't add -lrt if linking statically
	on GNU/Linux.

gotools/
	* configure.ac: Revert 2022-02-09 change:
	(RT_LIBS): Don't define.
	* Makefile.am (check-runtime): Don't set GOLIBS to $(RT_LIBS).
	* configure, Makefile.in: Regenerate.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/385475
This commit is contained in:
Ian Lance Taylor 2022-02-12 17:12:41 -08:00
parent 033ec967ec
commit 58aeb75d40
12 changed files with 26 additions and 96 deletions

View File

@ -1,4 +1,4 @@
7f8fee099d6de4a5a857765e0ddfae356ead554c 0af68c0552341a44f1fb12301f9eff954b9dde88
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.

View File

@ -29,12 +29,10 @@ along with GCC; see the file COPYING3. If not see
#define MATHLIB (1<<2) #define MATHLIB (1<<2)
/* This bit is set if they did `-lpthread'. */ /* This bit is set if they did `-lpthread'. */
#define THREADLIB (1<<3) #define THREADLIB (1<<3)
/* This bit is set if they did `-lrt'. */
#define RTLIB (1<<4)
/* This bit is set if they did `-lc'. */ /* This bit is set if they did `-lc'. */
#define WITHLIBC (1<<5) #define WITHLIBC (1<<4)
/* Skip this option. */ /* Skip this option. */
#define SKIPOPT (1<<6) #define SKIPOPT (1<<5)
#ifndef MATH_LIBRARY #ifndef MATH_LIBRARY
#define MATH_LIBRARY "m" #define MATH_LIBRARY "m"
@ -46,8 +44,6 @@ along with GCC; see the file COPYING3. If not see
#define THREAD_LIBRARY "pthread" #define THREAD_LIBRARY "pthread"
#define THREAD_LIBRARY_PROFILE THREAD_LIBRARY #define THREAD_LIBRARY_PROFILE THREAD_LIBRARY
#define RT_LIBRARY "rt"
#define LIBGO "go" #define LIBGO "go"
#define LIBGO_PROFILE LIBGO #define LIBGO_PROFILE LIBGO
#define LIBGOBEGIN "gobegin" #define LIBGOBEGIN "gobegin"
@ -78,9 +74,6 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
/* "-lpthread" if it appears on the command line. */ /* "-lpthread" if it appears on the command line. */
const struct cl_decoded_option *saw_thread = 0; const struct cl_decoded_option *saw_thread = 0;
/* "-lrt" if it appears on the command line. */
const struct cl_decoded_option *saw_rt = 0;
/* "-lc" if it appears on the command line. */ /* "-lc" if it appears on the command line. */
const struct cl_decoded_option *saw_libc = 0; const struct cl_decoded_option *saw_libc = 0;
@ -91,9 +84,6 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
/* Whether we need the thread library. */ /* Whether we need the thread library. */
int need_thread = 0; int need_thread = 0;
/* Whether we need the rt library. */
int need_rt = 0;
/* By default, we throw on the math library if we have one. */ /* By default, we throw on the math library if we have one. */
int need_math = (MATH_LIBRARY[0] != '\0'); int need_math = (MATH_LIBRARY[0] != '\0');
@ -166,8 +156,6 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
} }
else if (strcmp (arg, THREAD_LIBRARY) == 0) else if (strcmp (arg, THREAD_LIBRARY) == 0)
args[i] |= THREADLIB; args[i] |= THREADLIB;
else if (strcmp (arg, RT_LIBRARY) == 0)
args[i] |= RTLIB;
else if (strcmp (arg, "c") == 0) else if (strcmp (arg, "c") == 0)
args[i] |= WITHLIBC; args[i] |= WITHLIBC;
else else
@ -272,7 +260,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
#endif #endif
/* Make sure to have room for the trailing NULL argument. */ /* Make sure to have room for the trailing NULL argument. */
num_args = argc + need_math + shared_libgcc + (library > 0) * 6 + 10; num_args = argc + need_math + shared_libgcc + (library > 0) * 5 + 10;
new_decoded_options = XNEWVEC (struct cl_decoded_option, num_args); new_decoded_options = XNEWVEC (struct cl_decoded_option, num_args);
i = 0; i = 0;
@ -326,12 +314,6 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
saw_thread = &decoded_options[i]; saw_thread = &decoded_options[i];
} }
if (!saw_rt && (args[i] & RTLIB) && library > 0)
{
--j;
saw_rt = &decoded_options[i];
}
if (!saw_libc && (args[i] & WITHLIBC) && library > 0) if (!saw_libc && (args[i] & WITHLIBC) && library > 0)
{ {
--j; --j;
@ -413,23 +395,9 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
#endif #endif
/* When linking libgo statically we also need to link with the /* When linking libgo statically we also need to link with the
pthread and (on GNU/Linux) the rt library. */ pthread library. */
if (library > 1 || static_link) if (library > 1 || static_link)
{ need_thread = 1;
need_thread = 1;
if (strstr (DEFAULT_TARGET_MACHINE, "linux") != NULL)
need_rt = 1;
}
}
if (saw_rt)
new_decoded_options[j++] = *saw_rt;
else if (library > 0 && need_rt)
{
generate_option (OPT_l, RT_LIBRARY, 1, CL_DRIVER,
&new_decoded_options[j]);
added_libraries++;
j++;
} }
if (saw_thread) if (saw_thread)

View File

@ -248,14 +248,12 @@ check-runtime: go$(EXEEXT) $(noinst_PROGRAMS) check-head check-gccgo check-gcc
GOARCH=`$(abs_builddir)/go$(EXEEXT) env GOARCH`; \ GOARCH=`$(abs_builddir)/go$(EXEEXT) env GOARCH`; \
GOOS=`$(abs_builddir)/go$(EXEEXT) env GOOS`; \ GOOS=`$(abs_builddir)/go$(EXEEXT) env GOOS`; \
files=`$(SHELL) $(libgosrcdir)/../match.sh --goarch=$${GOARCH} --goos=$${GOOS} --srcdir=$(libgosrcdir)/runtime --extrafiles="$(libgodir)/runtime_linknames.go $(libgodir)/runtime_sysinfo.go $(libgodir)/sigtab.go $(libgodir)/goroot.go" --tag=libffi`; \ files=`$(SHELL) $(libgosrcdir)/../match.sh --goarch=$${GOARCH} --goos=$${GOOS} --srcdir=$(libgosrcdir)/runtime --extrafiles="$(libgodir)/runtime_linknames.go $(libgodir)/runtime_sysinfo.go $(libgodir)/sigtab.go $(libgodir)/goroot.go" --tag=libffi`; \
echo "$(ECHO_ENV) GC='$(abs_builddir)/check-gccgo -fgo-compiling-runtime' GOARCH=$${GOARCH} GOOS=$${GOOS} GOLIBS='$(RT_LIBS)' $(SHELL) $(libgosrcdir)/../testsuite/gotest --goarch=$${GOARCH} --goos=$${GOOS} --basedir=$(libgosrcdir)/.. --srcdir=$(libgosrcdir)/runtime --pkgpath=runtime --pkgfiles='$${files}' $(GOTESTFLAGS) -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v" > runtime-testlog echo "$(ECHO_ENV) GC='$(abs_builddir)/check-gccgo -fgo-compiling-runtime' GOARCH=$${GOARCH} GOOS=$${GOOS} $(SHELL) $(libgosrcdir)/../testsuite/gotest --goarch=$${GOARCH} --goos=$${GOOS} --basedir=$(libgosrcdir)/.. --srcdir=$(libgosrcdir)/runtime --pkgpath=runtime --pkgfiles='$${files}' $(GOTESTFLAGS) -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v" > runtime-testlog
$(CHECK_ENV) \ $(CHECK_ENV) \
GC="$${GCCGO} -fgo-compiling-runtime"; \ GC="$${GCCGO} -fgo-compiling-runtime"; \
export GC; \ export GC; \
GOARCH=`$(abs_builddir)/go$(EXEEXT) env GOARCH`; \ GOARCH=`$(abs_builddir)/go$(EXEEXT) env GOARCH`; \
GOOS=`$(abs_builddir)/go$(EXEEXT) env GOOS`; \ GOOS=`$(abs_builddir)/go$(EXEEXT) env GOOS`; \
GOLIBS="$(RT_LIBS)"; \
export GOLIBS; \
files=`$(SHELL) $(libgosrcdir)/../match.sh --goarch=$${GOARCH} --goos=$${GOOS} --srcdir=$(libgosrcdir)/runtime --extrafiles="$(libgodir)/runtime_linknames.go $(libgodir)/runtime_sysinfo.go $(libgodir)/sigtab.go $(libgodir)/goroot.go" --tag=libffi`; \ files=`$(SHELL) $(libgosrcdir)/../match.sh --goarch=$${GOARCH} --goos=$${GOOS} --srcdir=$(libgosrcdir)/runtime --extrafiles="$(libgodir)/runtime_linknames.go $(libgodir)/runtime_sysinfo.go $(libgodir)/sigtab.go $(libgodir)/goroot.go" --tag=libffi`; \
$(SHELL) $(libgosrcdir)/../testsuite/gotest --goarch=$${GOARCH} --goos=$${GOOS} --basedir=$(libgosrcdir)/.. --srcdir=$(libgosrcdir)/runtime --pkgpath=runtime --pkgfiles="$${files}" $(GOTESTFLAGS) -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v >> runtime-testlog 2>&1 || echo "--- $${fl}: go test runtime (0.00s)" >> runtime-testlog $(SHELL) $(libgosrcdir)/../testsuite/gotest --goarch=$${GOARCH} --goos=$${GOOS} --basedir=$(libgosrcdir)/.. --srcdir=$(libgosrcdir)/runtime --pkgpath=runtime --pkgfiles="$${files}" $(GOTESTFLAGS) -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v >> runtime-testlog 2>&1 || echo "--- $${fl}: go test runtime (0.00s)" >> runtime-testlog
grep '^--- ' runtime-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2 grep '^--- ' runtime-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2

View File

@ -269,7 +269,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@ PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@ PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@ PATH_SEPARATOR = @PATH_SEPARATOR@
RT_LIBS = @RT_LIBS@
SET_MAKE = @SET_MAKE@ SET_MAKE = @SET_MAKE@
SHELL = @SHELL@ SHELL = @SHELL@
STRIP = @STRIP@ STRIP = @STRIP@
@ -920,14 +919,12 @@ mostlyclean-local:
@NATIVE_TRUE@ GOARCH=`$(abs_builddir)/go$(EXEEXT) env GOARCH`; \ @NATIVE_TRUE@ GOARCH=`$(abs_builddir)/go$(EXEEXT) env GOARCH`; \
@NATIVE_TRUE@ GOOS=`$(abs_builddir)/go$(EXEEXT) env GOOS`; \ @NATIVE_TRUE@ GOOS=`$(abs_builddir)/go$(EXEEXT) env GOOS`; \
@NATIVE_TRUE@ files=`$(SHELL) $(libgosrcdir)/../match.sh --goarch=$${GOARCH} --goos=$${GOOS} --srcdir=$(libgosrcdir)/runtime --extrafiles="$(libgodir)/runtime_linknames.go $(libgodir)/runtime_sysinfo.go $(libgodir)/sigtab.go $(libgodir)/goroot.go" --tag=libffi`; \ @NATIVE_TRUE@ files=`$(SHELL) $(libgosrcdir)/../match.sh --goarch=$${GOARCH} --goos=$${GOOS} --srcdir=$(libgosrcdir)/runtime --extrafiles="$(libgodir)/runtime_linknames.go $(libgodir)/runtime_sysinfo.go $(libgodir)/sigtab.go $(libgodir)/goroot.go" --tag=libffi`; \
@NATIVE_TRUE@ echo "$(ECHO_ENV) GC='$(abs_builddir)/check-gccgo -fgo-compiling-runtime' GOARCH=$${GOARCH} GOOS=$${GOOS} GOLIBS='$(RT_LIBS)' $(SHELL) $(libgosrcdir)/../testsuite/gotest --goarch=$${GOARCH} --goos=$${GOOS} --basedir=$(libgosrcdir)/.. --srcdir=$(libgosrcdir)/runtime --pkgpath=runtime --pkgfiles='$${files}' $(GOTESTFLAGS) -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v" > runtime-testlog @NATIVE_TRUE@ echo "$(ECHO_ENV) GC='$(abs_builddir)/check-gccgo -fgo-compiling-runtime' GOARCH=$${GOARCH} GOOS=$${GOOS} $(SHELL) $(libgosrcdir)/../testsuite/gotest --goarch=$${GOARCH} --goos=$${GOOS} --basedir=$(libgosrcdir)/.. --srcdir=$(libgosrcdir)/runtime --pkgpath=runtime --pkgfiles='$${files}' $(GOTESTFLAGS) -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v" > runtime-testlog
@NATIVE_TRUE@ $(CHECK_ENV) \ @NATIVE_TRUE@ $(CHECK_ENV) \
@NATIVE_TRUE@ GC="$${GCCGO} -fgo-compiling-runtime"; \ @NATIVE_TRUE@ GC="$${GCCGO} -fgo-compiling-runtime"; \
@NATIVE_TRUE@ export GC; \ @NATIVE_TRUE@ export GC; \
@NATIVE_TRUE@ GOARCH=`$(abs_builddir)/go$(EXEEXT) env GOARCH`; \ @NATIVE_TRUE@ GOARCH=`$(abs_builddir)/go$(EXEEXT) env GOARCH`; \
@NATIVE_TRUE@ GOOS=`$(abs_builddir)/go$(EXEEXT) env GOOS`; \ @NATIVE_TRUE@ GOOS=`$(abs_builddir)/go$(EXEEXT) env GOOS`; \
@NATIVE_TRUE@ GOLIBS="$(RT_LIBS)"; \
@NATIVE_TRUE@ export GOLIBS; \
@NATIVE_TRUE@ files=`$(SHELL) $(libgosrcdir)/../match.sh --goarch=$${GOARCH} --goos=$${GOOS} --srcdir=$(libgosrcdir)/runtime --extrafiles="$(libgodir)/runtime_linknames.go $(libgodir)/runtime_sysinfo.go $(libgodir)/sigtab.go $(libgodir)/goroot.go" --tag=libffi`; \ @NATIVE_TRUE@ files=`$(SHELL) $(libgosrcdir)/../match.sh --goarch=$${GOARCH} --goos=$${GOOS} --srcdir=$(libgosrcdir)/runtime --extrafiles="$(libgodir)/runtime_linknames.go $(libgodir)/runtime_sysinfo.go $(libgodir)/sigtab.go $(libgodir)/goroot.go" --tag=libffi`; \
@NATIVE_TRUE@ $(SHELL) $(libgosrcdir)/../testsuite/gotest --goarch=$${GOARCH} --goos=$${GOOS} --basedir=$(libgosrcdir)/.. --srcdir=$(libgosrcdir)/runtime --pkgpath=runtime --pkgfiles="$${files}" $(GOTESTFLAGS) -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v >> runtime-testlog 2>&1 || echo "--- $${fl}: go test runtime (0.00s)" >> runtime-testlog @NATIVE_TRUE@ $(SHELL) $(libgosrcdir)/../testsuite/gotest --goarch=$${GOARCH} --goos=$${GOOS} --basedir=$(libgosrcdir)/.. --srcdir=$(libgosrcdir)/runtime --pkgpath=runtime --pkgfiles="$${files}" $(GOTESTFLAGS) -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v >> runtime-testlog 2>&1 || echo "--- $${fl}: go test runtime (0.00s)" >> runtime-testlog
@NATIVE_TRUE@ grep '^--- ' runtime-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2 @NATIVE_TRUE@ grep '^--- ' runtime-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2

7
gotools/configure vendored
View File

@ -586,7 +586,6 @@ ac_subst_vars='am__EXEEXT_FALSE
am__EXEEXT_TRUE am__EXEEXT_TRUE
LTLIBOBJS LTLIBOBJS
LIBOBJS LIBOBJS
RT_LIBS
NET_LIBS NET_LIBS
NATIVE_FALSE NATIVE_FALSE
NATIVE_TRUE NATIVE_TRUE
@ -4212,12 +4211,6 @@ if test "$ac_res" != no; then :
fi fi
RT_LIBS=
case ${target} in
*-*-linux*) RT_LIBS=-lrt ;;
esac
ac_config_files="$ac_config_files Makefile" ac_config_files="$ac_config_files Makefile"

View File

@ -85,15 +85,6 @@ dnl Test if -lrt is required for sched_yield and/or nanosleep.
AC_SEARCH_LIBS([sched_yield], [rt]) AC_SEARCH_LIBS([sched_yield], [rt])
AC_SEARCH_LIBS([nanosleep], [rt]) AC_SEARCH_LIBS([nanosleep], [rt])
dnl On GNU/Linux we need to link the runtime package against -lrt.
dnl This is a target test, unlike sched_yield/nanosleep above
dnl which is a host test.
RT_LIBS=
case ${target} in
*-*-linux*) RT_LIBS=-lrt ;;
esac
AC_SUBST(RT_LIBS)
AC_CONFIG_FILES(Makefile) AC_CONFIG_FILES(Makefile)
AC_OUTPUT AC_OUTPUT

View File

@ -832,8 +832,7 @@ libgo_ldflags = \
libgo_libadd = \ libgo_libadd = \
$(libgo_go_objs) ../libbacktrace/libbacktrace.la \ $(libgo_go_objs) ../libbacktrace/libbacktrace.la \
$(LIBATOMIC) $(LIBFFI) $(PTHREAD_LIBS) $(MATH_LIBS) \ $(LIBATOMIC) $(LIBFFI) $(PTHREAD_LIBS) $(MATH_LIBS) $(NET_LIBS)
$(NET_LIBS) $(RT_LIBS)
libgo_la_SOURCES = $(runtime_files) libgo_la_SOURCES = $(runtime_files)
libgo_la_LDFLAGS = $(libgo_ldflags) libgo_la_LDFLAGS = $(libgo_ldflags)
@ -924,7 +923,7 @@ GOBENCH =
CHECK = \ CHECK = \
GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \ GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \
export GC; \ export GC; \
GOLIBS="$(extra_check_libs_$(subst .,_,$(subst /,_,$(@D)))) $(PTHREAD_LIBS) $(MATH_LIBS) $(NET_LIBS) $(RT_LIBS) $(LIBS)"; \ GOLIBS="$(extra_check_libs_$(subst .,_,$(subst /,_,$(@D)))) $(PTHREAD_LIBS) $(MATH_LIBS) $(NET_LIBS) $(LIBS)"; \
export GOLIBS; \ export GOLIBS; \
RUNTESTFLAGS="$(RUNTESTFLAGS)"; \ RUNTESTFLAGS="$(RUNTESTFLAGS)"; \
export RUNTESTFLAGS; \ export RUNTESTFLAGS; \

View File

@ -233,8 +233,7 @@ am__DEPENDENCIES_4 =
am__DEPENDENCIES_5 = $(am__DEPENDENCIES_3) \ am__DEPENDENCIES_5 = $(am__DEPENDENCIES_3) \
../libbacktrace/libbacktrace.la $(am__DEPENDENCIES_4) \ ../libbacktrace/libbacktrace.la $(am__DEPENDENCIES_4) \
$(am__DEPENDENCIES_4) $(am__DEPENDENCIES_4) \ $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_4) \
$(am__DEPENDENCIES_4) $(am__DEPENDENCIES_4) \ $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_4)
$(am__DEPENDENCIES_4)
libgo_llgo_la_DEPENDENCIES = $(am__DEPENDENCIES_5) libgo_llgo_la_DEPENDENCIES = $(am__DEPENDENCIES_5)
@LIBGO_IS_LINUX_TRUE@@LIBGO_IS_X86_TRUE@am__objects_1 = \ @LIBGO_IS_LINUX_TRUE@@LIBGO_IS_X86_TRUE@am__objects_1 = \
@LIBGO_IS_LINUX_TRUE@@LIBGO_IS_X86_TRUE@ runtime/go-context.lo @LIBGO_IS_LINUX_TRUE@@LIBGO_IS_X86_TRUE@ runtime/go-context.lo
@ -466,7 +465,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
PTHREAD_LIBS = @PTHREAD_LIBS@ PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@ RANLIB = @RANLIB@
RT_LIBS = @RT_LIBS@
SED = @SED@ SED = @SED@
SET_MAKE = @SET_MAKE@ SET_MAKE = @SET_MAKE@
SHELL = @SHELL@ SHELL = @SHELL@
@ -972,8 +970,7 @@ libgo_ldflags = \
libgo_libadd = \ libgo_libadd = \
$(libgo_go_objs) ../libbacktrace/libbacktrace.la \ $(libgo_go_objs) ../libbacktrace/libbacktrace.la \
$(LIBATOMIC) $(LIBFFI) $(PTHREAD_LIBS) $(MATH_LIBS) \ $(LIBATOMIC) $(LIBFFI) $(PTHREAD_LIBS) $(MATH_LIBS) $(NET_LIBS)
$(NET_LIBS) $(RT_LIBS)
libgo_la_SOURCES = $(runtime_files) libgo_la_SOURCES = $(runtime_files)
libgo_la_LDFLAGS = $(libgo_ldflags) libgo_la_LDFLAGS = $(libgo_ldflags)
@ -1047,7 +1044,7 @@ GOBENCH =
CHECK = \ CHECK = \
GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \ GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \
export GC; \ export GC; \
GOLIBS="$(extra_check_libs_$(subst .,_,$(subst /,_,$(@D)))) $(PTHREAD_LIBS) $(MATH_LIBS) $(NET_LIBS) $(RT_LIBS) $(LIBS)"; \ GOLIBS="$(extra_check_libs_$(subst .,_,$(subst /,_,$(@D)))) $(PTHREAD_LIBS) $(MATH_LIBS) $(NET_LIBS) $(LIBS)"; \
export GOLIBS; \ export GOLIBS; \
RUNTESTFLAGS="$(RUNTESTFLAGS)"; \ RUNTESTFLAGS="$(RUNTESTFLAGS)"; \
export RUNTESTFLAGS; \ export RUNTESTFLAGS; \

11
libgo/configure vendored
View File

@ -649,7 +649,6 @@ HAVE_SYS_MMAN_H_FALSE
HAVE_SYS_MMAN_H_TRUE HAVE_SYS_MMAN_H_TRUE
PTHREAD_LIBS PTHREAD_LIBS
PTHREAD_CFLAGS PTHREAD_CFLAGS
RT_LIBS
NET_LIBS NET_LIBS
MATH_LIBS MATH_LIBS
GOC_IS_LLGO_FALSE GOC_IS_LLGO_FALSE
@ -11545,7 +11544,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF cat > conftest.$ac_ext <<_LT_EOF
#line 11548 "configure" #line 11547 "configure"
#include "confdefs.h" #include "confdefs.h"
#if HAVE_DLFCN_H #if HAVE_DLFCN_H
@ -11651,7 +11650,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF cat > conftest.$ac_ext <<_LT_EOF
#line 11654 "configure" #line 11653 "configure"
#include "confdefs.h" #include "confdefs.h"
#if HAVE_DLFCN_H #if HAVE_DLFCN_H
@ -14748,12 +14747,6 @@ $as_echo "$libgo_cv_lib_sockets" >&6; }
NET_LIBS="$libgo_cv_lib_sockets" NET_LIBS="$libgo_cv_lib_sockets"
RT_LIBS=
case ${host} in
*-*-linux*) RT_LIBS=-lrt ;;
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -pthread is supported" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -pthread is supported" >&5
$as_echo_n "checking whether -pthread is supported... " >&6; } $as_echo_n "checking whether -pthread is supported... " >&6; }
if ${libgo_cv_lib_pthread+:} false; then : if ${libgo_cv_lib_pthread+:} false; then :

View File

@ -549,12 +549,6 @@ AC_CACHE_CHECK([for socket libraries], libgo_cv_lib_sockets,
NET_LIBS="$libgo_cv_lib_sockets" NET_LIBS="$libgo_cv_lib_sockets"
AC_SUBST(NET_LIBS) AC_SUBST(NET_LIBS)
RT_LIBS=
case ${host} in
*-*-linux*) RT_LIBS=-lrt ;;
esac
AC_SUBST(RT_LIBS)
dnl Test whether the compiler supports the -pthread option. dnl Test whether the compiler supports the -pthread option.
AC_CACHE_CHECK([whether -pthread is supported], AC_CACHE_CHECK([whether -pthread is supported],
[libgo_cv_lib_pthread], [libgo_cv_lib_pthread],

View File

@ -18,7 +18,7 @@ type mOS struct {
// creates and manages its own timer, and these fields are read and written // creates and manages its own timer, and these fields are read and written
// only by this thread. But because some of the reads on profileTimerValid // only by this thread. But because some of the reads on profileTimerValid
// are in signal handling code, access to that field uses atomic operations. // are in signal handling code, access to that field uses atomic operations.
profileTimer uintptr profileTimer int32
profileTimerValid uint32 profileTimerValid uint32
} }
@ -243,16 +243,17 @@ func osinit() {
physHugePageSize = getHugePageSize() physHugePageSize = getHugePageSize()
} }
//go:noescape func timer_create(clockid int32, sevp *_sigevent, timerid *int32) int32 {
//extern-sysinfo timer_create return int32(syscall(_SYS_timer_create, uintptr(clockid), uintptr(unsafe.Pointer(sevp)), uintptr(unsafe.Pointer(timerid)), 0, 0, 0))
func timer_create(clockid int32, sevp *_sigevent, timerid *uintptr) int32 }
//go:noescape func timer_settime(timerid int32, flags int32, new, old *_itimerspec) int32 {
//extern-sysinfo timer_settime return int32(syscall(_SYS_timer_settime, uintptr(timerid), uintptr(flags), uintptr(unsafe.Pointer(new)), uintptr(unsafe.Pointer(old)), 0, 0))
func timer_settime(timerid uintptr, flags int32, new, old *_itimerspec) int32 }
//extern-sysinfo timer_delete func timer_delete(timerid int32) int32 {
func timer_delete(timerid uintptr) int32 return int32(syscall(_SYS_timer_delete, uintptr(timerid), 0, 0, 0, 0, 0))
}
// go118UseTimerCreateProfiler enables the per-thread CPU profiler. // go118UseTimerCreateProfiler enables the per-thread CPU profiler.
const go118UseTimerCreateProfiler = true const go118UseTimerCreateProfiler = true
@ -360,7 +361,7 @@ func setThreadCPUProfiler(hz int32) {
spec.it_value.setNsec(1 + int64(fastrandn(uint32(1e9/hz)))) spec.it_value.setNsec(1 + int64(fastrandn(uint32(1e9/hz))))
spec.it_interval.setNsec(1e9 / int64(hz)) spec.it_interval.setNsec(1e9 / int64(hz))
var timerid uintptr var timerid int32
var sevp _sigevent var sevp _sigevent
sevp.sigev_notify = _SIGEV_THREAD_ID sevp.sigev_notify = _SIGEV_THREAD_ID
sevp.sigev_signo = _SIGPROF sevp.sigev_signo = _SIGPROF

View File

@ -215,7 +215,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
PTHREAD_LIBS = @PTHREAD_LIBS@ PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@ RANLIB = @RANLIB@
RT_LIBS = @RT_LIBS@
SED = @SED@ SED = @SED@
SET_MAKE = @SET_MAKE@ SET_MAKE = @SET_MAKE@
SHELL = @SHELL@ SHELL = @SHELL@