From 1df8f9f09b0999e04bc0bbd7170ac7dbfa278213 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Fri, 22 Dec 2023 21:29:56 -0700 Subject: Fix epiphany libgloss for c99/gcc-14 So in this case we mostly need to include an internal header (epiphany-syscalls.h). In a few cases an explicit prototype is added. We've also got a return with no value in a function with a non-void return type. Finally the asm_syscall interface expects a pointer as its first argument. In a few cases we've actually got an int (file descriptor) which we just cast to a void *. It's slightly more than Jeff J's pre-approval, but I think still reasonable. --- libgloss/epiphany/_isatty.c | 1 + libgloss/epiphany/epiphany-syscalls.c | 2 +- libgloss/epiphany/epiphany-syscalls.h | 2 ++ libgloss/epiphany/fstat.c | 3 ++- libgloss/epiphany/gettimeofday.c | 1 + libgloss/epiphany/link.c | 1 + libgloss/epiphany/lseek.c | 3 ++- libgloss/epiphany/stat.c | 1 + libgloss/epiphany/unlink.c | 1 + 9 files changed, 12 insertions(+), 3 deletions(-) diff --git a/libgloss/epiphany/_isatty.c b/libgloss/epiphany/_isatty.c index cfb1bf6..f05aba3 100644 --- a/libgloss/epiphany/_isatty.c +++ b/libgloss/epiphany/_isatty.c @@ -18,6 +18,7 @@ #include #include +#include "epiphany-syscalls.h" int _isatty (int fd) diff --git a/libgloss/epiphany/epiphany-syscalls.c b/libgloss/epiphany/epiphany-syscalls.c index e6ebcee..4c03fe2 100644 --- a/libgloss/epiphany/epiphany-syscalls.c +++ b/libgloss/epiphany/epiphany-syscalls.c @@ -253,7 +253,7 @@ int __attribute__ ((section ("libgloss_epiphany"))) e_raise(int signum) { __asm__ __volatile__ ("wand"); //ilatst = 1 << WAND_IVT_N; //break; - return; + return 0; case SIG_USR1: ilatst = 1 << USR_SOFT_IVT_N; diff --git a/libgloss/epiphany/epiphany-syscalls.h b/libgloss/epiphany/epiphany-syscalls.h index 3af1c6f..b465875 100644 --- a/libgloss/epiphany/epiphany-syscalls.h +++ b/libgloss/epiphany/epiphany-syscalls.h @@ -35,5 +35,7 @@ int asm_open(const char* FILE, int FLAGS, int MODE); void asm_exit(int STATUS); int asm_close(int CHAN); int asm_syscall(void *P1, void *P2, void *P3, int SUBFUN); +int _fstat (int, struct stat *st); + #endif diff --git a/libgloss/epiphany/fstat.c b/libgloss/epiphany/fstat.c index 5a20b57..d126c2d 100644 --- a/libgloss/epiphany/fstat.c +++ b/libgloss/epiphany/fstat.c @@ -31,6 +31,7 @@ #include #include +#include "epiphany-syscalls.h" /* ------------------------------------------------------------------------- */ @@ -44,6 +45,6 @@ int __attribute__ ((section ("libgloss_epiphany"))) _fstat (int fildes, struct stat *st) { - return asm_syscall (fildes, st, NULL, SYS_fstat); + return asm_syscall ((void *)fildes, st, NULL, SYS_fstat); } /* _fstat () */ diff --git a/libgloss/epiphany/gettimeofday.c b/libgloss/epiphany/gettimeofday.c index e169385..36f17b8 100644 --- a/libgloss/epiphany/gettimeofday.c +++ b/libgloss/epiphany/gettimeofday.c @@ -31,6 +31,7 @@ #include #include #include "syscall.h" +#include "epiphany-syscalls.h" int _gettimeofday (struct timeval *tp, void *tzp) diff --git a/libgloss/epiphany/link.c b/libgloss/epiphany/link.c index d87637e..fd0d8b9 100644 --- a/libgloss/epiphany/link.c +++ b/libgloss/epiphany/link.c @@ -31,6 +31,7 @@ #include #include +#include "epiphany-syscalls.h" /* ------------------------------------------------------------------------- */ diff --git a/libgloss/epiphany/lseek.c b/libgloss/epiphany/lseek.c index 64ffcdd..65d7e52 100644 --- a/libgloss/epiphany/lseek.c +++ b/libgloss/epiphany/lseek.c @@ -30,6 +30,7 @@ #include #include +#include "epiphany-syscalls.h" /* ------------------------------------------------------------------------- */ /*!Set a position in a file @@ -43,5 +44,5 @@ off_t __attribute__ ((section ("libgloss_epiphany"))) _lseek (int fildes, off_t offset, int whence) { - return asm_syscall (fildes, offset, whence, SYS_lseek); + return asm_syscall ((void *)fildes, (void *)offset, (void *)whence, SYS_lseek); } /* _lseek () */ diff --git a/libgloss/epiphany/stat.c b/libgloss/epiphany/stat.c index 988f28d..f9a3872 100644 --- a/libgloss/epiphany/stat.c +++ b/libgloss/epiphany/stat.c @@ -31,6 +31,7 @@ #include #include +#include "epiphany-syscalls.h" /* ------------------------------------------------------------------------- */ diff --git a/libgloss/epiphany/unlink.c b/libgloss/epiphany/unlink.c index c78af28..653f24b 100644 --- a/libgloss/epiphany/unlink.c +++ b/libgloss/epiphany/unlink.c @@ -31,6 +31,7 @@ #include #include +#include "epiphany-syscalls.h" /* ------------------------------------------------------------------------- */ -- cgit v1.1