Dnia czwartek, 8 sierpnia 2013 09:51:10 Andreas Jaeger pisze:
gcc and glibc allow compilation on 64-bit x86-64 for 32-bit x86 as target (and the other way round). This works for many cases but not for all.
I did an unpack of all factory RPMs for x86-64 and i386 and run diff on the two /usr/include trees. I put the output at http://users.suse.com/%7Eaj/include.diff.bz2
It contains 329 files that are different between x86 and x86-64. So, if you include one of those headers in your application, it will most probably not work correctly when compiled on x86-64 for x86.
Some of these differences are in comments, which is harmless.
Some of them define their own versions for int64_t & consortes, I have no idea for what purpose. I suppose stdint.h should be enough for most cases.
Some blindly #define system paths without examining the target. One even goes as far as to #define what is supposed to be the default search path for the dynamic loader (and I suppose the definition is wrong as it searches /lib64 first in both cases).
Some happily #define __RESERVED_SYMBOLS.
The short if it: it is a mess.
I'm not taking any action myself for this, just wanted to send this out as a FYI,