To view parent comment, click here.
To read all comments associated with this story, please click here.
Fair enough. It was my understanding that BeOS/Zeta/Haiku used ELF and GCC as a system compiler. Following a symbolic link at compile time is a job for ld, and I'm going to ass-u-me that BeOS/Zeta/Haiku also use GNU binutils, yes?
Can the BeOS/Zeta/Haiku RTLD seriously not tell the difference between the filenames "libfoo.so.1" and "libfoo.so.2" in the DT_NEEDED section? Does it ignore the second part of the filename?
Even if it can't do that, it doesn't really change my point though, just the mechanism. Instead of libfoo.so.1 and libfoo.so.2 you could have libfoo.so and libfoo_2.so if you so wished; they are distinct libraries. Provided you do not try to mix GCC 2.95 and GCC 4 libraries together it should work.
This is exactly how we handle ABI changes in libsyllable. Whenever the ABI changes we increment the DSO version and ship the previous versions for compatability. So an installed system may have libsyllable.so.5, libsyllable.so.6 and libsyllable.so.7 installed. The only time this couldn't be done sensibly was when we upgraded to Glibc 2.3, which involved much deeper voodoo and it was easier to drop the old libraries.




Member since:
2006-01-01
Vanders, BeOS doesn't use versioned Shared Objects for System libs. This then kills your entire point. BeOS != LINUX.
JT is right on this one. Listen to him.
To include the entire API again would needlessly expand the entire install base. If you are breaking binary compatibility, it should be all or nothing IMO. (Isn't that what Syllable dod to the original libAtheos.so?) You then have issues like linking drivers to the Kernel, input filters to the input server, various bits and pieces to the App server. That's just the tip of the iceberg.
I've looked at writing a thunking layer for BeOS to allow GCC 3.x to be used in plain R5.03. Way, way too much work.