[comp.sys.3b1] Problems compiling perl4.003 on the UNIXPC/3B1

jeff@cjsa.wa.com (Jeffery Small) (05/04/91)

When compiling perl4.003 on the 3B1 using the stock compiler (Version 3.51m),
I get the following messages for toke.o (and ttoke.o):

==============================================================================
    "toke.c", line 2333: warning: illegal member use: f_up
    "toke.c", line 2333: warning: illegal structure pointer combination, op =
    "toke.c", line 2345: warning: illegal member use: f_up
    "toke.c", line 2345: warning: illegal structure pointer combination, op =
    "toke.c", line 2453: warning: illegal member use: f_up
    "toke.c", line 2453: warning: illegal structure pointer combination, op =
    "toke.c", line 2464: warning: illegal member use: f_up
    "toke.c", line 2464: warning: illegal member use: f_type
    "toke.c", line 2517: warning: illegal member use: f_up
    "toke.c", line 2517: warning: illegal structure pointer combination, op =
==============================================================================

This turns out to be a problem with a pre-existing #define in <sys/file.h>
as follows:

== /usr/include/sys/file.h ===================================================

    struct	file
    {
	char	f_flag;
	cnt_t	f_count;	/* reference count */
	union {
		struct inode *f_uinode;	/* pointer to inode structure */
		struct file  *f_unext;	/* next entry in freelist */
	} f_up;
	off_t	f_offset;		/* read/write character pointer */
    };

    #define	f_inode		f_up.f_uinode
    #define	f_next		f_up.f_unext
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
==============================================================================

The perl structure formcmd (FCMD) contains a f_next member and this is being
replaced by "f_up.unext" with obviously bad results.  Although the program
does compile, it is failing on the  comp/decl.t  and  op/write.t  tests -
and I am assuming that these problem are caused by the above situation.

Before I hack things up I wanted to see if there was a standard patch or
fix for this condition?  Have others gotten perl to compile on this platform
without problems?  Are you including sys/file.h in your config.sh?

Thanks for any help you may be able to offer.
--
Jeff Small                     C. Jeffery Small & Associates    (206) 232-3338
uunet!nwnexus!cjsa!jeff        7000 E Mercer Way,  Mercer Island, WA     98040

rmfowler@texrex.uucp (Rex Fowler) (05/05/91)

In article <1991May3.183553.3605@cjsa.wa.com> jeff@cjsa.wa.com (Jeffery Small) writes:
>When compiling perl4.003 on the 3B1 using the stock compiler (Version 3.51m),
>I get the following messages for toke.o (and ttoke.o):
>
>    "toke.c", line 2517: warning: illegal member use: f_up
>.
>.<lots of "toke.c" errors deleted>
>.
>    "toke.c", line 2517: warning: illegal structure pointer combination, op =
>
>This turns out to be a problem with a pre-existing #define in <sys/file.h>
>as follows:
>

I am using gcc and i did not include file.h, try fcntl.h instead.  Configure
script did it for me.  The only things I've changed was putting 
optimize='-g" or optimize="" in cflags.SH for eval.c teval.c toke.c ttoke.c


>
>Although the program does compile, it is failing ....

How did you get teval.c to compile?  I've tried the stock compiler AND gcc
with and without optimization, but it turns out that the assembly code
just won't assemble with as.  (branch offset to remote).  I've even tried 
"as -n".  I'm waiting on someone to tell me how to use the GNU assembler (gas) 
to see if that might make a difference.  The comment in eval.c from patch1
makes me believe that Larry fixed this problem for *most* machines.

>
>Before I hack things up I wanted to see if there was a standard patch or
>fix for this condition?  Have others gotten perl to compile on this platform
>without problems?  Are you including sys/file.h in your config.sh?

I wouldn't hack it up yet.  If you don't have gcc, get it.  It got me through 
the regular perl files fine, but now the tainted teval.c is stopping me.

>Thanks for any help you may be able to offer.
>--
>Jeff Small                     C. Jeffery Small & Associates    (206) 232-3338
>uunet!nwnexus!cjsa!jeff        7000 E Mercer Way,  Mercer Island, WA     98040


-- 
Rex Fowler <rmfowler@texrex.cirr.com>
UUCP:  egsner!texrex!rmfowler

