This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 4/5] adapt prototypes arm/syscalls.c to usual prototypes, and do not rely on implicit conversions


---
 libgloss/arm/syscalls.c | 97 +++++++++++++++++++++++++------------------------
 1 file changed, 49 insertions(+), 48 deletions(-)

diff --git a/libgloss/arm/syscalls.c b/libgloss/arm/syscalls.c
index f80615db9..dacd1a9d3 100644
--- a/libgloss/arm/syscalls.c
+++ b/libgloss/arm/syscalls.c
@@ -24,23 +24,23 @@ int     _isatty		(int);
 clock_t _times		(struct tms *);
 int     _gettimeofday	(struct timeval *, void *);
 int     _unlink		(const char *);
-int     _link 		(void);
+int     _link 		(const char *, const char *);
 int     _stat 		(const char *, struct stat *);
 int     _fstat 		(int, struct stat *);
 int	_swistat	(int fd, struct stat * st);
-caddr_t _sbrk		(int);
-int     _getpid		(int);
+void *  _sbrk		(ptrdiff_t);
+pid_t   _getpid	        (void);
 int     _close		(int);
 clock_t _clock		(void);
 int     _swiclose	(int);
 int     _open		(const char *, int, ...);
 int     _swiopen	(const char *, int);
-int     _write 		(int, char *, int);
-int     _swiwrite	(int, char *, int);
-int     _lseek		(int, int, int);
-int     _swilseek	(int, int, int);
-int     _read		(int, char *, int);
-int     _swiread	(int, char *, int);
+int     _write 		(int, const void *, size_t);
+int     _swiwrite	(int, const void *, size_t);
+_off_t  _lseek		(int, _off_t, int);
+_off_t  _swilseek	(int, _off_t, int);
+int     _read		(int, void *, size_t);
+int     _swiread	(int, void *, size_t);
 void    initialise_monitor_handles (void);
 
 static int	checkerror	(int);
@@ -323,7 +323,7 @@ get_errno (void)
 #ifdef ARM_RDI_MONITOR
   return do_AngelSWI (AngelSWI_Reason_Errno, NULL);
 #else
-  register r0 asm("r0");
+  register int r0 asm("r0");
   asm ("swi %a1" : "=r"(r0) : "i" (SWI_GetErrno));
   return r0;
 #endif
