From lio@hpss1.ccs.ornl.gov Mon Jan 14 11:12:33 2002 Received: from pacific-carrier-annex.mit.edu (PACIFIC-CARRIER-ANNEX.MIT.EDU [18.7.21.83]) by rt-11.mit.edu (8.9.3/8.9.3) with ESMTP id LAA18833 for ; Mon, 14 Jan 2002 11:12:32 -0500 (EST) Received: from hpss1.ccs.ornl.gov (hpss1.ccs.ornl.gov [160.91.192.125]) by pacific-carrier-annex.mit.edu (8.9.2/8.9.2) with ESMTP id LAA12016 for ; Mon, 14 Jan 2002 11:12:32 -0500 (EST) Received: (from root@localhost) by hpss1.ccs.ornl.gov (AIX4.3/8.9.3/8.9.1) id LAA16474; Mon, 14 Jan 2002 11:12:18 -0500 Message-Id: <200201141612.LAA16474@hpss1.ccs.ornl.gov> Date: Mon, 14 Jan 2002 11:12:18 -0500 From: Dan Million Reply-To: lio@hpss1.ccs.ornl.gov To: krb5-bugs@mit.edu Subject: telnetd build fails on AIX X-Send-Pr-Version: 3.99 >Number: 1043 >Category: krb5-build >Synopsis: telnetd build fails on AIX >Confidential: no >Severity: serious >Priority: medium >Responsible: tlyu >State: feedback >Class: sw-bug >Submitter-Id: unknown >Arrival-Date: Mon Jan 14 11:13:01 EST 2002 >Last-Modified: Tue Jan 29 15:34:00 EST 2002 >Originator: Dan Million >Organization: Oak Ridge National Laboratory >Release: krb5-1.2.3 >Environment: IBM RS/6000 AIX 4.3.3 System: AIX hpss1 3 4 000BF74D4C00 >Description: The ChangeLog in the src/appl/telnet/telnetd directory says that ext.h was modified to change prototypes for netprintf and other functions (entry dated 2001-08-02), but attempting to compile utility.c in this directory fails because of prototype mismatches on these functions: "utility.c", line 373.1: 1506-343 (S) Redeclaration of netprintf differs from previous declaration on line 192 of "ext.h". "utility.c", line 373.1: 1506-378 (I) Prototype for function netprintf cannot contain "..." when mixed with a nonprototype declaration. "utility.c", line 383.1: 1506-343 (S) Redeclaration of netprintf_urg differs from previous declaration on line 193 of "ext.h". "utility.c", line 383.1: 1506-378 (I) Prototype for function netprintf_urg cannot contain "..." when mixed with a nonprototype declaration. "utility.c", line 393.1: 1506-343 (S) Redeclaration of netprintf_noflush differs from previous declaration on line 194 of "ext.h". "utility.c", line 393.1: 1506-378 (I) Prototype for function netprintf_noflush cannot contain "..." when mixed with a nonprototype declaration. make: 1254-004 The error code from the last command is 1. >How-To-Repeat: Try building on an AIX system. >Fix: None determined yet. >Audit-Trail: From: Dan Million To: , Cc: Dan Million Subject: krb5-build/1043: telnetd build fails on AIX Date: Tue, 15 Jan 2002 13:56:32 -0500 (EST) As a follow-up to this problem report: The problem in compiling utility.c in the src/appl/telnet/telnetd directory seems to come from using the AIX "cc" compiler. If the "xlc" compiler command is used, the compilation succeeds. The "xlc" compiler conforms more strictly to ANSI C than "cc". HOWEVER, I have always used "cc" in the past for building Kerberos for AIX, and never had a problem. And the solution is not to simply use "xlc" for the entire build, because that causes other compilations to fail due to increased strictness in enforcing type mismatches and other glitches. Would it be better to just use gcc for the compilation? Dan Million Oak Ridge National Laboratory State-Changed-From-To: open-feedback State-Changed-By: tlyu State-Changed-When: Tue Jan 29 15:18:23 2002 State-Changed-Why: From: Tom Yu To: lio@hpss1.ccs.ornl.gov Cc: krb5-bugs@MIT.EDU Subject: Re: krb5-build/1043: telnetd build fails on AIX Date: Tue, 29 Jan 2002 15:18:17 -0500 (EST) This looks like there's a problem with AIX cc failing to define __STDC__ at all, even though it supports ANSI prototypes. This results in the observed prototype mismatch. Please try the following patch and let us know if it works. ---Tom Index: ext.h =================================================================== RCS file: /cvs/krbdev/krb5/src/appl/telnet/telnetd/ext.h,v retrieving revision 5.7.12.1 retrieving revision 5.7.12.2 diff -c -r5.7.12.1 -r5.7.12.2 *** ext.h 2001/08/02 22:05:19 5.7.12.1 --- ext.h 2002/01/18 17:58:07 5.7.12.2 *************** *** 189,199 **** willoption P((int)), wontoption P((int)); ! extern void netprintf P((const char *, ...)); ! extern void netprintf_urg P((const char *fmt, ...)); ! extern void netprintf_noflush P((const char *fmt, ...)); ! extern int netwrite P((const char *, size_t)); ! extern void netputs P((const char *)); #ifdef ENCRYPTION extern char *nclearto; --- 189,199 ---- willoption P((int)), wontoption P((int)); ! extern void netprintf(const char *, ...); ! extern void netprintf_urg(const char *fmt, ...); ! extern void netprintf_noflush(const char *fmt, ...); ! extern int netwrite(const char *, size_t); ! extern void netputs(const char *); #ifdef ENCRYPTION extern char *nclearto; From: Dan Million To: Tom Yu Cc: , Dan Million Subject: Re: krb5-build/1043: telnetd build fails on AIX Date: Tue, 29 Jan 2002 15:33:01 -0500 (EST) On Tue, 29 Jan 2002, Tom Yu wrote: > This looks like there's a problem with AIX cc failing to define > __STDC__ at all, even though it supports ANSI prototypes. This > results in the observed prototype mismatch. Please try the following > patch and let us know if it works. > > ---Tom You can run the AIX compiler with the "cc" command, which is loose about the rules, or with the "xlc" command, which implies full ANSI compliance. With "cc", __STDC__ is not defined; with "xlc" it is. I tried using both compilers on Kerberos. The problem is, if I use "xlc", the compilation bombs in other places because of type mismatches which are ignored with "cc". So I was hosed either way. However, I got around the problem by using gcc, which built all of Kerberos on AIX just fine. Up to version 1.2.3, I have always used the AIX "cc" compiler to build Kerberos. (But that was also an older version of the compiler; we recently upgraded to the latest AIX compilers.) Dan > > Index: ext.h > =================================================================== > RCS file: /cvs/krbdev/krb5/src/appl/telnet/telnetd/ext.h,v > retrieving revision 5.7.12.1 > retrieving revision 5.7.12.2 > diff -c -r5.7.12.1 -r5.7.12.2 > *** ext.h 2001/08/02 22:05:19 5.7.12.1 > --- ext.h 2002/01/18 17:58:07 5.7.12.2 > *************** > *** 189,199 **** > willoption P((int)), > wontoption P((int)); > > ! extern void netprintf P((const char *, ...)); > ! extern void netprintf_urg P((const char *fmt, ...)); > ! extern void netprintf_noflush P((const char *fmt, ...)); > ! extern int netwrite P((const char *, size_t)); > ! extern void netputs P((const char *)); > > #ifdef ENCRYPTION > extern char *nclearto; > --- 189,199 ---- > willoption P((int)), > wontoption P((int)); > > ! extern void netprintf(const char *, ...); > ! extern void netprintf_urg(const char *fmt, ...); > ! extern void netprintf_noflush(const char *fmt, ...); > ! extern int netwrite(const char *, size_t); > ! extern void netputs(const char *); > > #ifdef ENCRYPTION > extern char *nclearto; > >Unformatted: