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: [PATCH] Avoid ARM SWI Seek when querying file position


On Aug 31 12:30, Andy Koppe wrote:
> On 31 August 2018 at 12:10, Andy Koppe wrote:
> > Issuing an ARM semi-hosting Seek command when just querying file
> > position with SEEK_CUR and offset zero is unnecessary, because unlike
> > the lseek() Unix system call the Seek command does not actually return
> > the file position. For that reason, syscalls.c for ARM keeps track of
> > file position in the 'poslog', so we can just return that.
> >
> > Moreover, since the Seek command only accepts an absolute file position,
> > SEEK_CUR operations are implemented by adding the relative offset to the
> > position in the poslog. If the host implements non-binary files with
> > implicit carriage return characters but doesn't discount those implicit
> > CRs when implementing Seek (by just mapping straight to Windows file
> > operations), this actually ended up wrongly changing file position when
> > using SEEK_CUR with offset zero or functions like ftell() or fgetpos()
> > that are based on that.
> >
> > The ARM semi-hosting Seek command is documented at
> > http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0040d/BACDFGCG.html
> >
> > (There's a wider problem in that using the position returned by the
> > likes of ftell() in a later seek operation gets you to the wrong place
> > if the host adds implicit CRs without discounting them in Seek
> > commands. Not sure there's anything that can be done about it on the
> > newlib side though.)
> 
> Slightly amended patch attached: Use off_t rather than int for the poslog.

Pushed.


Thanks,
Corinna

-- 
Corinna Vinschen
Cygwin Maintainer
Red Hat

Attachment: signature.asc
Description: PGP signature


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