Arnd Bergmann <[EMAIL PROTECTED]> writes: > They have to be compiled for i386, as they have always been. > If they were compiled for i486, they would not run on i386 > anyway, with or without the bug.
But if they are compiled for i386, they won't run on other Linux systems, thus losing binary compatibility. > Ok, I probably wasn't clear enough about the actual trick. If you want > to use foreign binaries or build any debian packages libraries with > C++ for i486+, you need to install the i486 libstdc++ files. Not only those, but also all other libraries that the executable links with. > For example, we could have these files in libstdc++5_3.3-x_i386.deb: > > /usr/lib/i386/libstdc++-i386.so.5 -> libstdc++.so.5.0.3 > /usr/lib/i386/libstdc++.so.5.0.3 > /usr/lib/i486/libstdc++.so.5 -> libstdc++.so.5.0.3 > /usr/lib/i486/libstdc++-i386.so.5 -> libstdc++.so.5.0.3 > /usr/lib/i486/libstdc++.so.5.0.3 You need to add Qt, kde, and many other libraries to that as well. Essentially, for each C++ library, you should have three versions: the 2.95 version, the c102 version, and the c102-debian version. > All default packages are built for i386 (as always) and linked > for with the soname libstdc++-i386.so.5. On i486+ systems, > the runtime linker will automatically use > /usr/lib/i486/libstdc++-i386.so.5, which resolve the > __exchange_and_add() function to the trivial assembly version. Isn't the __exchange_and_add function inline, so that the dynamic linker can't change its implementation, anyway? Regards, Martin