jeff@cjsa.wa.com (Jeffery Small) (05/05/91)

Thanks to everyone who responded.  As it turned out, the easy solution
was to eliminate references to <sys/file.h> and include <fcntl.h>.  Perl
now compiles and tests out AOK.

The reason the difficulty arose in the first place is that this machine
has the WIN 3B TCP/IP software installed and this adds a [half] mixed bag
of goodies that is just enough to totally confuse the Configure script.  I
had managed to handcraft config.sh back into pretty good shape and this
one last modification finally did the trick.
--
Jeff Small                     C. Jeffery Small & Associates    (206) 232-3338
uunet!nwnexus!cjsa!jeff        7000 E Mercer Way,  Mercer Island, WA     98040

cals@cals01.NEWPORT.RI.US (Charles A. Sefranek) (05/12/91)

In article <1991May3.183553.3605@cjsa.wa.com> jeff@cjsa.wa.com (Jeffery Small) writes:
>When compiling perl4.003 on the 3B1 using the stock compiler (Version 3.51m),
>I get the following messages for toke.o (and ttoke.o):
>
 [ messages deleted ]...
>
>This turns out to be a problem with a pre-existing #define in <sys/file.h>
>as follows:
>
 [ more deleted ]...
>
>Before I hack things up I wanted to see if there was a standard patch or
>fix for this condition?  Have others gotten perl to compile on this platform
>without problems?  Are you including sys/file.h in your config.sh?
>

I successfully built and installed perl 4.0.3 using both the stock /bin/cc
and the ccc tool (snarfed from the net) to include shared libraries.
The log from my configure run states that Larry's configure program decided
*not* to include <sys/file.h>. 

Here's what I did:

 For stock /bin/cc (no shared libraries):

 1) Take the defaults for all configure questions (don't use a previous
    config.sh run!!). Make sure you leave the compiler definition as 'cc'.
    I even left the -O optimizer flag alone - it worked OK.
 2) At the shell escape, edit config.sh as follows:
    a) Change d_voidsig to undef
    b) Change d_tosignal to int
 3) Complete the make process per instructions. (It took a *LONG* time
    to compile, more than 2 hours!!)

 For shared libraries:

 1) Again take the defaults for all configure questions, EXCEPT:
    a) Where it asks about additional libraries, don't include -lmalloc
       My run had -lndir and -lm
    Don't try to use /bin/ccc for the compiler - Configure blows up on it.
 2) At the shell escape, edit config.sh as follows:
    a) Change d_voidsig to undef
    b) Change d_tosignal to int
    c) Change cc to /bin/ccc
 3) Complete the make process per instructions. (It still takes a *LONG* time
    to compile !!).

Your mileage may vary depending on your machines configuration.  I'm using
a fairly standard 3b1, 2 Meg RAM, 67 Meg HD with Doug Gwen's directory
library routines installed.
-- 
--  
 Charlie Sefranek
Home: cals@cals01.NEWPORT.RI.US		 Work: c4s@sgfb.ssd.ray.com 
  {I heard Kuwait is burning the midnight oil, but this is ridiculous!}

dke@ux.acs.umn.edu (David K. Eggen) (05/16/91)

Yipes!
and to think I was going to try to start complieing perl today!
does anyone have a binary I could ftp?
 :)

dave@galaxia.Newport.RI.US (David H. Brierley) (05/20/91)

In article <3940@ux.acs.umn.edu> dke@ux.acs.umn.edu (David K. Eggen) writes:
>and to think I was going to try to start complieing perl today!
>does anyone have a binary I could ftp?

Perl version 4.0 patch level 3 binaries for the 3b1 are available on osu-cis.
For ftp access use the name "cheops.cis.ohio-state.edu".  The file name is
"att7300/languages/perl-bin.tar.Z".  For uucp access you must preceed the
file name with "~uucp/" and for ftp access you must preceed it with "pub/".
I suggest you also get a copy of the files "README.Z" and "README.quick.Z"
from the att7300 directory.
-- 
David H. Brierley
Home: dave@galaxia.newport.ri.us; Work: dhb@quahog.ssd.ray.com
Send comp.sources.3b1 submissions to comp-sources-3b1@galaxia.newport.ri.us
%% Can I be excused, my brain is full. **