summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog.1127
-rw-r--r--gcc/INSTALL6
-rw-r--r--gcc/NEWS22
-rw-r--r--gcc/SERVICE26
-rw-r--r--gcc/collect2.c2
-rw-r--r--gcc/config/alpha/vms.h5
-rw-r--r--gcc/crtstuff.c3
-rw-r--r--gcc/install.texi16
-rw-r--r--gcc/make-cc1.com15
-rw-r--r--gcc/make-cccp.com7
-rw-r--r--gcc/make-gcc.com75
-rw-r--r--gcc/make-l2.com106
12 files changed, 209 insertions, 101 deletions
diff --git a/gcc/ChangeLog.11 b/gcc/ChangeLog.11
index 2eccf3e2c96..571a63c35c8 100644
--- a/gcc/ChangeLog.11
+++ b/gcc/ChangeLog.11
@@ -1,7 +1,32 @@
-Fri Dec 5 07:29:26 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+Sun Dec 7 18:24:30 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* Version 2.8.0 released.
+Sun Dec 7 09:42:05 1997 Pat Rankin <rankin@eql.caltech.edu>
+
+ * make-gcc.com (@make-l2): Pass along any command line arguments.
+ * make-l2.com: Add latent support to compile cp/inc/* if `cc1plus'
+ is specified [currently disabled].
+ * make-cc1.com: When building with GNU C, use -O2.
+ * make-cccp.com: Likewise.
+
+Sun Dec 7 06:56:48 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * crtstuff.c (__do_global_ctors): Add missing arg to __register_frame.
+
+ * collect2.c (write_c_file_stat): Fix error in last change;
+ use __SIZE_TYPE__, not size_t.
+
+Sun Dec 7 05:50:43 1997 Paul Eggert <eggert@twinsun.com>
+
+ * cccp.c (strings.h): Fix misspelling of `include' introduced
+ in last change to this file.
+
+Sat Dec 6 18:54:11 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * alpha/vms.h (CPP_PREDEFINES): Remove redundant setting
+ of GCC version and unneeded setting of __VMS_VER.
+
Fri Dec 5 07:24:36 1997 Richard Stallman <rms@gnu.org>
* sparc/linux64.h (TARGET_VERSION): Write "GNU/Linux".
diff --git a/gcc/INSTALL b/gcc/INSTALL
index 6c0b8639ac4..595bc1df33b 100644
--- a/gcc/INSTALL
+++ b/gcc/INSTALL
@@ -687,7 +687,11 @@ special things you must know:
you must specify the version number during configuration. Note
that the assembler shipped with RISC iX does not support stabs
debugging information; a new version of the assembler, with stabs
- support included, is now available from Acorn.
+ support included, is now available from Acorn and via ftp
+ `ftp.acorn.com:/pub/riscix/as+xterm.tar.Z'. To enable stabs
+ debugging, pass `--with-gnu-as' to configure.
+
+ You will need to install GNU `sed' before you can run configure.
`a29k'
AMD Am29k-family processors. These are normally used in embedded
diff --git a/gcc/NEWS b/gcc/NEWS
index b3cb770ebc6..203b9ab3e44 100644
--- a/gcc/NEWS
+++ b/gcc/NEWS
@@ -212,28 +212,6 @@ New feature for Solaris systems:
GCC installation no longer makes a copy of system include files,
thus insulating GCC better from updates to the operating system.
-Changes in Objective-C:
-
- The Objective-C Runtime Library has been made thread-safe.
-
- The Objective-C Runtime Library contains an interface for creating
- mutexes, condition mutexes, and threads; it requires a back-end
- implementation for the specific platform and/or thread package.
- Currently supported are DEC/OSF1, IRIX, Mach, OS/2, POSIX, PCThreads,
- Solaris, and Windows32. The --enable-threads parameter can be used
- when configuring GCC to enable and select a thread back-end.
-
- Objective-C is now configured as separate front-end language to GCC,
- making it more convenient to conditionally build it.
-
- The internal structures of the Objective-C Runtime Library have
- changed sufficiently to warrant a new version number; now version 8.
- Programs compiled with an older version must be recompiled.
-
- The Objective-C Runtime Library can be built as a DLL on Windows 95
- and Windows NT systems.
-
- The Objective-C Runtime Library implements +load.
Noteworthy changes in GCC version 2.7.2
---------------------------------------
diff --git a/gcc/SERVICE b/gcc/SERVICE
index 680f2a2628f..c146eb2226a 100644
--- a/gcc/SERVICE
+++ b/gcc/SERVICE
@@ -672,24 +672,32 @@ Bradley M. Kuhn
<bkuhn@acm.org>
http://www.ebb.org/bkuhn
-I am available for primarily Unix system administration consulting, including
-but not limited to installation, configuration and integration of GNU tools
-and other copy-lefted software such as GNU/Linux.
+I am available for Unix system administration consulting, including but not
+limited to installation, configuration and integration of GNU tools and other
+copy-lefted software such as GNU/Linux and the various distributions of
+GNU/Linux.
I am particularly skilled at integration of GNU and other copy-lefted software
into new environments that have not used such tools in the past, and porting
the GNU software to new Unix-based platforms.
-Please visit my homepage for more information on my background and skills.
+Please visit my homepage for more information on my background and skills. My
+resume is also available there.
I am available for both 1099 (preferred) and W2 on-site contracting in the
-Cincinnati, OH metropolitan area, as well as remote consulting via dialup or
-Internet connection anywhere in the US.
+Cincinnati, OH, USA metropolitan area, as well as remote consulting via dialup
+or Internet connection anywhere in the USA. I have no interest in permanent
+relocation at this time.
-My rate is in the $40/hour range, depending on the circumstances. Rates for
-non-profit organizations are substantially lower, and possibly free.
+My rate varies greatly between $25-$40/hour, depending on the circumstances.
+Rates for non-profit organizations are substantially lower, and possibly free.
-Updated: 1997-08-03
+Please note that I have no interest in working with any Micro$oft related
+products. I will accept work that involves other non-free, non-Micro$oft
+software, but I would want the primary focus of the work to be contributing
+to the free software community.
+
+Updated: 1997-12-04

Fen Labalme <fen@comedia.com>
CoMedia Consulting http//www.comedia.com/comedia/
diff --git a/gcc/collect2.c b/gcc/collect2.c
index de178d301b1..a9baf8475d0 100644
--- a/gcc/collect2.c
+++ b/gcc/collect2.c
@@ -1786,7 +1786,7 @@ write_c_file_stat (stream, name)
fprintf (stream, " void *pc_end;\n");
fprintf (stream, " void *fde_begin;\n");
fprintf (stream, " void *fde_array;\n");
- fprintf (stream, " size_t count;\n");
+ fprintf (stream, " __SIZE_TYPE__ count;\n");
fprintf (stream, " struct object *next;\n");
fprintf (stream, "};\n");
diff --git a/gcc/config/alpha/vms.h b/gcc/config/alpha/vms.h
index 8b33a8d224d..0c7fca7a428 100644
--- a/gcc/config/alpha/vms.h
+++ b/gcc/config/alpha/vms.h
@@ -29,13 +29,10 @@ Boston, MA 02111-1307, USA. */
#include "alpha/alpha.h"
-/* Predefine this in CPP because VMS limits the size of command options
- and GNU CPP is not used on VMS except with GNU C. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES \
"-Dalpha -D__ALPHA -Dvms -DVMS -D__alpha__ -D__alpha -D__vms__ -D__VMS__\
- -D__VMS_VER=70000022 \
- -D__GNUC__=2 -D__GNUC_MINOR__=7 -Asystem(vms) -Acpu(alpha) -Amachine(alpha)"
+ -Asystem(vms) -Acpu(alpha) -Amachine(alpha)"
#undef CPP_SPEC
#define CPP_SPEC "\
diff --git a/gcc/crtstuff.c b/gcc/crtstuff.c
index bccf51d174e..c0d06494e4f 100644
--- a/gcc/crtstuff.c
+++ b/gcc/crtstuff.c
@@ -394,7 +394,8 @@ __do_global_ctors ()
{
func_ptr *p;
#ifdef EH_FRAME_SECTION_ASM_OP
- __register_frame (__EH_FRAME_BEGIN__);
+ static struct oobject object;
+ __register_frame (__EH_FRAME_BEGIN__, &object);
#endif
for (p = __CTOR_END__ - 1; *p != (func_ptr) -1; p--)
(*p) ();
diff --git a/gcc/install.texi b/gcc/install.texi
index 68b68792661..bb60f0aa70f 100644
--- a/gcc/install.texi
+++ b/gcc/install.texi
@@ -792,12 +792,16 @@ from @file{sunsite.unc.edu:/pub/Linux/GCC} and other mirror sites for
Linux-based GNU systems.
@item arm-*-riscix
-The ARM2 or ARM3 processor running RISC iX, Acorn's port of BSD Unix. If
-you are running a version of RISC iX prior to 1.2 then you must specify
-the version number during configuration. Note that the assembler
-shipped with RISC iX does not support stabs debugging information; a
-new version of the assembler, with stabs support included, is now
-available from Acorn.
+The ARM2 or ARM3 processor running RISC iX, Acorn's port of BSD Unix.
+If you are running a version of RISC iX prior to 1.2 then you must
+specify the version number during configuration. Note that the
+assembler shipped with RISC iX does not support stabs debugging
+information; a new version of the assembler, with stabs support
+included, is now available from Acorn and via ftp
+@file{ftp.acorn.com:/pub/riscix/as+xterm.tar.Z}. To enable stabs
+debugging, pass @samp{--with-gnu-as} to configure.
+
+You will need to install GNU @file{sed} before you can run configure.
@item a29k
AMD Am29k-family processors. These are normally used in embedded
diff --git a/gcc/make-cc1.com b/gcc/make-cc1.com
index 9f816b78d74..618fc2a8d33 100644
--- a/gcc/make-cc1.com
+++ b/gcc/make-cc1.com
@@ -24,7 +24,7 @@ $!
$! Compiler-specific setup (assume GNU C, then override as necessary):
$!
$ CC = "gcc"
-$ CFLAGS = "/Debug/noVerbos/CC1=""-mpcc-alignment"""
+$ CFLAGS = "/Opt=2/Debug/noVerbos/CC1=""-mpcc-alignment"""
$ LIBS = "gnu_cc:[000000]gcclib.olb/Libr,sys$library:vaxcrtl.olb/Libr"
$ if p1.eqs."GNUC"
$ then
@@ -295,16 +295,17 @@ $if (f$search("C-PARSE.Y") .eqs. "") then goto yes_yfiles
$if (f$cvtime(f$file_attributes("C-PARSE.IN","RDT")).gts. -
f$cvtime(f$file_attributes("C-PARSE.Y","RDT"))) -
then goto yes_yfiles
-$if (f$search("OBJC-PARSE.Y") .eqs. "") then goto yes_yfiles
+$if f$parse("[.OBJC]").eqs."" then create/Directory [.objc]
+$if (f$search("[.OBJC]OBJC-PARSE.Y") .eqs. "") then goto yes_yfiles
$if (f$cvtime(f$file_attributes("C-PARSE.IN","RDT")).gts. -
- f$cvtime(f$file_attributes("OBJC-PARSE.Y","RDT"))) -
+ f$cvtime(f$file_attributes("[.OBJC]OBJC-PARSE.Y","RDT"))) -
then goto yes_yfiles
$GOTO no_yfiles
$yes_yfiles:
-$echo "Now processing c-parse.in to generate c-parse.y and objc-parse.y."
-$ edit/tpu/nojournal/nosection/nodisplay/command=sys$input
+$echo "Now processing c-parse.in to generate c-parse.y and [.objc]objc-parse.y."
+$ EDIT/Tpu/noJournal/noSection/noDisplay/Command=sys$input:
!
-! Read c-parse.in, write c-parse.y and objc-parse.y, depending on
+! Read c-parse.in, write c-parse.y and objc/objc-parse.y, depending on
! paired lines of "ifc" & "end ifc" and "ifobjc" & "end ifobjc" to
! control what goes into each file. Most lines will be common to
! both (hence not bracketed by either control pair). Mismatched
@@ -344,7 +345,7 @@ $ edit/tpu/nojournal/nosection/nodisplay/command=sys$input
ENDLOOP;
WRITE_FILE(c, "c-parse.y");
- WRITE_FILE(objc, "objc-parse.y");
+ WRITE_FILE(objc, "[.objc]objc-parse.y");
QUIT
$ endif
$no_yfiles:
diff --git a/gcc/make-cccp.com b/gcc/make-cccp.com
index e383f310df2..6e7f976d519 100644
--- a/gcc/make-cccp.com
+++ b/gcc/make-cccp.com
@@ -18,7 +18,7 @@ $!
$! Compiler-specific setup (assume GNU C, then override as necessary):
$!
$ CC = "gcc"
-$ CFLAGS = "/Debug/noVerbos"
+$ CFLAGS = "/Opt=2/Debug/noVerbos"
$ LIBS = "gnu_cc:[000000]gcclib.olb/Libr,sys$library:vaxcrtl.olb/Libr"
$ if p1.nes."GNUC"
$ then
@@ -93,8 +93,9 @@ $skip_yacc:
$ echo " (Ignore any warning about not finding file ""bison.simple"".)"
$ set verify
$ 'CC''CFLAGS' cexp.c
+$ 'CC''CFLAGS'/Define="PREFIX=""_dummy_""" prefix.c
$!'f$verify(0)
-$
+$
$! In case there's no builtin alloca support, use the C simulation.
$ if f$locate("alloca.obj",f$edit(LIBS,"lowercase")).lt.f$length(LIBS)
$ then
@@ -108,7 +109,7 @@ $Link:
$ echo " Linking the preprocessor."
$ set verify
$ 'LINK''LDFLAGS'/Exe=gcc-cpp.exe -
- cccp.obj,cexp.obj,version.obj,version.opt/Opt,-
+ cccp.obj,cexp.obj,prefix.obj,version.obj,version.opt/Opt,-
'LIBS'
$!'f$verify(0)
$!
diff --git a/gcc/make-gcc.com b/gcc/make-gcc.com
index 03235eecd14..58632eb10c6 100644
--- a/gcc/make-gcc.com
+++ b/gcc/make-gcc.com
@@ -1,32 +1,71 @@
+$! make-gcc.com -- VMS build procedure for GNU CC.
$!
-$! Build GCC
+$! Usage:
+$! $ @make-gcc.com [host-compiler] [component list]
$!
-$! Set the def dir to proper place for use in batch. Works for interactive too.
-$flnm = f$enviroment("PROCEDURE") ! get current procedure name
-$set default 'f$parse(flnm,,,"DEVICE")''f$parse(flnm,,,"DIRECTORY")'
+$! where [host-compiler] is one of "GNUC", "VAXC", "DECC";
+$! default when none specified is "GNUC",
+$! and where [component list] is space separated list beginning
+$! with "CC1" and optionally followed by "CC1PLUS"; default if
+$! nothing is specified is "CC1" (the C compiler); choosing
+$! "CC1PLUS" (the C++ compiler) without also specifying "CC1"
+$! will not work. (See make-cc1.com for other potential component
+$! values; but unless you're developing or debugging the compiler
+$! suite itself, the two above are the only ones of interest.)
$!
+$! For a "stage 2" or subsequent build, always specify GNUC as
+$! the host compiler.
$!
-$! First, build the preprocessor.
+$! Note:
+$! Even though it is possible to build with VAX C or DEC C,
+$! a prior version of the gcc-vms binary distribution is still
+$! required to be able to use the newly built GNU CC compiler(s),
+$! because the gcc source distribution does not supply the driver
+$! program which the DCL command "GCC" implements or the C header
+$! files and gcclib support library.
+$!
+$
+$!
+$! Change working directory to the location of this procedure.
+$!
+$ flnm = f$enviroment("PROCEDURE") !get current procedure name
+$ set default 'f$parse(flnm,,,"DEVICE")''f$parse(flnm,,,"DIRECTORY")'
+$
+$!
+$! First, we build the preprocessor.
$!
$ @make-cccp.com 'p1' 'p2'
$!
-$! To build the GNU C++ compiler in addition to the GNU CC compiler, comment
-$! out the `@make-cc1' line, and uncomment the `@make-cc1 cc1 cc1plus' line.
-$! To also build Objective-C, add "cc1obj" to the list.
+$! To install it, copy the resulting GCC-CPP.EXE to the GNU_CC:[000000]
+$! directory.
+$!
+$
+$!
+$! Now we build the C compiler. To build the C++ compiler too, use
+$! $ @make-gcc GNUC cc1 cc1plus
+$! when invoking this command procedure. Note that you should not
+$! do this for a "stage 1" build.
+$!
+$ @make-cc1.com 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8'
$!
-$! See the file make-cc1.com for a complete list of options.
+$! To install it (them), copy the resulting GCC-CC1.EXE (and GCC-CC1PLUS.EXE)
+$! to the GNU_CC:[000000] directory.
$!
-$ @make-cc1.com 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8'
-$! @make-cc1 cc1 cc1plus
+$
$!
+$! Now we build the `libgcc2' support library. It will need to be merged
+$! with the existing gcclib.olb library.
$!
-$! Now build the library routines that are required. These will be placed in
-$! libgcc2.olb. To install, extract all of the modules from libgcc2.olb and
-$! add them to gnu_cc:[000000]gcclib.olb. You may have to delete the eprintf
-$! and new modules from the gnu_cc:[000000]gcclib.olb, since libgcc2 supplies
-$! these same routines with different module names.
+$ @make-l2.com 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8'
$!
-$! Now build gcclib2.olb
+$! To install, save a backup copy of GNU_CC:[000000]GCCLIB.OLB somewhere,
+$! then update the original using the newly created LIBGCC2.OLB via
+$! $ library/Obj libgcc2.olb /Extract=*/Output=libgcc2.obj
+$! $ library/Obj gnu_cc:[000000]gcclib.olb libgcc2.obj /Replace
$!
-$ @make-l2.com
+$! Depending upon how old your present gcclib library is, you might have
+$! to delete some modules, such as `eprintf' and `new', to avoid conflicting
+$! symbols from obsolete routines. After deleting any such modules, just
+$! repeat the `library/replace' step.
$!
+$ exit
diff --git a/gcc/make-l2.com b/gcc/make-l2.com
index 28a5c86b8ef..93694c8c4e8 100644
--- a/gcc/make-l2.com
+++ b/gcc/make-l2.com
@@ -1,38 +1,47 @@
-$! Set the def dir to proper place for use in batch. Works for interactive too.
-$flnm = f$enviroment("PROCEDURE") ! get current procedure name
-$set default 'f$parse(flnm,,,"DEVICE")''f$parse(flnm,,,"DIRECTORY")'
+$! make-l2.com -- VMS build procedure for libgcc2.
+$
+$! Change working directory to the location of this command procedure.
+$ flnm = f$enviroment("PROCEDURE") !get current procedure name
+$ set default 'f$parse(flnm,,,"DEVICE")''f$parse(flnm,,,"DIRECTORY")'
$!
-$ arch_indx = 1 + ((f$getsyi("CPU").ge.128).and.1) ! vax==1, alpha==2
-$ arch = f$element(arch_indx,"|","|vax|alpha|")
-$!
-$! Command file to build libgcc2.olb. You should only run this once you
+$! Command file to build libgcc2.olb. You should only run this once you
$! have the current compiler installed, otherwise some of the builtins will
$! not be recognized. Once you have built libgcc2.olb, you can merge this
-$! with gnu:[000000]gcclib.olb
+$! with gnu_cc:[000000]gcclib.olb
$!
-$! All of the source code is assumed to be in libgcc2.c, and a list of the
+$! All of the C source code is assumed to be in libgcc2.c, and a list of the
$! modules that we need from there is in libgcc2.list (which is generated
-$! when config-gcc.com is run).
+$! when vmsconfig.com is run). The C++ source is found in the [.cp.inc]
+$! directory and managed via libgcc2-cxx.list.
$!
-$if f$search("gcc-cc1.exe").eqs.""
-$ then
-$ gcc-cc1:=$gnu_cc_library:gcc-cc1
-$ else
+$ if f$search("gcc-cc1.exe").eqs.""
+$ then
+$ gcc_cc1:=$gnu_cc:[000000]gcc-cc1
+$ if f$extract(0,1,f$trnlnm("GNU_CC_VERSION")).eqs."1" then goto nocompile
+$ else
$ gcc_cc1:=$sys$disk:[]gcc-cc1
-$ endif
+$ endif
$!
-$if f$search("gcc-cpp.exe").eqs.""
-$ then
-$ gcc_cpp:=$gnu_cc_library:gcc-cpp
-$ else
+$ if f$search("gcc-cpp.exe").eqs.""
+$ then
+$ gcc_cpp:=$gnu_cc:[000000]gcc-cpp
+$ if f$extract(0,1,f$trnlnm("GNU_CC_VERSION")).eqs."1" then goto nocompile
+$ Version:='f$trnlnm("GNU_CC_VERSION")'
+$ else
$ gcc_cpp:=$sys$disk:[]gcc-cpp
$ open ifile$ version.opt
$ read ifile$ line
$ close ifile$
-$ endif
+$ Version=line - "ident=""" - """
+$ endif
$!
-$ gcc_as:=$gnu_root:[bin]as
-$ cpp_file:=sys$scratch:gcc_'f$getjpi(0,"pid")'.cpp
+$ if f$search("gcc-cc1plus.exe").eqs.""
+$ then gcc_cxx = "$gnu_cc:[000000]gcc-cc1plus"
+$ else gcc_cxx = "$sys$disk:[]gcc-cc1plus"
+$ endif
+$!
+$gcc_as:=$gnu_cc:[000000]gcc-as
+$cpp_file:=sys$scratch:gcc_'f$getjpi(0,"pid")'.cpp
$ s_file:=sys$scratch:gcc_'f$getjpi(0,"pid")'.s
$!
$set symbol/scope=(nolocal,noglobal)
@@ -40,9 +49,12 @@ $!
$lib/create libgcc2.olb
$on error then goto c_err
$on control_y then goto c_err
+$
+$if f$trnlnm("IFILE$").nes."" then close/noLog ifile$
$open ifile$ libgcc2.list
-$loop: read ifile$ line/end=c_done
+$loop:
$!
+$read ifile$ line/end=c_done
$i=0
$loop1:
$flnm=f$element(i," ",line)
@@ -64,11 +76,11 @@ $ if arch .eqs. "alpha"
$ then
$ gcc_cpp "-D__IEEE_FLOAT" "-I[]" "-I[.config]" "-I[.ginclude]" "-D''flnm'" libgcc2.c 'cpp_file'
$ gcc_cc1 'cpp_file' -dumpbase 'objname' -
- -quiet -mgas "-O1" -mfloat-ieee -o 's_file'
+ -quiet -mgas "-O1" -mfloat-ieee -o 's_file'
$ else
$ gcc_cpp "-I[]" "-I[.config]" "-I[.ginclude]" "-D''flnm'" libgcc2.c 'cpp_file'
$ gcc_cc1 'cpp_file' -dumpbase 'objname' -
- -quiet -mgnu -g "-O1" -mvaxc-alignment -o 's_file'
+ -quiet -mgnu -g "-O1" -mvaxc-alignment -o 's_file'
$ endif
$ delete/nolog 'cpp_file';
$ gcc_as 's_file' -o 'objname'.OBJ
@@ -87,13 +99,51 @@ $!
$!
$goto loop1
$!
-$goto loop
-$!
$! In case of error or abort, go here (In order to close file).
$!
-$c_err: !'f$verify(0)
+$c_err: !'f$verify(0)
$close ifile$
$ exit %x2c
$!
$c_done:
$close ifile$
+$
+$
+$ EXIT
+$ !gcc-2.8.0: C++ libgcc2 code disabled since it's not adequately tested
+$
+$!
+$ p1 = p1+" "+p2+" "+p3+" "+p4+" "+p5+" "+p6+" "+p7+" "+p8
+$ p1 = " " + f$edit(p1,"COMPRESS,TRIM,UPCASE") + " "
+$! (note: substring locations can only be equal when neither string is present)
+$ if f$locate(" CC1PLUS ",p1).eq.f$locate(" CXX ",p1) then goto cxx_done
+$ if f$search("libgcc2-cxx.list").eqs."" then goto cxx_done
+$!
+$ open/read ifile$ libgcc2-cxx.list
+$cxx_line_loop:
+$ read ifile$ line/end=cxx_done
+$ i = 0
+$cxx_file_loop:
+$ flnm = f$element(i,",",line)
+$ i = i + 1
+$ if flnm.eqs."" .or. flnm.eqs."," then goto cxx_line_loop
+$ write sys$output "$ gcc/plus/debug ''flnm'.cc"
+$ objname = flnm
+$!
+$ gcc_cpp -+ "-I[]" "-I[.ginclude]" "-I[.cp.inc]" [.cp]'flnm'.cc 'cpp_file'
+$ gcc_cxx 'cpp_file' -dumpbase 'objname' -fexceptions -
+ -quiet -mgnu -g "-O1" -mvaxc-alignment -o 's_file'
+$ delete/nolog 'cpp_file';
+$ gcc_as "-vGNU CC V''Version'" 's_file' -o 'objname'.OBJ
+$! Assemble again, preserving lowercase symbol names this time.
+$ gcc_as "-vGNU CC V''Version'" -h3 's_file' -o 'objname'-c.OBJ
+$ delete/nolog 's_file';
+$
+$ library libgcc2.olb 'objname'.obj,'objname'-c.obj
+$ delete/nolog 'objname'.obj;,'objname'-c.obj;
+$!
+$ goto cxx_file_loop
+$!
+$cxx_done:
+$ close ifile$
+$ exit