From: (Richard Kenner)
Subject: GCC 2.8.0 has been released
Date: 1998/01/14
Message-ID: <>
X-Deja-AN: 315822527
x-uunet-gateway: relay1.UU.NET from help-gcc to; Wed, 14 Jan 1998 05:51:01 EST

gcc-2.8.0.tar.gz, 8,477,747 bytes, is now available on
and all the usual mirror sites.

Two companion files, libstdc++-2.8.0.tar.gz, 811,260 bytes, and
libg++-2.8.0.tar.gz, 2,282,644 bytes, are also available for g++ users.
Note that libg++ is now considered obsolete and should not be used for
development; libstdc++ should be used instead.

If you are using C++, please report bugs to;
otherwise, report bugs to

The following describes a summary of the changes in this release:

Noteworthy changes in GCC version 2.8.0

A major change in this release is the addition of a framework for
exception handling, currently used by C++.  Many internal changes and
optimization improvements have been made.  These increase the
maintainability and portability of GCC.  GCC now uses autoconf to
compute many host parameters.

A new project, egcs (pronounced ``eggs''), is maintaining an
experimental version of the GNU C compiler.  The egcs compiler
contains features that are candidates for inclusion in future versions
of GCC.  The standard GCC distribution is intended to contain a mature
compiler that is stable and reliable; egcs aims at making experimental
changes available to interested users at an earlier stage in their
development process than would be appropriate for a production
compiler.  Please see <> for more
information about egcs.  A major motivation for the egcs project was
the long release cycle for GCC 2.8.0.  This was due to changes for
exception handling that took a long time to complete.  In the future,
changes of this nature will be developed in the egcs framework and not
interfere with the frequent releases of the standard GCC distribution.

Due to a bug fix related to exception handling, if you have previously
built a sharable library with some recent versions of GCC on some
systems and then rebuild the library with GCC 2.8.0, programs
previously linked with that library may fail during initialization
with a message about an undefined symbols __register_frame.  If that
happens, you must either relink the application or rebuild the
sharable library with "-Wl,-u,__register_frame" on the command line.

The following lists changes that add new features or targets.

