From: ken...@vlsi1.ultra.nyu.edu (Richard Kenner)
Subject: GCC 2.8.0 has been released
Date: 1998/01/14
Message-ID: <9801141059.AA14646@vlsi1.ultra.nyu.edu>
X-Deja-AN: 315822527
Sender: help-gcc-requ...@prep.ai.mit.edu
x-uunet-gateway: relay1.UU.NET from help-gcc to gnu.gcc.help; Wed, 14 Jan 1998 05:51:01 EST
Newsgroups: gnu.gcc.help
gcc-2.8.0.tar.gz, 8,477,747 bytes, is now available on prep.ai.mit.edu
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 bug-...@prep.ai.mit.edu;
otherwise, report bugs to bug-...@prep.ai.mit.edu.
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 <http://www.cygnus.com/egcs/> 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
this.
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
variable.
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 http://www.cygnus.com/misc/wp/
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
support.
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
release.
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
modifications.
+ 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
diagnosed.
+ 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
http://www.cygnus.com/misc/wp/dec96pub/template.html#temp.res
+ 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.
SNI SINIX.
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.
-mcpu=xxx
-mtune=xxx
-malign-loops=xxx
-malign-jumps=xxx
-malign-functions=xxx
-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.
-mcpu=604e,602,603e,620,801,823,mpc505,821,860,power2
-mtune=xxx
-mrelocatable-lib, m-no-relocatable-lib
-msim, -mmve, -memb
-mupdate, -mno-update
-mfused-madd, -mno-fused-madd
-mregnames
-meabi
-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):
-malign-300
-ms (for the Hitachi H8/S processor)
-mint32
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: ken...@vlsi1.ultra.nyu.edu (Richard Kenner)
Subject: GCC 2.8.1 is now available
Date: 1998/03/04
Message-ID: <9803041225.AA12755@vlsi1.ultra.nyu.edu>#1/1
X-Deja-AN: 330725406
Sender: help-gcc-requ...@prep.ai.mit.edu
x-uunet-gateway: relay1.UU.NET from help-gcc to gnu.gcc.help; Wed, 4 Mar 1998 07:25:27 EST
Newsgroups: gnu.gcc.help
The following files are now available on ftp.gnu.org:
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 bug-...@gnu.org. Otherwise,
please report bugs to bug-...@gnu.org.
|