[committed 1/2] libgloss/cris: Make C declarations present and match them

Hans-Peter Nilsson <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
This is the libgloss part.
Recently, there was a change in gcc such that implicit function
declarations and type mismatches are now errors, no longer just
warnings.  Fix by adding and correcting declarations warned about;
including the right header or adding a declaration (for "main" in
lcrt0.c) and adjust to those types as necessary.
---
 libgloss/cris/gensyscalls | 15 ++++++++-------
 libgloss/cris/lcrt0.c     |  4 +++-
 libgloss/cris/linunistd.h |  7 +++++--
 libgloss/cris/outbyte.c   |  2 +-
 4 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/libgloss/cris/gensyscalls b/libgloss/cris/gensyscalls
index c36f2848871c..0b5b0731a725 100644
--- a/libgloss/cris/gensyscalls
+++ b/libgloss/cris/gensyscalls
@@ -1,5 +1,5 @@
 #! /bin/sh
-#  Copyright (C) 2005, 2018 Axis Communications.
+#  Copyright (C) 2005, 2018, 2023 Axis Communications.
 #  All rights reserved.
 #
 #  Redistribution and use in source and binary forms, with or without
@@ -40,13 +40,14 @@ lu='/* -*- buffer-read-only: t -*-
 #define R(x) return (x); }
 '
 lui="$lu int"
+lul="$lu long int"
 r=") { R (_Sys_"
 
 cat > close.c <<EOF
 $lui _close (int fd${r}close (fd))
 EOF
 cat > execve.c <<EOF
-$lui _execve (char *path, char **argv, char **env${r}execve (path, argv, env))
+$lui _execve (const char *path, char * const *argv, char *const *env${r}execve (path, argv, env))
 EOF
 cat > exit.c <<EOF
 $lu void _exit (int val) { _Sys_exit (val); /* Appease GCC: */ while (1) ; }
@@ -141,13 +142,13 @@ cat > link.c <<EOF
 $lui _link (const char *old, const char *new${r}link (old, new))
 EOF
 cat > lseek.c <<EOF
-$lui _lseek (int fd, int offset, int whence${r}lseek (fd, offset, whence))
+$lul _lseek (int fd, long int offset, int whence${r}lseek (fd, offset, whence))
 EOF
 cat > open.c <<EOF
 $lui _open (const char *fnam, int flags, int mode${r}open (fnam, flags, mode))
 EOF
 cat > read.c <<EOF
-$lui _read (int fd, char *buf, int nbytes${r}read (fd, buf, nbytes))
+$lui _read (int fd, void *buf, unsigned long int nbytes${r}read (fd, buf, nbytes))
 EOF
 cat > rename.c <<EOF
 $lui _rename (const char *old, const char *new${r}rename (old, new))
@@ -158,8 +159,8 @@ $lu
 #define PROT_READ	0x1		/* page can be read */
 #define PROT_WRITE	0x2		/* page can be written */
 #define MAP_ANONYMOUS	0x20		/* don't use a file */
-char *
-_sbrk (int d)
+void *
+_sbrk (long int d)
 {
   static long last_alloc = 0;
 
@@ -260,6 +261,6 @@ cat > wait.c <<EOF
 $lui _wait (int *status${r}wait4 (_getpid(), status, 0, 0))
 EOF
 cat > write.c <<EOF
-$lui _write (int fd, char *buf, int nbytes${r}write (fd, buf, nbytes))
+$lui _write (int fd, const void *buf, unsigned long int nbytes${r}write (fd, buf, nbytes))
 EOF
 exit 0
diff --git a/libgloss/cris/lcrt0.c b/libgloss/cris/lcrt0.c
index 48489edd3700..0aae3c279719 100644
--- a/libgloss/cris/lcrt0.c
+++ b/libgloss/cris/lcrt0.c
@@ -1,5 +1,5 @@
 /* Support for cris*-axis-linux-gnu and src/sim/cris simulator.
-   Copyright (C) 2000-2005, 2017 Axis Communications.
+   Copyright (C) 2000-2005, 2017, 2023 Axis Communications.
    All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
@@ -28,6 +28,7 @@
 
 #include "linunistd.h"
 #include "newlib.h"
+#include <stdlib.h>
 
 #ifdef _HAVE_INITFINI_ARRAY
 #define _init __libc_init_array
@@ -99,6 +100,7 @@ extern void _Libdtors (void);
 
 extern void __init__start (void) __attribute ((weak));
 extern void __aout__ctors (void) __attribute ((weak));
+extern int main (int argc, char **argv, char **env);
 
 static void start1 () __asm__ ("__start1") __attribute ((__used__));
 static void
diff --git a/libgloss/cris/linunistd.h b/libgloss/cris/linunistd.h
index 3a6f318a370f..b627670f5ba1 100644
--- a/libgloss/cris/linunistd.h
+++ b/libgloss/cris/linunistd.h
@@ -1,5 +1,5 @@
 /* Support for syscalls for cris*-axis-linux-gnu and simulators
-   Copyright (C) 1998-2005, 2018 Axis Communications.
+   Copyright (C) 1998-2005, 2018, 2023 Axis Communications.
    All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
@@ -32,10 +32,13 @@
 #ifndef _ASM_ELINUX_UNISTD_H_
 #define _ASM_ELINUX_UNISTD_H_
 
+#define _LIBC
+
 /* Our callers might want to use link_warning, so provide it from here.  */
 #include "../config.h"
 #include "libnosys/warning.h"
 
+#include <unistd.h>
 #include <errno.h>
 
 /*
@@ -357,7 +360,7 @@ static inline _syscall0(int,setup)
 static inline _syscall0(int,sync)
 static inline _syscall3(int,write,int,fd,const char *,buf,unsigned,count)
 static inline _syscall1(int,dup,int,fd)
-static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
+static inline _syscall3(int,execve,const char *,file,char *const *,argv,char *const *,envp)
 static inline _syscall3(int,open,const char *,file,int,flag,int,mode)
 static inline _syscall1(int,close,int,fd)
 static inline _syscall1(int,_exit,int,exitcode)
diff --git a/libgloss/cris/outbyte.c b/libgloss/cris/outbyte.c
index 1cb686b9687b..210339f8ef18 100644
--- a/libgloss/cris/outbyte.c
+++ b/libgloss/cris/outbyte.c
@@ -1,7 +1,7 @@
 /* Low-level kind-of-support for CRIS.  Mostly used as a placeholder
    function.  Too small and obvious to warrant a copyright notice.  */
 
-#include <stdio.h>
+#include <unistd.h>
 void
 outbyte (int ch)
 {
-- 
2.30.2


brgds, H-P
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.