This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: fixincl.x: Undeclared identifier SIZE_TYPE.


"Kaveh R. Ghazi" wrote:
> 
> Bruce,
> 
>         When I bootstrap gcc on powerpc-ibm-aix4.1.4.0 I get the
> following in stage1:
> 
>  > "../../../egcs-CVS20000721/gcc/fixinc/fixincl.x", line 5810.24:
>  > 1506-045 (S) Undeclared identifier SIZE_TYPE.
>  > make[3]: *** [fixincl.o] Error 1
> 
>         I believe it was broken by this patch:
> 
>  > 2000-07-20  Bruce Korb  <bkorb@gnu.org>
> 
> Can you offer any assistance?

Well, as I read the source, this entry in fixlib.h:

  #include "tm.h"

sould read the generated file 'tm.h' which will #include the
file that should define SIZE_TYPE.  So, your breakage is
curious to me.  However, since reading more
messages, it seems that in my fix output I can replace:

> #ifndef __SIZE_TYPE__
> #define __SIZE_TYPE__  unsigned int
> #endif
> #if !defined(_GCC_SIZE_T)
> #define _GCC_SIZE_T
> typedef __SIZE_TYPE__ size_t;
> #endif

with:

> #if !defined(_GCC_SIZE_T)
> #define _GCC_SIZE_T
> typedef __SIZE_TYPE__ size_t;
> #endif

because I can rely on GCC defining __SIZE_TYPE__.  Further, at some
point eventually, we will be able to rely on some derivitive of
manual labor or fixincludes #defin-ing _GCC_SIZE_T whereever size_t
winds up getting typedefed.

One thing certain, however, is that *if* we keep the "#ifndef __SIZE_TYPE__"
text in the output, then the following #define needs to be platform specific.
(Remember that only GCC should ever see the output from fixincludes.
My current understanding is that in some way or another, GCC will
always have some pre-definition for __SIZE_TYPE__.)



Anyway, the possible solutions:

1.  Ensure that every port has #define-d strings for SIZE_TYPE, PTRDIFF_TYPE
    and WCHAR_TYPE in their config/???/???.h file.
2.  Rely on the __XXX_TYPE__ being defined when the fixincluded files
    are sourced by GCC
3.  Go back to a pre-defined, static string for all platforms
    for the #define of __*_TYPE__

Which?  Something else?

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]