                GNU/960  Rel 4.6  PATCH DATE:   February 15, 1995

02/15   The February 15th patches were installed on aurora. These patches fix
        a bug in gcc960, and a bug in gas960. 

02/14   The February 14th patches were installed on aurora. These patches fix
        two bugs in gcc960, one bug in exe960 and added enhancements  to gdb960
    	and exe960.

01/27   The January 16th patches were installed on aurora. These patches fix
        three bugs in gcc960, three bugs in gld960, two bugs in libafp, a bug
        in the include files and a bug in the include/sys files.

This package contains
                                
        6 GCC960 bug fixes,
    	1 GAS960 bug fix,
	1 GDB960 enhancement,
        3 GLD960 bug fixes,
        2 LIBAFP bug fixes,
	1 EXE960 bug fix,
	1 EXE960 enhancement,
    	1 HDIL enhancement,
    	1 HDILCOMM enhancement,
        1 INCLUDE bug fix and
        1 INCLUDE/SYS bug fix


GCC960  6 bug fixes.
Current version 4.6.1012

    o   Source files that changed - calls.c expr.c expr.h function.c i960.c
    	    	                    i960.h                      ( DCS #1665 )
                                                                ( DCS #1666 )
                                                                ( DCS #1667 )

            Fixed code generation bugs when parameters are passed and
            various size, aligned, and endian structs returned.
               
    o   Source files that changed - rtl.h rtl.c i_sblock.c 	( DCS #1678 )

            Fixed abnormal abort due to the superblock formation not
    	    copying insns for inline asm functions correctly when 
    	    duplicating code to form a superblock.

    o   Source files that changed - c-decl.c 	    	    	( DCS #1679 )

            A bug was fixed where the compiler was not issuing a warning
    	    for incomplete types of local variables.  This could cause
    	    erroneous code that will not run properly. 

    o   Source files that changed - i_shadow.c 	    	    	( DCS #1680 )

            Fixed a bug where the shadower was inadvertantly loading
    	    the operands of an asm into registers, when the constraints
    	    specified memory only.
    	    

GAS960  1 bug fix.
Current version 4.6.001

    o   Source files that changed - expr.c 	    	    	( DCS #1681 )

	    A bug was fixed where certain cases of difference expressions
    	    in the form: lda (x-8-y)(ip),g0 were getting mis-assembled.  
    	        	    

GDB960  1 enhancement.
Current version 4.6.001

    o   Source files that changed - Makefile remon960.c

	    gdb960 now has the capability to perform parallel downloads on 
    	    Unix.  Please see the unix_par.txt file included in the
    	    hdilcomm portion of this patch for more information on this.
    	    (please see below for special installation instructions).
 
     
GLD960  3 bug fixes.
Current version 4.6.003

    o   Source files that changed - ldlang.c ldlang.h ldsplit.c
                                                                ( DCS #1640 )

            A bug was fixed where the linker was freeing memory that
            was subsequently referenced.

    o   Source file that changed  - ldlang.c                    ( DCS #1659 )
                                                                ( DCS #1660 )

            If an output section contains ONLY: LONG() or . += expressions,
            it was output as an empty bss section without filler characters.
            The fix was to make the section contain the filler characters.

LIBAFP  2 bug fixes.
Current version 4.6.002

    o   Source file that changed - remsf3.as                    ( DCS #1670 )

            A bug was fixed where incorrect results were generated by
            the function __remsf3 for some denormalized operands.
            (please see below for special installation instructions).

    o   Source files that changed - logbdf2.as logbsf2.as

            A bug was fixed where incorrect results were being generated
            when using denormalized operands.
            (please see below for special installation instructions).

EXE960  1 bug fix.

    o   Source file that changed - exe960.c Makefile makefile.msc
    	
    	    A DOS-only bug was fixed where the exe960 distributed 
    	    with the separate mon960 release (*not* the one distributed
    	    with the whole GNU_2.4 release) would not connect under all 
    	    baud rates under windows, and invalidate it's stack under DOS. 
            (please see below for special building instructions).

EXE960 1 enhancement.

    o   Source file that changed - Makefile exe960.c makefile.msc

            exe960 now has the capability to perform parallel downloads on 
    	    Unix.  Please see the unix_par.txt file included in the
    	    hdilcomm portion of this patch for more information on this.
    	    (please see below for special building instructions).

HDIL 1 enhancement.

    o   Source file that changed - download.c memcache.c makefile.msc

       	    Enhancements to allow gdb960 and exe960 to be able to perform 
    	    parallel downloads on Unix.  Please see the unix_par.txt file 
    	    included in the hdilcomm portion of this patch for more 
    	    information on this.  Also, allows for either endian downloads
	    regardless of host byte-ordering.
    	    (please see below for special building instructions).

HDILCOMM 1 enhancement.

    o   Source file that changed - Makefile autobaud.c dos_io.c 
    	    	    	    	    intvects.asm makefile.msc 
    	    	    	    	    unix_io.c unix_par.txt

            Enhancements to allow gdb960 and exe960 to be able to perform 
    	    parallel downloads on Unix.  Please see the unix_par.txt file 
    	    included in the hdilcomm portion of this patch for more 
    	    information on this.  Also, allows for either endian downloads
	    regardless of host byte-ordering.
    	    (please see below for special building instructions).

INCLUDE 1 bug fix.

    o   Source file that changed - __macros.h                   ( DCS #1617 )

            Fixed a bug where the stdarg.h and varargs.h macros did
            not work correctly when compiled with big-endian.

INCLUDE/SYS 1 bug fix.

    o   Source files that changed - icache.h dcache.h timer.h   ( DCS #1648 )

            The bodies of the headers for these files were not being
            included if the -AHD option was used on the command line.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

How to get GNU/960 Rel 4.6 patches from the ftp machine:

        ftp aurora.intel.com   (Note: The IP address is 143.185.65.2)
        login: anonymous
        passwd: use your email address

        You are now on the ftp machine.

        ++++++++++++++++++++++++++++++++++++++++++++++++
        ++++++++++     for DOS customers      ++++++++++
        ++++++++++++++++++++++++++++++++++++++++++++++++
        /* these patches are typically delayed somewhat
           from the availability of the Unix patches */

        cd /pub/i960/gnu/4.6_patches/DOS

        binary
        get README.patches      ( this file )
        get patFeb15.exe	(referred to generically as patMmmdd.exe)
        get justlibs.exe
        bye

        NOTE:   The 'justlibs.exe' file is a comprehensive self-extracting
            	archive containing *all* the library updates since the release.
            	The 'patFeb15.exe' file is a comprehensive self-extracting
            	archive containing *all* the DOS-executables patches since the
            	release.

        The following is a manual process. It assumes that you will be
        *replacing* the original distribution files and provides
        instructions accordingly. We *strongly* recommend that you archive
        the original files prior to installing these patches.

        Some users may have installed their original distribution of the
        tools in a directory other than the Intel default of C:\INTEL960.
        Similarly, some users may prefer to maintain their original
        distribution intact and executable, rather than archive it, such
        that these patches actually get placed in a *new* directory and
        the %n960BASE% variable and PATH get redefined on-the-fly to point
        to either the original distribution or the patched tools.
	Due to the variety of conventions each user follows in managing
	their machine a generic all-encompassing batch file to perform
	this upgrade can not be generated. Instead, a generic batch file
        is provided and the user is expected to edit it as necessary.

        On your machine:

                /* CTOOLS customers should substitute I960BASE
                   for the following occurances of G960BASE. */

        NOTE:  When extracting the self-extracting archives, please make
        sure that you invoke EACH archive with the '-d' option to ensure
        that any embedded directory structures are maintained. For example:

                C:> justlibs -d

        maintains the directory structure embedded in the library archive.

        For the library updates:

        Files extracted from the 'justlibs.exe' archive should be moved
        to the corresponding 'lib' directory subordinate to %G960BASE%.

        For the executables patches:

        All executable files (.EXP) extracted from the archive must be
        bound with the PharLap extender, to form .EXE files, prior to use.
        Use the generic batch file (PATCH960.BAT) provided by Intel with
        each patch distribution to accomplish this.  Only PharLap extender
        versions 5.0, 6.0, 6.1, and 7.0 are supported for the GNU/960 and
        CTOOLS960 R4.6 releases.

        a) Create some temporary directory on your PC and 'cd' there. For
           the sake of this description, we'll call it   D:\FOO

             C:>  mkdir D:\FOO
             C:>  D:
             C:>  cd D:\FOO

        b) COPY or RENAME the patched-executables file to the current
           directory from wherever you were on your PC when you
           downloaded it from 'aurora'.

        c) Execute the self-extracting archive of the executables patches
           on DOS (remember to use the -d option!) from the current
           directory.  For example:

                        patMmmdd.exe -d

        d) From this directory, execute the PATCH960.BAT file.
           This batch file requires you to specify as argument #1 whether
           these patches are to be used in their CTOOLS or GNU incarnation,
           and as argument #2 you must identify the path to the PharLap
           tools on your PC.  For example:

                        PATCH960 gnu c:\tnt
        
           will build new DOS executables for all patched files contained
           in this patch, assuming that the PharLap tools were previously
           loaded in the directory c:\tnt. The new executables will be
           found in the directories    D:\FOO\BIN    and    D:\FOO\LIB

        e) COPY or RENAME the resultant .EXE files in these subdirectories
           to their respective directories subordinate to %G960BASE%, ie.
           the 'CC1.EXE' and the 'CPP.EXE' files should be placed in
           %G960BASE%\lib, and the remainder of the .EXE files should be
           placed in %G960BASE%\bin.

        f) Preserve the executable patches in their .EXP form as you see fit.
           You can always re-extract them from the self-extracting archive
           if you need to recreate the .EXE files. Note that the production
           release .EXP files were not over-written using the above process,
           so the production release .EXE files can always be recreated as
           well using the BINDEXPS.BAT file.

        ++++++++++++++++++++++++++++++++++++++++++++++++
        ++++++++++     for Unix customers     ++++++++++
        ++++++++++++++++++++++++++++++++++++++++++++++++

        cd /pub/i960/gnu/4.6_patches
        binary

        get README.patches      ( this file )
        get patches.tar.Z       ( the patches )

The compressed tarfile is:  	1107281 Feb 14 09:31 patches.tar.Z   
and the uncompressed file is: 	2867200	Feb 14 09:33 patches.tar

For the patches:

The gcc960 files have been packaged as follows:

        TARG=gcc
        FILES='i_minrev calls.c expr.c expr.h function.c i960.c i960.h rtl.h 
		rtl.c i_sblock.c c-decl.c i_shadow.c'

        for i in $FILES; do
                cp ../common/$i .
        done

        tar -vcf $TARG.tar $FILES

the other files were built with:

    	gas960:	    	    	TARG = gas
        gdb960:                 TARG = gdb
        gld960:                 TARG = gld
        libafp:                 TARG = libafp
    	exe960:	    	    	TARG = exe
    	hdil:	    	    	TARG = hdil
    	hdilcomm:   	    	TARG = hdilcomm
        include:                TARG = inc 
        include/sys:            TARG = inc_sys
        lib_i960:               TARG = lib

To unpackage these incremental patches do the following:

        uncompress patches.tar.Z
        tar xvf patches.tar

        You will see something as follows:

    	    x gas.tar, 37376 bytes, 73 tape blocks
    	    x gcc.tar, 1179648 bytes, 2304 tape blocks
    	    x gld.tar, 132608 bytes, 259 tape blocks
    	    x inc_sys.tar, 16384 bytes, 32 tape blocks
    	    x lib.tar, 1206272 bytes, 2356 tape blocks
    	    x libafp.tar, 26624 bytes, 52 tape blocks
    	    x inc.tar, 8192 bytes, 16 tape blocks
    	    x exe.tar, 48640 bytes, 95 tape blocks
    	    x gdb.tar, 78336 bytes, 153 tape blocks
    	    x hdil.tar, 36864 bytes, 72 tape blocks
    	    x hdilcomm.tar, 87040 bytes, 170 tape blocks

Now do the following:

        tar xvf gcc.tar

        You will see something as follows:

    	    x i_minrev, 5 bytes, 1 tape blocks
    	    x calls.c, 99305 bytes, 194 tape blocks
    	    x expr.c, 259157 bytes, 507 tape blocks
    	    x expr.h, 30144 bytes, 59 tape blocks
    	    x function.c, 160379 bytes, 314 tape blocks
    	    x i960.c, 185234 bytes, 362 tape blocks
    	    x i960.h, 72251 bytes, 142 tape blocks
    	    x rtl.h, 38237 bytes, 75 tape blocks
    	    x rtl.c, 25900 bytes, 51 tape blocks
    	    x i_sblock.c, 31567 bytes, 62 tape blocks
    	    x c-decl.c, 212952 bytes, 416 tape blocks
    	    x i_shadow.c, 53906 bytes, 106 tape blocks

Place the resulting source files in your $G960ROOT/src/gcc960/common directory.

Repeat the process for gas960, gdb960, gld960, exe960, hdil, and hdilcomm being 
careful about files with the same names in the different tar files.

For all tools with Makefiles supplied in their patch, you'll have to
do a 'mkmake -h $HOST tool' from the G960ROOT level (this script resides in 
$G960ROOT/admin).  You can run the script without any arguments to get a help
listing.  It will rebuild the makefiles in the specified $HOST directory.

Place the files from the inc.tar directory into $G960ROOT/include, and
the files from inc_sys.tar into $G960ROOT/include/sys respectively.

The 'lib.tar' file contains the following pre-built libraries:

            x libbout/, 0 bytes, 0 tape blocks
            x libbout/libhgca.a, 42410 bytes, 83 tape blocks
            x libbout/libhgjx.a, 41902 bytes, 82 tape blocks
            x libbout/libhgka.a, 39844 bytes, 78 tape blocks
            x libcoff/, 0 bytes, 0 tape blocks
            x libcoff/libhgca.a, 67104 bytes, 132 tape blocks
            x libcoff/libhgjx.a, 66596 bytes, 131 tape blocks
            x libcoff/libhgka.a, 63552 bytes, 125 tape blocks
            x libcfbe/, 0 bytes, 0 tape blocks
            x libcfbe/crt960g.o, 1229 bytes, 3 tape blocks
            x libcfbe/crtning.o, 1510 bytes, 3 tape blocks
            x libcfbe/libcgca.a, 160816 bytes, 315 tape blocks
            x libcfbe/libepcxg.a, 12700 bytes, 25 tape blocks
            x libcfbe/libevcag.a, 13600 bytes, 27 tape blocks
            x libcfbe/libfpg.a, 24774 bytes, 49 tape blocks
            x libcfbe/libhgca.a, 67104 bytes, 132 tape blocks
            x libcfbe/libhgjx.a, 66596 bytes, 131 tape blocks
            x libcfbe/libhisg.a, 4521 bytes, 9 tape blocks
            x libcfbe/libhkg.a, 8638 bytes, 17 tape blocks
            x libcfbe/libllg.a, 28536 bytes, 56 tape blocks
            x libcfbe/libmgca.a, 91948 bytes, 180 tape blocks
            x libcfbe/libmong.a, 6054 bytes, 12 tape blocks
            x libcfbe/libmstub.a, 3852 bytes, 8 tape blocks
            x libcfbe/libning.a, 19978 bytes, 40 tape blocks
            x libcfbe/libqfg.a, 2468 bytes, 5 tape blocks
            x libcfbe/libqg.a, 1740 bytes, 4 tape blocks
            x libcfbe/libromg.a, 855 bytes, 2 tape blocks
            x libcfbe/libtcg.a, 10364 bytes, 21 tape blocks
            x libhca.a, 67104 bytes, 132 tape blocks
            x libhca_b.a, 67104 bytes, 132 tape blocks
            x libhjx.a, 66596 bytes, 131 tape blocks
            x libhjx_b.a, 66596 bytes, 131 tape blocks
            x libhka.a, 63552 bytes, 125 tape blocks

Notice that this tarfile contains the subdirectories libbout, libcoff
and libcfbe.  Files in these subdirectories should be placed in the
$G960ROOT/lib_i960/{libbout, libcoff, libcfbe} directories, respectively.
Place all other resulting files in the $G960ROOT/lib_i960 directory.

The 'libafp.tar' file contains the source code changes for the above libafp
libraries in the 'lib.tar' file. To install these, place the resulting files
in the $G960ROOT/src/lib/libafp/common directory respectively.  If you have
installed the 'lib' target correctly, from the 'lib.tar' file, no new build
will be necessary.

The HOST environment variable must be set before running the toplevel makefile.

        HOST is the host type.

        For example, if you will be building the tools on a sun4, then
        HOST=sun4.

        NOTE:   Intel only supports these tools, and the rebuilding thereof
                from source, on specific hosts. Additionally, only the
                "native" cc compiler for each host is supported, ie. that
                compiler which is typically provided with the host or is
                available for purchase separately from the host vendor.
                Intel does not support rebuilding from source using a gcc
                compiler, nor a third party C or C++ compiler.

Now build and run the toplevel makefile.

        cd $G960ROOT  (This is the toplevel directory for the tools.)
        admin/mkmake -t -h $HOST
        make HOST=$HOST TARGET > make.log 2>&1 &

Where "TARGET" is the desired target.  See the toplevel Makefile for a
complete list of targets.  For example, to build the entire GNU/960 release
(tools and libraries), you would invoke the toplevel Makefile with the 'all'
target.  i.e.:

        make HOST=$HOST all > make.log 2>&1 &

As always, making a copy of your old source files as a backup is a good idea.

For more information about the toplevel makefile and building the tools, see
the readme.unix file in the $G960ROOT/admin directory.

If you have any questions you can send mail to 960tools@intel.com.

GNU/960 customer support
960tools@intel.com
