> > Thanks. That does clarify a few things. However, I'm not worried about the > > packages I build with GCC 4.5.1 using any of those constructs. I'm worried > > about any of the existing system libraries that are linked by the packages I > > build. We define a set of system packages to be a "base system". That > > includes the kernel, the basic commands and a number of low-level libraries > > (for example, libz). We build our tool chains on top of that base system. Any > > of these libraries that are part of our "base system" are built with GCC 4.1.2. > > I can't just assume that all of these system libraries didn't use any of those > > constructs where the ABI changed. Will there be a potential problem if the > > packages I build with GCC 4.5.1 link against system libraries that used these > > constructs ? Or, would I have completely build everything (including those > > base system libraries) from scratch with GCC 4.5.1 ? > > There is no problem when existing code uses these structs with existing > code. The only problem arises when code compiled with gcc 4.5.1 calls > code compiled with gcc 4.1.2, and passes a struct or union type which > the ABI changed, or vice-versa. So you just have to check the code > compiled with gcc 4.5 and make sure that either it does not use any of > the changed struct or union types, or, in the unlikely event that it > does, ensure that it does not pass or receive those types to or from any > code compiled with gcc 4.1.2. > > To put it another way, you can only have a problem with code compiled > with gcc 4.5.1, and for any code which could conceivably have a problem, > you will see a note. > > Ian Thank you for clarifying. The reason I was asking is due to this line in the IA-32/x86-64 section of the GCC 4.4 release notes: Code built with previous versions of GCC that uses any of these is not compatible with code built with GCC 4.4.0 or later. In any case, I appreciate the information.