New tools and features:

    The Dwarf 2 debugging information format is supported on ELF systems, and
    is the default for -ggdb where available.  It can also be used for C++.
    The Dwarf version 1 debugging format is also permitted for C++, but
    does not work well.

    gcov.c is provided for test coverage analysis and branch profiling
    analysis is also supported; see -fprofile-arcs, -ftest-coverage,
    and -fbranch-probabilities.

    Support for the Checker memory checking tool.

    New switch, -fstack-check, to check for stack overflow on systems that
    don't have such built into their ABI.

    New switches, -Wundef and -Wno-undef to warn if an undefined identifier
    is evaluated in an #if directive.

    Options -Wall and -Wimplicit now cause GCC to warn about implicit int
    in declarations (e.g. `register i;'), since the C Standard committee
    has decided to disallow this in the next revision of the standard;
    -Wimplicit-function-declarations and -Wimplicit-int are subsets of

    Option -Wsign-compare causes GCC to warn about comparison of signed and
    unsigned values.

    Add -dI option of cccp for cxref.

New features in configuration, installation and specs file handling:

    New option --enable-c-cpplib to configure script.

    You can use --with-cpu on the configure command to specify the default
    CPU that GCC should generate code for.

    The -specs=file switch allows you to override default specs used in
    invoking programs like cc1, as, etc.

    Allow including one specs file from another and renaming a specs

    You can now relocate all GCC files with a single environment variable
    or a registry entry under Windows 95 and Windows NT.

Changes to G++:

    A public review copy of the December 1996 Draft of the ANSI/ISO C++
    proto-standard is now available. See
    for more information.

    Exception handling support has been significantly improved and is on
    by default.  This can result in significant runtime overhead.  You can
    turn it off with -fno-exceptions.

    RTTI support has been rewritten to work properly and is now on by
    default.  This means code that uses virtual functions will have a
    modest space overhead.  You can use the -fno-rtti flag to disable RTTI

    On ELF systems, duplicate copies of symbols with 'initialized common'
    linkage (such as template instantiations, vtables, and extern inlines)
    will now be discarded by the GNU linker, so you don't need to use
    -frepo.  This support requires GNU ld from binutils 2.8 or later.
    The overload resolution code has been rewritten to conform to the
    latest C++ Working Paper.  Built-in operators are now considered as
    candidates in operator overload resolution.  Function template
    overloading chooses the more specialized template, and handles base
    classes in type deduction and guiding declarations properly.  In this
    release the old code can still be selected with -fno-ansi-overloading,
    although this is not supported and will be removed in a future

    Standard usage syntax for the std namespace is supported; std is
    treated as an alias for global scope.  General namespaces are still
    not supported.

    New flags:

	+ -Wsign-promo (warn about potentially confusing promotions
	  in overload resolution), -Wno-pmf-conversion (don't warn about
	  converting from a bound member function pointer to function pointer).

	+ -Weffc++ has been added for violations of some of the style 
	  guidelines in Scott Meyers' _Effective C++_ books.

	 + -Woverloaded-virtual now warns if a virtual function in a base
	   class is hidden in a derived class, rather than warning about
	   virtual functions being overloaded (even if all of the inherited
	   signatures are overridden) as it did before.

	+ -Wall no longer implies -W.  The new warning flag, -Wsign-compare,
	  included in -Wall, warns about dangerous comparisons of signed and
	  unsigned values. Only the flag is new; it was previously part of -W.

	+ -fno-weak disables the use of weak symbols.

    Synthesized methods are now emitted in any translation units that need
    an out-of-line copy. They are no longer affected by #pragma interface
    or #pragma implementation.

    __FUNCTION__ and __PRETTY_FUNCTION__ are now treated as variables by
    the parser; previously they were treated as string constants.  So code
    like  `printf (__FUNCTION__ ": foo")' must be rewritten to `printf
    ("%s: foo", __FUNCTION__)'.  This is necessary for templates.

    local static variables in extern inline functions will be shared between
    translation units.

    -fvtable-thunks is supported for all targets, and is the default for
    Linux with glibc 2.x (also called libc 6.x).

    bool is now always the same size as another built-in type. Previously,
    a 64-bit RISC target using a 32-bit ABI would have 32-bit pointers and
    a 64-bit bool. This should only affect Irix 6, which was not supported
    in 2.7.2.

    new (nothrow) is now supported.

    Synthesized destructors are no longer made virtual just because the
    class already has virtual functions, only if they override a virtual
    destructor in a base class.  The compiler will warn if this affects
    your code.

    The g++ driver now only links against libstdc++, not libg++; it is
    functionally identical to the c++ driver.

    (void *)0 is no longer considered a null pointer constant; NULL in
    <stddef.h> is now defined as __null, a magic constant of type (void *)
    normally, or (size_t) with -ansi.

    The name of a class is now implicitly declared in its own scope; A::A
    refers to A.

    Local classes are now supported.

    __attribute__ can now be attached to types as well as declarations.

    The compiler no longer emits a warning if an ellipsis is used as a
    function's argument list.

    On the HPPA, some classes that do not define a copy constructor
    will be passed and returned in memory again so that functions
    returning those types can be inlined.

    Definition of nested types outside of their containing class is now
    supported.  For instance:

       struct A {
              struct B;
              B* bp;

       struct A::B {
              int member;

    g++ now uses a new implementation of templates. The basic idea is that
    now templates are minimally parsed when seen and then expanded later.
    This allows conformant early name binding and instantiation controls,
    since instantiations no longer have to go through the parser.
    What you get:

	+ Inlining of template functions works without any extra effort or
	+ Instantiations of class templates and methods defined in the class
	  body are deferred until they are actually needed (unless
	  -fexternal-templates is specified).
	+ Nested types in class templates work.
	+ Static data member templates work.
	+ Member function templates are now supported.
	+ Partial specialization of class templates is now supported.
	+ Explicit specification of template parameters to function templates
	  is now supported.

     Things you may need to fix in your code:

	+ Syntax errors in templates that are never instantiated will now be
	+ Types and class templates used in templates must be declared
	  first, or the compiler will assume they are not types, and fail.
	+ Similarly, nested types of template type parameters must be tagged
	  with the 'typename' keyword, except in base lists.  In many cases,
	  but not all, the compiler will tell you where you need to add
	  'typename'.  For more information, see


	+ Guiding declarations are no longer supported.  Function
	  declarations, including friend declarations, do not refer to
	  template instantiations.  You can restore the old behavior with
	  -fguiding-decls until you fix your code.

      Other template-related features:

	+ Default function arguments in templates will not be evaluated (or
	  checked for semantic validity) unless they are needed.  Default
	  arguments in class bodies will not be parsed until the class
	  definition is complete.
	+ The -ftemplate-depth-NN flag can be used to increase the maximum
	  recursive template instantiation depth, which defaults to 17. If you
	  need to use this flag, the compiler will tell you.
	+ Explicit instantiation of template constructors and destructors is
	   now supported.  For instance:

            template A<int>::A(const A&);

      Still not supported:

	+ Member class templates.
	+ Template template parameters.
	+ Template friends.

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.

The following new targets are supported (see also list under each
individual CPU below):

    Embedded target m32r-elf.
    Embedded Hitachi Super-H using ELF.
    RTEMS real-time system on various CPU targets.
    ARC processor.
    NEC V850 processor.
    Matsushita MN10200 processor.
    Matsushita MN10300 processor.
    Sparc and PowerPC running on VxWorks.
    Support both glibc versions 1 and 2 on Linux-based GNU systems.

New features for DEC Alpha systems:

    Allow detailed specification of IEEE fp support:
      -mieee, -mieee-with-inexact, and -mieee-conformant
      -mfp-trap-mode=xxx, -mfp-round-mode=xxx, -mtrap-precision=xxx
    -mcpu=xxx for CPU selection
    Support scheduling parameters for EV5.
    Add support for BWX, CIX, and MAX instruction set extensions.
    Support Linux-based GNU systems.
    Support VMS.

Additional supported processors and systems for MIPS targets:

    MIPS4 instruction set.
    R4100, R4300 and R5000 processors.
    N32 and N64 ABI.
    IRIX 6.2.
New features for Intel x86 family:

    Add scheduling parameters for Pentium and Pentium Pro.
    Support stabs on Solaris-x86.
    Intel x86 processors running the SCO OpenServer 5 family.
    Intel x86 processors running DG/UX.
    Intel x86 using Cygwin32 or Mingw32 on Windows 95 and Windows NT.

New features for Motorola 68k family:

    Support for 68060 processor.
    More consistent switches to specify processor.
    Motorola 68k family running AUX.
    68040 running pSOS, ELF object files, DBX debugging.
    Coldfire variant of Motorola m68k family.

New features for the HP PA RISC:

    -mspace and m-no-space
    -mlong-load-store and -mno-long-load-store
    -mbig-switch -mno-big-switch

    GCC on the PA requires either gas-2.7 or the HP assembler; for best
    results using GAS is highly recommended.  GAS is required for -g and
    exception handling support.

New features for SPARC-based systems:

    The ultrasparc cpu.
    The sparclet cpu, supporting only a.out file format.
    Sparc running SunOS 4 with the GNU assembler.
    Sparc running the Linux-based GNU system.
    Embedded Sparc processors running the ELF object file format.
    -mimpure-text and -mno-impure-text

    Options -mno-v8 and -mno-sparclite are no longer supported on SPARC
    targets.  Options -mcypress, -mv8, -msupersparc, -msparclite, -mf930,
    and -mf934 are deprecated and will be deleted in GCC 2.9.  Use
    -mcpu=xxx instead.

New features for rs6000 and PowerPC systems:

    Solaris 2.51 running on PowerPC's.
    The Linux-based GNU system running on PowerPC's.
    -mrelocatable-lib, m-no-relocatable-lib
    -msim, -mmve, -memb
    -mupdate, -mno-update
    -mfused-madd, -mno-fused-madd

    -mcall-linux, -mcall-solaris, -mcall-sysv-eabi, -mcall-sysv-noeabi
    -msdata, -msdata=none, -msdata=default, -msdata=sysv, -msdata=eabi
    -memb, -msim, -mmvme
    -myellowknife, -mads
    wchar_t is now of type long as per the ABI, not unsigned short.
    -p/-pg support
    -mcpu=403 now implies -mstrict-align.
    Implement System V profiling.

    Aix 4.1 GCC targets now default to -mcpu=common so that programs
    compiled can be moved between rs6000 and powerpc based systems.  A
    consequence of this is that -static won't work, and that some programs
    may be slightly slower.

    You can select the default value to use for -mcpu=xxx on rs6000 and
    powerpc targets by using the --with-cpu=xxx option when configuring the
    compiler.  In addition, a new options, -mtune=xxx was added that
    selects the machine to schedule for but does not select the
    architecture level.

    Directory names used for storing the multilib libraries on System V
    and embedded PowerPC systems have been shortened to work with commands
    like tar that have fixed limits on pathname size.

New features for the Hitachi H8/300(H):

    -ms (for the Hitachi H8/S processor)

New features for the ARM:

    -march=xxx, -mtune=xxx, -mcpu=xxx
    Support interworking with Thumb code.
    ARM processor with a.out object format, COFF, or AOF assembler.
    ARM on "semi-hosted" platform.
    ARM running NetBSD.
    ARM running the Linux-based GNU system.

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.

From: (Richard Kenner)
Subject: GCC 2.8.1 is now available
Date: 1998/03/04
Message-ID: <>#1/1
X-Deja-AN: 330725406
x-uunet-gateway: relay1.UU.NET from help-gcc to; Wed, 4 Mar 1998 07:25:27 EST

The following files are now available on

    gcc-2.8.1.tar.gz, 8,447,495 bytes
    gcc-2.8.0-2.8.1.diff.gz, 162,407 bytes,
    libstdc++-2.8.1.tar.gz, 828,826 bytes
    libstdc++-2.8.0-2.8.1.diff.gz, 39,152 bytes.
Note that you will need tools such as bison, texinfo, TeX, autoconf,
and autoheader, to rebuild GCC if you apply the patches since only
input files to these programs are patched.  gcc-2.8.1.tar.gz contains
all needed files.

This version of GCC adds no new features, but fixes bugs detected
since the 2.8.0 release.

There is no corresponding libg++ for 2.8.1; if you are using this
obsolete library, you should continue to use the version for 2.8.0.

If you are using C++, please report bugs to  Otherwise,
please report bugs to

			  SCO's Case Against IBM

November 12, 2003 - Jed Boal from Eyewitness News KSL 5 TV provides an
overview on SCO's case against IBM. Darl McBride, SCO's president and CEO,
talks about the lawsuit's impact and attacks. Jason Holt, student and 
Linux user, talks about the benefits of code availability and the merits 
of the SCO vs IBM lawsuit. See SCO vs IBM.

Note: The materials and information included in these Web pages are not to
be used for any other purpose other than private study, research, review
or criticism.