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

Message ID 8a8a8edb-c3a2-4f90-b8ea-a33068dae401@app.fastmail.com
State New
Headers
Series libc: sh: add missing prototypes and change functions from K&R to ANSI |

Commit Message

Pietro Monteiro June 24, 2024, 11:08 p.m. UTC
  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 <pietro@sociotechnical.xyz>
---
 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(-)
  

Comments

Corinna Vinschen June 28, 2024, 10:03 a.m. UTC | #1
On Jun 24 19:08, Pietro Monteiro wrote:
> 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 <pietro@sociotechnical.xyz>
> ---
>  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(-)

Pushed.

Thanks,
Corinna
  

Patch

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)
 {