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]

Re: [Aarch64] Fix _lseek prototype


On 08/10/18 09:54, Christophe Lyon wrote:
> On Fri, 5 Oct 2018 at 16:08, Eric Blake <eblake@redhat.com> wrote:
>>
>> On 10/5/18 4:21 AM, Christophe Lyon wrote:
>>> Here is an updated version using "off_t" instead of "int".
>>> OK?
>>>
>>
>>> -int _lseek (int, int, int);
>>> +off_t _lseek (int, int, int);
>>
>> Per POSIX, the primary function is off_t lseek(int, off_t, int). It
>> looks weird that your _lseek uses int instead of off_t offset. Is this
>> code only ever used on a 32-bit platform, where off_t will never be a
>> 64-bit type?  And since this is '_lseek' rather than 'lseek,' it might
>> be okay to have a different signature than POSIX.  Even so, it's still
>> better to use off_t consistently, rather than in 1/2 of the places where
>> it is typically used.
>>
> 
> OK, this new patches what was recently committed to the arm port, and
> adjusts several other prototypes in the same file.
> 

Pushed.

Thanks,

R.

> Christophe
> 
>> --
>> Eric Blake, Principal Software Engineer
>> Red Hat, Inc.           +1-919-301-3266
>> Virtualization:  qemu.org | libvirt.org
>>
>> newlib-prototypes.txt
>>
>>
>> commit d843def543480ec873fea33ba235d309070e6eae
>> Author: Christophe Lyon <christophe.lyon@linaro.org>
>> Date:   Mon Oct 1 19:10:10 2018 +0000
>>
>>     [Aarch64] Syscalls: fix prototypes
>>     
>>     This patch is similar the arm one committed recently.
>>     
>>     2018-10-08  Christophe Lyon  <christophe.lyon@linaro.org>
>>     
>>     	* libgloss/aarch64/syscalls.c (_sbrk): Fix prototype.
>>     	(_getpid, _write, _swiwrite, _lseek, _swilseek, _read, _wriread):
>>     	Likewise.
>>
>> diff --git a/libgloss/aarch64/syscalls.c b/libgloss/aarch64/syscalls.c
>> index e6dd4bd..7343cc6 100644
>> --- a/libgloss/aarch64/syscalls.c
>> +++ b/libgloss/aarch64/syscalls.c
>> @@ -57,19 +57,19 @@ int _link (void);
>>  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 char *, size_t);
>> +int _swiwrite (int, const char *, 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);
>> @@ -349,7 +349,7 @@ checkerror (int result)
>>     len, is the length in bytes to read.
>>     Returns the number of bytes *not* written. */
>>  int
>> -_swiread (int fh, char *ptr, int len)
>> +_swiread (int fh, void *ptr, size_t len)
>>  {
>>    param_block_t block[3];
>>  
>> @@ -364,7 +364,7 @@ _swiread (int fh, char *ptr, int len)
>>     Translates the return of _swiread into
>>     bytes read. */
>>  int
>> -_read (int fd, char *ptr, int len)
>> +_read (int fd, void *ptr, size_t len)
>>  {
>>    int res;
>>    struct fdent *pfd;
>> @@ -389,8 +389,8 @@ _read (int fd, char *ptr, int len)
>>  }
>>  
>>  /* fd, is a user file descriptor. */
>> -int
>> -_swilseek (int fd, int ptr, int dir)
>> +off_t
>> +_swilseek (int fd, off_t ptr, int dir)
>>  {
>>    int res;
>>    struct fdent *pfd;
>> @@ -449,7 +449,8 @@ _swilseek (int fd, int ptr, int dir)
>>      return -1;
>>  }
>>  
>> -_lseek (int fd, int ptr, int dir)
>> +off_t
>> +_lseek (int fd, off_t ptr, int dir)
>>  {
>>    return _swilseek (fd, ptr, dir);
>>  }
>> @@ -457,7 +458,7 @@ _lseek (int fd, int ptr, int dir)
>>  /* fh, is a valid internal file handle.
>>     Returns the number of bytes *not* written. */
>>  int
>> -_swiwrite (int fh, char *ptr, int len)
>> +_swiwrite (int fh, const char *ptr, size_t len)
>>  {
>>    param_block_t block[3];
>>  
>> @@ -470,7 +471,7 @@ _swiwrite (int fh, char *ptr, int len)
>>  
>>  /* fd, is a user file descriptor. */
>>  int
>> -_write (int fd, char *ptr, int len)
>> +_write (int fd, const char *ptr, size_t len)
>>  {
>>    int res;
>>    struct fdent *pfd;
>> @@ -620,7 +621,7 @@ _close (int fd)
>>  }
>>  
>>  int __attribute__((weak))
>> -_getpid (int n __attribute__ ((unused)))
>> +_getpid (void)
>>  {
>>    return 1;
>>  }
>> @@ -628,8 +629,8 @@ _getpid (int n __attribute__ ((unused)))
>>  /* Heap limit returned from SYS_HEAPINFO Angel semihost call.  */
>>  ulong __heap_limit __attribute__ ((aligned (8))) = 0xcafedead;
>>  
>> -caddr_t
>> -_sbrk (int incr)
>> +void *
>> +_sbrk (ptrdiff_t incr)
>>  {
>>    extern char end asm ("end");	/* Defined by the linker.  */
>>    static char *heap_end;


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