[PATCH] libc: sh: add missing prototypes and change functions from K&R to ANSI

"Pietro Monteiro" <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
The SuperH target doesn't build on GCC 14.1 because of missing
function prototypes or because some function declarations use the
deprecated K&R style.  This patch adds missing prototypes on the files
the functions are used and convert K&R declarations to ANSI-style.

Signed-off-by: Pietro Monteiro <[email protected]>
---
 newlib/libc/sys/sh/creat.c     |  7 +++---
 newlib/libc/sys/sh/ftruncate.c |  2 ++
 newlib/libc/sys/sh/syscalls.c  | 40 +++++++++++++++++++++-------------
 newlib/libc/sys/sh/truncate.c  |  2 ++
 4 files changed, 33 insertions(+), 18 deletions(-)

diff --git a/newlib/libc/sys/sh/creat.c b/newlib/libc/sys/sh/creat.c
index 62ec5ead8..5cce6d065 100644
--- a/newlib/libc/sys/sh/creat.c
+++ b/newlib/libc/sys/sh/creat.c
@@ -1,7 +1,8 @@
+extern int
+_creat (const char *path, int mode);
+
 int
-creat(path, mode)
-     const char *path;
-     int mode;
+creat (const char *path, int mode)
 {
   return _creat (path, mode);
 }
diff --git a/newlib/libc/sys/sh/ftruncate.c b/newlib/libc/sys/sh/ftruncate.c
index 660377bf3..c358eb173 100644
--- a/newlib/libc/sys/sh/ftruncate.c
+++ b/newlib/libc/sys/sh/ftruncate.c
@@ -2,6 +2,8 @@
 #include <sys/types.h>
 #include "sys/syscall.h"
 
+extern int __trap34 (int function, ...);
+
 int
 ftruncate (int file, off_t length)
 {
diff --git a/newlib/libc/sys/sh/syscalls.c b/newlib/libc/sys/sh/syscalls.c
index 614b67e9e..3c41ecee9 100644
--- a/newlib/libc/sys/sh/syscalls.c
+++ b/newlib/libc/sys/sh/syscalls.c
@@ -3,11 +3,19 @@
 #include <sys/stat.h>
 #include <sys/time.h>
 #include "sys/syscall.h"
-int errno;
+#include <errno.h>
+#undef errno
+extern int errno;
+
+void abort (void) __attribute__((__noreturn__));
+
+extern int __trap34 (int function, ...);
 
 /* This is used by _sbrk.  */
 register char *stack_ptr asm ("r15");
 
+extern int main (int, char**);
+
 int
 _read (int file,
        char *ptr,
@@ -93,34 +101,38 @@ _unlink ()
   return -1;
 }
 
-isatty (fd)
-     int fd;
+int
+isatty (int fd)
 {
   return 1;
 }
 
-_isatty (fd)
-     int fd;
+int
+_isatty (int fd)
 {
   return 1;
 }
 
-
-_exit (n)
+_ATTRIBUTE ((__noreturn__)) void
+_exit (int n)
 {
-  return __trap34 (SYS_exit, n, 0, 0);
+  __trap34 (SYS_exit, n, 0, 0);
 }
 
-_kill (n, m)
+int
+_kill (int pid,
+       int sig)
 {
   return __trap34 (SYS_exit, 0xdead, 0, 0);
 }
 
-_getpid (n)
+int
+_getpid ()
 {
   return 1;
 }
 
+void
 _raise ()
 {
 }
@@ -145,9 +157,8 @@ _chown (const char *path, short owner, short group)
 }
 
 int
-_utime (path, times)
-     const char *path;
-     char *times;
+_utime (const char *path,
+        char *times)
 {
   return __trap34 (SYS_utime, path, times);
 }
@@ -159,8 +170,7 @@ _fork ()
 }
 
 int
-_wait (statusp)
-     int *statusp;
+_wait (int *statusp)
 {
   return __trap34 (SYS_wait);
 }
diff --git a/newlib/libc/sys/sh/truncate.c b/newlib/libc/sys/sh/truncate.c
index 5ca48d3c6..47a4c0675 100644
--- a/newlib/libc/sys/sh/truncate.c
+++ b/newlib/libc/sys/sh/truncate.c
@@ -2,6 +2,8 @@
 #include <sys/types.h>
 #include "sys/syscall.h"
 
+extern int __trap34 (int function, ...);
+
 int
 truncate (const char *path, off_t length)
 {
-- 
2.39.2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.