delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/2000/07/21/13:06:58

Sender: bkorb AT sco DOT COM
Message-ID: <39788322.2137DAA9@sco.com>
Date: Fri, 21 Jul 2000 10:06:42 -0700
From: Bruce Korb <bkorb AT sco DOT COM>
Organization: Santa Cruz Operations
X-Mailer: Mozilla 4.7 [en] (X11; I; SCO_SV 3.2 i386)
X-Accept-Language: en
MIME-Version: 1.0
To: "Kaveh R. Ghazi" <ghazi AT caip DOT rutgers DOT edu>, GNU Compiler <gcc AT gcc DOT gnu DOT org>,
djgpp-workers AT delorie DOT com
CC: bkorb AT gnu DOT org, gcc-bugs AT gcc DOT gnu DOT org
Subject: Re: fixincl.x: Undeclared identifier SIZE_TYPE.
References: <200007211556 DOT LAA29942 AT caip DOT rutgers DOT edu>
Reply-To: djgpp-workers AT delorie DOT com

"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 AT gnu DOT 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?

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019