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]
Other format: [Raw text]

Re: 3.3.4 build report: powerpc-ibm-aix4.3.3.0


Joe Buck <Joe.Buck@synopsys.COM> writes:

| On Thu, Jun 03, 2004 at 09:20:01PM +0200, Gabriel Dos Reis wrote:
| > Joe Buck <Joe.Buck@synopsys.COM> writes:
| > 
| > | I built 3.3.4 for AIX 4.3.3 (powerpc-ibm-aix4.3.3.0), using
| > | the vendor cc, as, and ld.  Results are at
| > | http://gcc.gnu.org/ml/gcc-testresults/2004-06/msg00101.html .
| > 
| > Thanks for the report.
| > 
| > | Java doesn't build on this platform.
| > | 
| > | I had to use --disable-nls to get a successful build.  Without this flag,
| > | I got the following failure in the gcc/intl directory:
| > | 
| > | cc -c -DIN_GCC -DLOCALEDIR=\"/u/jbuck/cvs.aix/3.3.4-pre/share/locale\" -DLOCALE_ALIAS_PATH=\"/u/jbuck/cvs.aix/3.3.4-pre/share/locale\" -DLIBDIR=\"/u/jbuck/cvs.aix/3.3.4-pre/lib\" -DHAVE_CONFIG_H -I.. -I. -I/remote/dtg103/jbuck/gnu/src/gcc-3.3.4-20040530/gcc/intl -I/remote/dtg103/jbuck/gnu/src/gcc-3.3.4-20040530/gcc -I/remote/dtg103/jbuck/gnu/src/gcc-3.3.4-20040530/gcc/config -I/remote/dtg103/jbuck/gnu/src/gcc-3.3.4-20040530/gcc/../include  -g    /remote/dtg103/jbuck/gnu/src/gcc-3.3.4-20040530/gcc/intl/plural.c -o plural.o
| > | "plural.y", line 264.1: 1506-343 (S) Redeclaration of __gettextlex differs from previous declaration on line 73 of "plural.y".
| > | "plural.y", line 264.1: 1506-381 (I) The type "const unsigned char**" of parameter 2 in the prototype declaration is not compatible with the corresponding parameter type "unsigned char**" in the nonprototype declaration.
| 
| > Interesting.  From intl/ChangeLog, files in gcc/intl have not been
| > changed since 2003-05-13, the release of 3.3.0.
| 
| It turns out that this is an AIX cc bug, I believe.
| 
| At line 418 we have
| 
| static int yylex PARAMS ((YYSTYPE *lval, const char **pexp));
| 
| and at line 1177 we have
| 
| static int
| yylex (lval, pexp)
|      YYSTYPE *lval;
|      const char **pexp;
| {
| ....

This is even more interesting:  The diagnostic message was talking
about "previous declaration on line 73".  I suppose that is another
bug in the system compiler?

| Note that the type of pexp is the same.  There is no "unsigned"; perhaps
| the compiler is inserting that because char defaults to unsigned, but even
| then it seems wrong.  But AIX cc is acting like the "const" in the
| non-prototype function is not there!
| 
| I changed the yylex definition to use a prototype, and AIX cc then
| happily built it.

More and more interesting.

| What are the rules on K&R-style definitions?  Is const supposed to be
| ignored in this context?  That can't be right.

There was no "const" in K+R.  I just had a quick look at gcc/system.h
and discovered that we don't 

    #define const  /* nothing */

for K+R compiler, but we should.  And I believe that should have been
done somewhere because otherwise we could not have been using K+R
oompilers :-/

-- Gaby


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