On limits.h problem between 0.29 and 0.38

Martin Fouts Martin.Fouts@palmsource.com
Tue Sep 13 05:17:00 GMT 2005


I've googled, but couldn't find an answer.  Sorry if I missed it.

We've been using crosstool 0.29 to build arm tool chains for a few
months and have had good luck compiling fairly complicated stuff with
the resulting toolchain.

Recently, I tried upgrading to 0.38 and now compiles fail.  The
particular problem seems similar to one that Dan Kegel reported agains
GCC 3.4.3 and 4.0 in the gcc mailing list, but I'm not entirely sure it
is.  We using the demo-arm-softfloat.sh to build the compilers.

The symptom amount to the include file

$(PATH_TO_CROSS_COMPILER)/lib/gcc/arm-softfloat-linux-gnu/3.4.1/include/
limits.h

Being different.  As far as I can tell, 0.29 "does the right thing" so
that gcc chains the inclusion of syslimits.h, but 0.38 "does the wrong
thing" so that gcc fails to chain.  I draw this conclusion from:

diff
./gcc-3.4.1-glibc-2.3.3/arm-softfloat-linux-gnu/lib/gcc/arm-softfloat-li
nux-gnu/3.4.1/include/limits.h ./arm-softfloat-linux-gnu/
gcc-3.4.1-glibc-2.3.3/lib/gcc/arm-softfloat-linux-gnu/3.4.1/include/limi
ts.h
0a1,12
> /* This administrivia gets added to the beginning of limits.h
>    if the system has its own version of limits.h.  */
>
> /* We use _GCC_LIMITS_H_ because we want this not to match
>    any macros that the system's limits.h uses for its own purposes.
*/
> #ifndef _GCC_LIMITS_H_  /* Terminated in limity.h.  */
> #define _GCC_LIMITS_H_
>
> #ifndef _LIBC_LIMITS_H_
> /* Use "..." so that we find syslimits.h only in this same directory.
*/
> #include "syslimits.h"
> #endif
103a116,125
> /* This administrivia gets added to the end of limits.h
>    if the system has its own version of limits.h.  */
>
> #else /* not _GCC_LIMITS_H_ */
>
> #ifdef _GCC_NEXT_LIMITS_H
> #include_next <limits.h>              /* recurse down to the real one
*/
> #endif
>
> #endif /* not _GCC_LIMITS_H_ */

Where ./gcc-3.4.1-glibc-2.3.3/... is the path to the 0.38 built compiler
./arm-softfloat-linux-gnu/... Is the path to the 0.29 built compiler.

Both compilers were built by unpacking the appropriate version of
crosstool, and typing

sh ./demo-arm-softfloat.sh

Without changing anything.

Any help on this would be appreciated.

Thanks,

Marty

------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com



More information about the crossgcc mailing list