@@ -352,24 +352,24 @@ checkerror (int result)
    Returns the number of bytes *not* written. */
 int
 _swiread (int fh,
-	  char * ptr,
-	  int len)
+	  void * ptr,
+	  size_t len)
 {
 #ifdef ARM_RDI_MONITOR
   int block[3];
   
   block[0] = fh;
   block[1] = (int) ptr;
-  block[2] = len;
+  block[2] = (int) len;
   
   return checkerror (do_AngelSWI (AngelSWI_Reason_Read, block));
 #else
-  register r0 asm("r0");
-  register r1 asm("r1");
-  register r2 asm("r2");
+  register int r0 asm("r0");
+  register int r1 asm("r1");
+  register int r2 asm("r2");
   r0 = fh;
-  r1 = (int)ptr;
-  r2 = len;
+  r1 = (int) ptr;
+  r2 = (int) len;
   asm ("swi %a4"
        : "=r" (r0)
        : "0"(r0), "r"(r1), "r"(r2), "i"(SWI_Read));
@@ -382,8 +382,8 @@ _swiread (int fh,
    bytes read. */
 int __attribute__((weak))
 _read (int fd,
-       char * ptr,
-       int len)
+       void * ptr,
+       size_t len)
 {
   int res;
   struct fdent *pfd;
@@ -408,12 +408,12 @@ _read (int fd,
 }
 
 /* fd, is a user file descriptor. */
-int
+off_t
 _swilseek (int fd,
-	int ptr,
+	off_t ptr,
 	int dir)
 {
-  int res;
+  off_t res;
   struct fdent *pfd;
 
   /* Valid file descriptor? */
@@ -461,7 +461,7 @@ _swilseek (int fd,
   
   /* This code only does absolute seeks.  */
   block[0] = pfd->handle;
-  block[1] = ptr;
+  block[1] = (int) ptr;
   res = checkerror (do_AngelSWI (AngelSWI_Reason_Seek, block));
 #else
   if (dir == SEEK_END)
@@ -493,8 +493,9 @@ _swilseek (int fd,
     return -1;
 }
 
+off_t
 _lseek (int fd,
-	int ptr,
+	off_t ptr,
 	int dir)
 {
   return _swilseek (fd, ptr, dir);
@@ -505,21 +506,21 @@ _lseek (int fd,
 int
 _swiwrite (
 	   int    fh,
-	   char * ptr,
-	   int    len)
+	   const void * ptr,
+	   size_t    len)
 {
 #ifdef ARM_RDI_MONITOR
   int block[3];
   
   block[0] = fh;
   block[1] = (int) ptr;
-  block[2] = len;
+  block[2] = (int) len;
   
   return checkerror (do_AngelSWI (AngelSWI_Reason_Write, block));
 #else
-  register r0 asm("r0");
-  register r1 asm("r1");
-  register r2 asm("r2");
+  register int r0 asm("r0");
+  register int r1 asm("r1");
+  register int r2 asm("r2");
   r0 = fh;
   r1 = (int)ptr;
   r2 = len;
@@ -533,8 +534,8 @@ _swiwrite (
 /* fd, is a user file descriptor. */
 int __attribute__((weak))
 _write (int    fd,
-	char * ptr,
-	int    len)
+	const void * ptr,
+	size_t    len)
 {
   int res;
   struct fdent *pfd;
@@ -653,7 +654,7 @@ _swiclose (int fh)
 #ifdef ARM_RDI_MONITOR
   return checkerror (do_AngelSWI (AngelSWI_Reason_Close, &fh));
 #else
-  register r0 asm("r0");
+  register int r0 asm("r0");
   r0 = fh;
   asm ("swi %a2" 
        : "=r"(r0) 
@@ -694,17 +695,17 @@ _close (int fd)
   return res;
 }
 
-int __attribute__((weak))
-_getpid (int n __attribute__ ((unused)))
+pid_t __attribute__((weak))
+_getpid (void)
 {
-  return 1;
+  return (pid_t)1;
 }
 
 /* Heap limit returned from SYS_HEAPINFO Angel semihost call.  */
 uint __heap_limit = 0xcafedead;
 
-caddr_t __attribute__((weak))
-_sbrk (int incr)
+void * __attribute__((weak))
+_sbrk (ptrdiff_t incr)
 {
   extern char end asm ("end"); /* Defined by the linker.  */
   static char * heap_end;
@@ -717,7 +718,7 @@ _sbrk (int incr)
   
   if ((heap_end + incr > stack_ptr)
       /* Honour heap limit if it's valid.  */
-      || (__heap_limit != 0xcafedead && heap_end + incr > __heap_limit))
+      || (__heap_limit != 0xcafedead && heap_end + incr > (char *)__heap_limit))
     {
       /* Some of the libstdc++-v3 tests rely upon detecting
 	 out of memory errors, so do not abort here.  */
@@ -729,13 +730,13 @@ _sbrk (int incr)
       abort ();
 #else
       errno = ENOMEM;
-      return (caddr_t) -1;
+      return (void *) -1;
 #endif
     }
   
   heap_end += incr;
 
-  return (caddr_t) prev_heap_end;
+  return (void *) prev_heap_end;
 }
 
 int 
@@ -795,7 +796,7 @@ _stat (const char *fname, struct stat *st)
 }
 
 int __attribute__((weak))
-_link (void)
+_link (const char *__path1 __attribute__ ((unused)), const char *__path2 __attribute__ ((unused)))
 {
   errno = ENOSYS;
   return -1;
@@ -811,7 +812,7 @@ _unlink (const char *path)
   block[1] = strlen(path);
   res = do_AngelSWI (AngelSWI_Reason_Remove, block);
 #else
-  register r0 asm("r0");
+  register int r0 asm("r0");
   r0 = (int)path;
   asm ("swi %a2" 
        : "=r"(r0)
@@ -900,7 +901,7 @@ _isatty (int fd)
 #ifdef ARM_RDI_MONITOR
   tty = do_AngelSWI (AngelSWI_Reason_IsTTY, &pfd->handle);
 #else
-  register r0 asm("r0");
+  register int r0 asm("r0");
   r0 = pfd->handle;
   asm ("swi %a2"
        : "=r" (r0)
@@ -941,7 +942,7 @@ _system (const char *s)
     }
   return e;
 #else
-  register r0 asm("r0");
+  register int r0 asm("r0");
   r0 = (int)s;
   asm ("swi %a2" 
        : "=r" (r0)
@@ -961,8 +962,8 @@ _rename (const char * oldpath, const char * newpath)
   block[3] = strlen(newpath);
   return checkerror (do_AngelSWI (AngelSWI_Reason_Rename, block)) ? -1 : 0;
 #else
-  register r0 asm("r0");
-  register r1 asm("r1");
+  register int r0 asm("r0");
+  register int r1 asm("r1");
   r0 = (int)oldpath;
   r1 = (int)newpath;
   asm ("swi %a3" 
-- 
2.11.0


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]