From 9e45ca5f83954a340cc78c2f86b7b3294188047f Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 18 Jul 2017 23:14:29 +0000 Subject: [PATCH] =?utf8?q?re=20PR=20go/81451=20(missing=20futex=20check=20?= =?utf8?q?-=20libgo/runtime/thread-linux.c:12:0=20futex.h:13:12:=20error:?= =?utf8?q?=20expected=20=E2=80=98=3D=E2=80=99,=20=E2=80=98,=E2=80=99,=20?= =?utf8?q?=E2=80=98;=E2=80=99,=20=E2=80=98asm=E2=80=99=20or=20=E2=80=98=5F?= =?utf8?q?=5Fattribute=5F=5F=E2=80=99=20before=20=E2=80=98long=E2=80=99)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit PR go/81451 runtime: inline runtime_osinit We had two identical copies of runtime_osinit. They set runtime_ncpu, a variable that is no longer used. Removing that leaves us with two lines. Inline those two lines in the two places the function was called. This fixes GCC PR 81451. Reviewed-on: https://go-review.googlesource.com/48862 From-SVN: r250326 --- gcc/go/gofrontend/MERGE | 2 +- libgo/Makefile.am | 7 ------ libgo/Makefile.in | 48 ++++++++++-------------------------- libgo/go/runtime/stubs.go | 4 +-- libgo/runtime/go-libmain.c | 3 ++- libgo/runtime/go-main.c | 3 ++- libgo/runtime/proc.c | 1 - libgo/runtime/runtime.h | 2 -- libgo/runtime/thread-linux.c | 20 --------------- libgo/runtime/thread-sema.c | 20 --------------- 10 files changed, 20 insertions(+), 90 deletions(-) delete mode 100644 libgo/runtime/thread-linux.c delete mode 100644 libgo/runtime/thread-sema.c diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index cc713791691..0b110e02d63 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -0036bd04d077f8bbe5aa9a62fb8830c53068209e +c49ddc84f3ce89310585aad23ab6e51ef5523748 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/libgo/Makefile.am b/libgo/Makefile.am index b94ac0c526c..9800d20bd9b 100644 --- a/libgo/Makefile.am +++ b/libgo/Makefile.am @@ -398,12 +398,6 @@ else rtems_task_variable_add_file = endif -if LIBGO_IS_LINUX -runtime_thread_files = runtime/thread-linux.c -else -runtime_thread_files = runtime/thread-sema.c -endif - if LIBGO_IS_LINUX runtime_getncpu_file = runtime/getncpu-linux.c else @@ -469,7 +463,6 @@ runtime_files = \ runtime/runtime_c.c \ runtime/stack.c \ runtime/thread.c \ - $(runtime_thread_files) \ runtime/yield.c \ $(rtems_task_variable_add_file) \ $(runtime_getncpu_file) diff --git a/libgo/Makefile.in b/libgo/Makefile.in index ba0a923c40e..9a2bd47ff7b 100644 --- a/libgo/Makefile.in +++ b/libgo/Makefile.in @@ -183,19 +183,17 @@ am__DEPENDENCIES_4 = $(am__DEPENDENCIES_2) \ $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) \ $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) libgo_llgo_la_DEPENDENCIES = $(am__DEPENDENCIES_4) -@LIBGO_IS_LINUX_FALSE@am__objects_1 = thread-sema.lo -@LIBGO_IS_LINUX_TRUE@am__objects_1 = thread-linux.lo -@LIBGO_IS_RTEMS_TRUE@am__objects_2 = rtems-task-variable-add.lo -@LIBGO_IS_AIX_FALSE@@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE@am__objects_3 = getncpu-none.lo -@LIBGO_IS_AIX_TRUE@@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE@am__objects_3 = getncpu-aix.lo -@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE@am__objects_3 = getncpu-bsd.lo -@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE@am__objects_3 = getncpu-bsd.lo -@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE@am__objects_3 = getncpu-solaris.lo -@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_IRIX_TRUE@@LIBGO_IS_LINUX_FALSE@am__objects_3 = getncpu-irix.lo -@LIBGO_IS_DARWIN_TRUE@@LIBGO_IS_LINUX_FALSE@am__objects_3 = \ +@LIBGO_IS_RTEMS_TRUE@am__objects_1 = rtems-task-variable-add.lo +@LIBGO_IS_AIX_FALSE@@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE@am__objects_2 = getncpu-none.lo +@LIBGO_IS_AIX_TRUE@@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE@am__objects_2 = getncpu-aix.lo +@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE@am__objects_2 = getncpu-bsd.lo +@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE@am__objects_2 = getncpu-bsd.lo +@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE@am__objects_2 = getncpu-solaris.lo +@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_IRIX_TRUE@@LIBGO_IS_LINUX_FALSE@am__objects_2 = getncpu-irix.lo +@LIBGO_IS_DARWIN_TRUE@@LIBGO_IS_LINUX_FALSE@am__objects_2 = \ @LIBGO_IS_DARWIN_TRUE@@LIBGO_IS_LINUX_FALSE@ getncpu-bsd.lo -@LIBGO_IS_LINUX_TRUE@am__objects_3 = getncpu-linux.lo -am__objects_4 = aeshash.lo go-assert.lo go-caller.lo go-callers.lo \ +@LIBGO_IS_LINUX_TRUE@am__objects_2 = getncpu-linux.lo +am__objects_3 = aeshash.lo go-assert.lo go-caller.lo go-callers.lo \ go-cdiv.lo go-cgo.lo go-construct-map.lo go-ffi.lo \ go-fieldtrack.lo go-matherr.lo go-memclr.lo go-memcmp.lo \ go-memequal.lo go-memmove.lo go-nanotime.lo go-now.lo \ @@ -203,16 +201,15 @@ am__objects_4 = aeshash.lo go-assert.lo go-caller.lo go-callers.lo \ go-setenv.lo go-signal.lo go-strslice.lo go-typedesc-equal.lo \ go-unsafe-pointer.lo go-unsetenv.lo go-unwind.lo go-varargs.lo \ env_posix.lo panic.lo print.lo proc.lo runtime_c.lo stack.lo \ - thread.lo $(am__objects_1) yield.lo $(am__objects_2) \ - $(am__objects_3) -am_libgo_llgo_la_OBJECTS = $(am__objects_4) + thread.lo yield.lo $(am__objects_1) $(am__objects_2) +am_libgo_llgo_la_OBJECTS = $(am__objects_3) libgo_llgo_la_OBJECTS = $(am_libgo_llgo_la_OBJECTS) libgo_llgo_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libgo_llgo_la_LDFLAGS) $(LDFLAGS) -o $@ @GOC_IS_LLGO_TRUE@am_libgo_llgo_la_rpath = -rpath $(toolexeclibdir) libgo_la_DEPENDENCIES = $(am__DEPENDENCIES_4) -am_libgo_la_OBJECTS = $(am__objects_4) +am_libgo_la_OBJECTS = $(am__objects_3) libgo_la_OBJECTS = $(am_libgo_la_OBJECTS) libgo_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(libgo_la_LDFLAGS) \ @@ -765,8 +762,6 @@ toolexeclibgounicode_DATA = \ @LIBGO_IS_RTEMS_FALSE@rtems_task_variable_add_file = @LIBGO_IS_RTEMS_TRUE@rtems_task_variable_add_file = runtime/rtems-task-variable-add.c -@LIBGO_IS_LINUX_FALSE@runtime_thread_files = runtime/thread-sema.c -@LIBGO_IS_LINUX_TRUE@runtime_thread_files = runtime/thread-linux.c @LIBGO_IS_AIX_FALSE@@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE@runtime_getncpu_file = runtime/getncpu-none.c @LIBGO_IS_AIX_TRUE@@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE@runtime_getncpu_file = runtime/getncpu-aix.c @LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE@runtime_getncpu_file = runtime/getncpu-bsd.c @@ -810,7 +805,6 @@ runtime_files = \ runtime/runtime_c.c \ runtime/stack.c \ runtime/thread.c \ - $(runtime_thread_files) \ runtime/yield.c \ $(rtems_task_variable_add_file) \ $(runtime_getncpu_file) @@ -1525,8 +1519,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtems-task-variable-add.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runtime_c.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thread-linux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thread-sema.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thread.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yield.Plo@am__quote@ @@ -1831,20 +1823,6 @@ thread.lo: runtime/thread.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o thread.lo `test -f 'runtime/thread.c' || echo '$(srcdir)/'`runtime/thread.c -thread-sema.lo: runtime/thread-sema.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT thread-sema.lo -MD -MP -MF $(DEPDIR)/thread-sema.Tpo -c -o thread-sema.lo `test -f 'runtime/thread-sema.c' || echo '$(srcdir)/'`runtime/thread-sema.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/thread-sema.Tpo $(DEPDIR)/thread-sema.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='runtime/thread-sema.c' object='thread-sema.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o thread-sema.lo `test -f 'runtime/thread-sema.c' || echo '$(srcdir)/'`runtime/thread-sema.c - -thread-linux.lo: runtime/thread-linux.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT thread-linux.lo -MD -MP -MF $(DEPDIR)/thread-linux.Tpo -c -o thread-linux.lo `test -f 'runtime/thread-linux.c' || echo '$(srcdir)/'`runtime/thread-linux.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/thread-linux.Tpo $(DEPDIR)/thread-linux.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='runtime/thread-linux.c' object='thread-linux.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o thread-linux.lo `test -f 'runtime/thread-linux.c' || echo '$(srcdir)/'`runtime/thread-linux.c - yield.lo: runtime/yield.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT yield.lo -MD -MP -MF $(DEPDIR)/yield.Tpo -c -o yield.lo `test -f 'runtime/yield.c' || echo '$(srcdir)/'`runtime/yield.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/yield.Tpo $(DEPDIR)/yield.Plo diff --git a/libgo/go/runtime/stubs.go b/libgo/go/runtime/stubs.go index a3d091811d5..30d87c4121b 100644 --- a/libgo/go/runtime/stubs.go +++ b/libgo/go/runtime/stubs.go @@ -422,13 +422,13 @@ func getPanicking() uint32 { return panicking } -// Temporary for gccgo until we initialize ncpu in Go. +// Called by C code to set the number of CPUs. //go:linkname setncpu runtime.setncpu func setncpu(n int32) { ncpu = n } -// Temporary for gccgo until we reliably initialize physPageSize in Go. +// Called by C code to set the page size. //go:linkname setpagesize runtime.setpagesize func setpagesize(s uintptr) { if physPageSize == 0 { diff --git a/libgo/runtime/go-libmain.c b/libgo/runtime/go-libmain.c index 06f6bd32f35..5e3b8d9e48a 100644 --- a/libgo/runtime/go-libmain.c +++ b/libgo/runtime/go-libmain.c @@ -105,7 +105,8 @@ gostart (void *arg) runtime_check (); runtime_args (a->argc, (byte **) a->argv); - runtime_osinit (); + setncpu (getproccount ()); + setpagesize (getpagesize ()); runtime_sched = runtime_getsched(); runtime_schedinit (); __go_go (runtime_main, NULL); diff --git a/libgo/runtime/go-main.c b/libgo/runtime/go-main.c index 26354ce69b0..1048161786c 100644 --- a/libgo/runtime/go-main.c +++ b/libgo/runtime/go-main.c @@ -51,7 +51,8 @@ main (int argc, char **argv) runtime_cpuinit (); runtime_check (); runtime_args (argc, (byte **) argv); - runtime_osinit (); + setncpu (getproccount ()); + setpagesize (getpagesize ()); runtime_sched = runtime_getsched(); runtime_schedinit (); __go_go (runtime_main, NULL); diff --git a/libgo/runtime/proc.c b/libgo/runtime/proc.c index 1272669a8bd..3e3437e6a47 100644 --- a/libgo/runtime/proc.c +++ b/libgo/runtime/proc.c @@ -370,7 +370,6 @@ extern G* allocg(void) __asm__ (GOSYM_PREFIX "runtime.allocg"); Sched* runtime_sched; -int32 runtime_ncpu; bool runtime_isarchive; diff --git a/libgo/runtime/runtime.h b/libgo/runtime/runtime.h index 9f84f523f5e..3324038a57d 100644 --- a/libgo/runtime/runtime.h +++ b/libgo/runtime/runtime.h @@ -217,7 +217,6 @@ extern M* runtime_getallm(void) extern Sched* runtime_sched; extern uint32 runtime_panicking(void) __asm__ (GOSYM_PREFIX "runtime.getPanicking"); -extern int32 runtime_ncpu; extern struct debugVars runtime_debug; extern bool runtime_isstarted; @@ -237,7 +236,6 @@ void runtime_gogo(G*) struct __go_func_type; void runtime_args(int32, byte**) __asm__ (GOSYM_PREFIX "runtime.args"); -void runtime_osinit(); void runtime_alginit(void) __asm__ (GOSYM_PREFIX "runtime.alginit"); void runtime_goargs(void) diff --git a/libgo/runtime/thread-linux.c b/libgo/runtime/thread-linux.c deleted file mode 100644 index f6d8be90caa..00000000000 --- a/libgo/runtime/thread-linux.c +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -#include "runtime.h" -#include "defs.h" - -// Linux futex. - -#include -#include -#include - -void -runtime_osinit(void) -{ - runtime_ncpu = getproccount(); - setncpu(runtime_ncpu); - setpagesize(getpagesize()); -} diff --git a/libgo/runtime/thread-sema.c b/libgo/runtime/thread-sema.c deleted file mode 100644 index 77d53c41684..00000000000 --- a/libgo/runtime/thread-sema.c +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -#include "config.h" -#include "runtime.h" - -#include -#include -#include -#include -#include - -void -runtime_osinit (void) -{ - runtime_ncpu = getproccount(); - setncpu(runtime_ncpu); - setpagesize(getpagesize()); -} -- 2.30.2