[comp.soft-sys.andrew] compiling patch10 on sun4, sunos4.1.1

njw@doc.imperial.ac.uk (N J Williams) (06/25/91)

Well, here we go.
When compiling patch10 on a sun4 machine which is running sunos 4.1.1:
    building (dependInstall)
    (/a/beauty/home/theory/andrew/sun4/build/overhead/class/machdep/sun_s
    parc)
the file global.o is not created in shared library form (at least, it is
not placed in the 'shared' directory.

However, later on:
    building (dependInstall)
    (/a/beauty/home/theory/andrew/sun4/build/overhead/class/lib)
    [...]
    ld -assert pure-text -o libclass.a shared/class.o classproc.o
    ../machdep/machine/entry.o \
        ../machdep/machine/shared/doload.o shared/mapping.o \
        shared/classind.o ../machdep/machine/shared/globals.o
    ld: ../machdep/machine/shared/globals.o: No such file or directory
    *** Error code 4

This ain't good.  Thinking that maybe it isn't supposed to be in
'shared' (as entry.o is not), I changed the local Makefile to reference
../machdep/machine/globals.o.  This failed badly with the assert
pure-text complaining. I assume this means that it needs munging into
position independent code.

Looking further into this, the directory ../machdep/machine is a symlink
to ../machdep/sun_sparc. This *should* be sun_sparc_41 surely... In the
Makefile, SYS_OS_ARCH=sun_sparc_41 is set from the macro file, but this
is overriden to be sun_sparc later on:

    # End of what comes from the allsys.mcr file
    #

            MALLOCALIGNMENT = 8

            PICFLAG = -pic

            SHLIBLDFLAGS = -assert pure-text

    XUTILDIR=/usr/bin/X11

            SYSTEM_H_FILE = sun4_41/system.h

            SYS_IDENT = sun4_41
            SYS_OS_ARCH = sun_sparc

    #
    # The following is from the allsys.mcr file, and may be over-ridden
[...]

I removed this second definition of SYS_OS_ARCH, redid the makefiles and
redid the make of the machdep and lib directories and it all hummed
along happily.
So... somehow, this second (and wrong) definition is creeping in from
somewhere. I dunno how. Any clues?

Nick.

(BTW, same directory (class/lib):
"class.c", line 594: warning: illegal pointer combination
I don't know how religious ITC is about removing these...)

Nick Williams, Dept of Computing, Imperial College, London, UK.

gk5g+@ANDREW.CMU.EDU (Gary Keim) (06/25/91)

Excerpts from misc: 24-Jun-91 compiling patch10 on sun4, .. N J
Williams@doc.imperia (2092+0)

> Looking further into this, the directory ../machdep/machine is a symlink
> to ../machdep/sun_sparc. This *should* be sun_sparc_41 surely... In the
> Makefile, SYS_OS_ARCH=sun_sparc_41 is set from the macro file, but this
> is overriden to be sun_sparc later on:

Yes, it is overriden by your site files.  I believe all of what follows
came from your site.mcr file:

XUTILDIR=/usr/bin/X11

        SYSTEM_H_FILE = sun4_41/system.h

        SYS_IDENT = sun4_41
        SYS_OS_ARCH = sun_sparc

The reason I think this is because if you look at the last few macros
defined by sun4_41/system.mcr you see that they are:

        	MALLOCALIGNMENT = 8
	PICFLAG = -pic
	SHLIBLDFLAGS = -assert pure-text

Can you send me your site files?  I'd like to figure this out.

Gary Keim
ATK Group