Re: Re: [UnixOS2] libc

Ilya Zakharevich <[email protected]> Tue, 24 Jun 2003 06:09:13 -0700
Newsgroups gmane.comp.ide.emx.devel
Message-ID <[email protected]>
On Tue, Jun 24, 2003 at 02:56:40PM +0200, Stefan Neis wrote:
> > b) Functions with new behaviour (like set/getuid):
> >    - Old programs (binaries): Not effected if we keep the old
> >      ordinal number and the broken old function together (the
> >      new implementation of the function gets a new ordinal number).
> > 
> > c) Functions that change its declaration (like fseek if we change
> >    to 64 bit by default; how many of them are there?):
> >    - Old programs (binaries): If we want to keep binary compatibility
> >      the old function must keep its ordinal (but may get a new name
> >      -> fseek32)
> 
> However, as Ilya pointed out, this doesn't solve the problems for old
> libraries (binaries), which don't reference the ordinal, just the function
> name...

I do not see how this could be a problem.  First of all, EMX CRT DLL
has no exports by name, right?  [Can't check it now.]  Second, when
you add a renamed function for one which was exported by name, you
export the new function by ordinal only.  And keep the name pointing
to the old guy.

The problem with libraries which I meant is that a function could take
off_t as an argument (or a return value).  If the meaning of off_t
changes in the calling program, but not in the library (or visa
versa), this leads to problems which are extremely hard to debug.

Hope this helps,
Ilya