Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!samsung!munnari.oz.au!ariel!tauon.ph.unimelb.edu.au From: rab@tauon.ph.unimelb.edu.au (Richard Alan Brown) Newsgroups: comp.unix.aix Subject: Mods to make perl under AIX 3.01 - and possible compiler bug Message-ID: <406@ariel.ucs.unimelb.edu.au> Date: 5 Feb 91 06:04:37 GMT Sender: duty@ariel.ucs.unimelb.edu.au Organization: Information Technology Services, University of Melbourne Lines: 47 The following modifications needed to be made to the perl (Release 3 patchlevel 28) source to compile on an IBM RS/6000 running AIX 3.01: I am posting this: (a) for your information (b) for your ideas - particularly about problem 4. below. 1. in x2p/util.c the AIX xlc compiler throws up on: #ifdef undef ...it regards 'undef' as a illegal keyword I changed `undef' to `UNDEF' 2. in perl.h can't redefine sprintf(). Enclose within #ifndef AIX / #endif pair (and add -DAIX to CFLAGS in the makefile) 3. in doio.c In the conditional compilation determined by PWCLASS, the code assumes that if pw_class is not present, then pw_comment is. This is not true for AIX. I have set it to pw_gecos for want of a better idea. 4. in eval.c The compiler complains about multiple instances of the `case' 32 in the big switch statement. This appears to be a bug in the compiler, since inspection of the preprocessor output confirms that there is only one instance of the case '32'. Changing the definition of O_COMPLEMENT from 32 to 247 made the problem disappear. With the above mods, perl compiles and links. Doing 'make test' shows that this version of perl fails the following tests: io.pipe test 1 op.exec test 8 the others are ok. Since i am a perl novice, i haven't looked closely at this. rab ------------------------------------------------------------------------ Richard Brown | E-mail: rab@tauon.ph.unimelb.EDU.AU School of Physics | Phone : +61 3 344 5081 University of Melbourne | Fax : +61 3 347 4783 Parkville Victoria AUSTRALIA 3052 | Telex : AA35185