PR 82922 asks to enable -Wstrict-prototypes. The attached patch handles the errors in an x86_64 bootstrap. With it, GCC bootstraps successfully with --enable-languages=all,jit, but there are many FAILs in the test suite but I think those could be handled by a script so unless there are objections it seems feasible to me to enable the optionin GCC 8. Either way, the libgo patch can be considered independently of that decision.
Martin
PR c/82922 - Request: add -Wstrict-prototypes to -Wextra as K&R style is obsolescent libgo/ChangeLog: PR c/82922 * go/syscall/errno.c (GetErrno): Add a prototype. * runtime/go-now.c (now): Ditto. * runtime/go-runtime-error.c (__go_runtime_error): Ditto. * runtime/proc.c (runtime_getCgoHasExtraM): Ditto. * runtime/runtime.h (runtime_getAllP, runtime_getsched): Ditto. diff --git a/libgo/go/syscall/errno.c b/libgo/go/syscall/errno.c index 5cdc773..1e822f1 100644 --- a/libgo/go/syscall/errno.c +++ b/libgo/go/syscall/errno.c @@ -11,11 +11,11 @@ /* errno is typically a macro. These functions set and get errno specific to the libc being used. */ -uintptr_t GetErrno() __asm__ (GOSYM_PREFIX "syscall.GetErrno"); +uintptr_t GetErrno(void) __asm__ (GOSYM_PREFIX "syscall.GetErrno"); void SetErrno(uintptr_t) __asm__ (GOSYM_PREFIX "syscall.SetErrno"); uintptr_t -GetErrno() +GetErrno(void) { return (uintptr_t) errno; } diff --git a/libgo/runtime/go-now.c b/libgo/runtime/go-now.c index 13e8f51..a45890b 100644 --- a/libgo/runtime/go-now.c +++ b/libgo/runtime/go-now.c @@ -16,11 +16,11 @@ struct walltime_ret int32_t nsec; }; -struct walltime_ret now() __asm__ (GOSYM_PREFIX "runtime.walltime") +struct walltime_ret now(void) __asm__ (GOSYM_PREFIX "runtime.walltime") __attribute__ ((no_split_stack)); struct walltime_ret -now() +now(void) { struct timespec ts; struct walltime_ret ret; diff --git a/libgo/runtime/go-runtime-error.c b/libgo/runtime/go-runtime-error.c index 4f563fc..5edbeeb 100644 --- a/libgo/runtime/go-runtime-error.c +++ b/libgo/runtime/go-runtime-error.c @@ -55,7 +55,7 @@ enum GO_NIL = 11 }; -extern void __go_runtime_error () __attribute__ ((noreturn)); +extern void __go_runtime_error (int32) __attribute__ ((noreturn)); void __go_runtime_error (int32 i) diff --git a/libgo/runtime/proc.c b/libgo/runtime/proc.c index d6e42e6..2d2ac19 100644 --- a/libgo/runtime/proc.c +++ b/libgo/runtime/proc.c @@ -364,7 +364,7 @@ runtime_mcall(FuncVal *fv) // // Design doc at http://golang.org/s/go11sched. -extern bool* runtime_getCgoHasExtraM() +extern bool* runtime_getCgoHasExtraM(void) __asm__ (GOSYM_PREFIX "runtime.getCgoHasExtraM"); extern G* allocg(void) __asm__ (GOSYM_PREFIX "runtime.allocg"); @@ -548,7 +548,7 @@ void setGContext(void) __asm__ (GOSYM_PREFIX "runtime.setGContext"); // setGContext sets up a new goroutine context for the current g. void -setGContext() +setGContext(void) { int val; G *gp; diff --git a/libgo/runtime/runtime.h b/libgo/runtime/runtime.h index 39b5ef8..ac767e3 100644 --- a/libgo/runtime/runtime.h +++ b/libgo/runtime/runtime.h @@ -472,9 +472,9 @@ extern void typedmemmove(const Type *, void *, const void *) __asm__ (GOSYM_PREFIX "runtime.typedmemmove"); extern void setncpu(int32) __asm__(GOSYM_PREFIX "runtime.setncpu"); -extern P** runtime_getAllP() +extern P** runtime_getAllP(void) __asm__ (GOSYM_PREFIX "runtime.getAllP"); -extern Sched* runtime_getsched() +extern Sched* runtime_getsched(void) __asm__ (GOSYM_PREFIX "runtime.getsched"); extern void setpagesize(uintptr_t) __asm__(GOSYM_PREFIX "runtime.setpagesize");