[comp.lang.modula3] SRC Modula-3 V 1.6 for IBM RISC 6000

orgass+@rchland.ibm.com (Dick Orgass) (04/03/91)

Many thanks to Eric Muller for a good new compiler and for all his help
with ports to IBM platforms.

There are three minor details to fix in the 1.6 distribution for RISC 6000:

        (1)     system/runtime/M3Machine.h.IBMR2

                The definitions of PRIVATE, IMPORT and EXPORT that
        begin on line 18 should have the word volatile deleted so
        that they read as follows:

            #define PRIVATE static
            #define IMPORT  extern
            #define EXPORT

                because the system C compiler does not accept
        declarations of functions whose return value is modified by
        volatile.

                This change does not preserve the intent of these
        declarations, variables that are private, imported or
        exported should be declared volatile but the return value of
        functions should not be volatile.  However, preserving the
        original intent requires a modification of the compiler
        itself.

        (2)     system/runtime/M3Runtime.h

        Comment out the extern declarations for TC_* that begins on
        line 22 of the file so that these identifiers are not
        multiply defined.  The compiler emits a second declaration
        (with the volatile modifier) when these identifiers are
        used.  The system C compiler rejects the redeclaration.

        (3)     build util/mkexport before building the library

                The program mkexport is used to generate the export
        list for the shared libraries that come with SRC Modula-3
        including the core library.  It is not built from the top
        level make file.  Before starting the system build, compile
        mkexport as follows:

            cd util
            bsdcc -o mkexport mkexport.c

                Instructions for adding bsdcc to your system are at
        the top of file util/config.dist-IBMR2.

Known RISC 6000 bugs

With the above corrections, the distributed system passes all test cases
and runs all programs except the following:

        (1)     tests/ptests/p083

                There is an undefined symbol when the test program
        is linked; Eric reports that the link succeeds on DEC
        platforms.

        (2)     demos/pickles/Graph4Test

                This pickle test program terminates with an
        unhandled exception Pkl.Error instead of terminating
        correctly.

        (3)     tools/pp/m3pp

                The pretty printer is not working correctly.  When
        tools/pp/Main.m3 is formatted, there is an assert failure at
        line 588 of Formatter.m3; when tools/pp/Parse.i3 is
        formatted, there is an assert failure at line 913 of
        Formatter.m3.  Similar problems come up when formatting
        other Modula-3 source files.

Dick

mccalpin@perelandra.cms.udel.edu (John D. McCalpin) (04/04/91)

>>>>> On 2 Apr 91 21:08:39 GMT, orgass+@rchland.ibm.com (Dick Orgass) said:

Dick> Many thanks to Eric Muller for a good new compiler and for all
Dick> his help with ports to IBM platforms.

Dick> There are three minor details to fix in the 1.6 distribution for
Dick> RISC 6000: [ details deleted ]

I am confused about the 'cpp' in the config.dist-IBMR2 file.
It defines cpp as /usr/local/lib/cpp, which is not the one that IBM
supplies!

When util/imake runs /lib/cpp on the file util/generic, the /lib/cpp
program barfs at the line:

/**/#------------------What to do

claiming that it is an invalid # command (which is certainly is).

Is the intent of the /**/ in that line to prevent cpp from attempting
to process the line as a cpp directive?

Anyway, I also tried using the public domain cpp from volume 1 of
comp.sources.unix and got similar complaints.

Is there another cpp that I should be using?


--
John D. McCalpin			mccalpin@perelandra.cms.udel.edu
Assistant Professor			mccalpin@brahms.udel.edu
College of Marine Studies, U. Del.	J.MCCALPIN/OMNET

orgass+@rchland.ibm.com (Dick Orgass) (04/06/91)

John,

The version of cpp shipped with AIX 3.1 for RISC 6000 is a strict ANSI
cpp and doesn't get along with imake at all.  At least we haven't been
able to figure out how to do it.  The X11 product does have another
version of cpp that is supposed to get along with imake
(/usr/lpp/X11/Xamples/util/cpp).  I started Modula-3 ports before the
system was released and so I used (and still use) the 4.3 BSD cpp which
is /usr/local/lib/cpp on our systems.

I'd offer to send this cpp to you but there are license issues that will
take far longer than either of us want to wait.

Please let me know what happens either by mail or to this bboard.

Dick