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