Share September 2005: Project of the Month

MinGW - Minimalist GNU for Windows

File Release Notes and Changelog

Release Name: Current Release: gcc-4.4.0

Notes:
The MinGW.org team is pleased to offer a binary release of GCC 4.4.0.



1. PREREQUISITES

This binary release requires a PC with a 32-bit version of Windows, such
as Windows 95, Windows NT 4.0, Windows XP, or better.

You will need to have an existing MinGW installation that includes at
least the following:--

- binutils 2.13
- mingw-runtime 3.13
- w32api 2.2



2. AVAILABILITY

This release is available for download from the following URL.

https://sourceforge.net/project/showfiles.php?group_id=2435&package_id=241304

To get a complete GCC distribution, download the 'full' file.  It includes
the DLL prerequisites GMP, libiconv, MPFR, and support for all languages.
Note that you still must have the prerequisites listed above to actually
compile anything.

  gcc-full-4.4.0-mingw32-bin.tar.lzma

If you do not want to download the entire compiler, you must download the 
required gmp, mpfr, and pthreads prerequisites, the 'core' bin and dll
packages, plus the 'bin' and 'dll' packages of any other languages that you
need.

GMP Runtime [REQUIRED]
  gmp-4.2.4-mingw32-dll.tar.gz

libiconv Runtime [REQUIRED]
  libiconv-1.13-mingw32-dll-2.tar.gz

MPFR Runtime [REQUIRED]
  mpfr-2.4.1-mingw32-dll.tar.gz

POSIX Threads for Win32 Runtime [REQUIRED]
  pthreads-w32-2.8.0-mingw32-dll.tar.gz

Core (C) [REQUIRED]
  gcc-core-4.4.0-mingw32-bin.tar.gz
  gcc-core-4.4.0-mingw32-dll.tar.gz

Ada [OPTIONAL]
  gcc-ada-4.4.0-mingw32-bin.tar.gz
  gcc-ada-4.4.0-mingw32-dll.tar.gz

C++ [OPTIONAL]
  gcc-c++-4.4.0-mingw32-bin.tar.gz
  gcc-c++-4.4.0-mingw32-dll.tar.gz

Fortran [OPTIONAL]
  gcc-fortran-4.4.0-mingw32-bin.tar.gz
  gcc-fortran-4.4.0-mingw32-dll.tar.gz

Java [OPTIONAL]
  gcc-java-4.4.0-mingw32-bin.tar.gz
  gcc-java-4.4.0-mingw32-dll.tar.gz

Objective-C [OPTIONAL]
  gcc-objc-4.4.0-mingw32-bin.tar.gz
  gcc-objc-4.4.0-mingw32-dll.tar.gz

Be aware that some archive extracters do not preserve read-only
attributes of files. If you are installing the Ada component, please
check that the files in the /lib/gcc/mingw32/4.2.1-dw2/adainclude and
adalib directories are flagged as read-only. This attribute is necessary
to prevent them from being deleted when using gnatclean to clean a
project.



3. INSTALLATION INSTRUCTIONS

Use an archiver of your choice to extract this package over your
existing MinGW installation, which is usually located in c:\mingw.

This will replace your old GCC version, if any, as the default compiler.

To uninstall or return to your previous version, you can extract the
version you want over this version, optionally deleting the old files.

Alternately, if you do not want to replace your old installation, you
can extract to some other directory of your choosing, and add the bin/
subdirectory to your PATH environment variable.



4. NEW FEATURES SINCE MINGW GCC 3.4

Windows-specific:--

- Shared libgcc: If all modules are linked with -shared-libgcc,
  exceptions can be thrown across DLL boundaries.  Note that this is
  the default for all languages other than C.

- Shared libstdc++: Compile with -D_GLIBCXX_DLL and add -lstdc++_s to
  your link flags to link against a DLL version of libstdc++.

- Zero cost exceptions: New exception model Dwarf only has performance
  penalty when being thrown.  The old model, SJLJ, is no longer
  available.

- Thread local storage support: The  __thread keyword is honoured.

- Translations into your language! See MINGW\share\locale for a list of
  codes.  Set the LANG environment variable to the code of your
  preferred language.

  $ export LANG=es
  $ gcc
  gcc.exe: no hay ficheros de entrada

In general:--

- New language: Java 1.5, using the Eclipse front end

- New language: Objective-C++, intended to bridge C++ and Objective-C
  code

- Improved optimisation: SSA optimisation framework, IPA support,
  autovectorization of loops, new register allocator, new instruction
  scheduler, and more

- Support for some parts of the upcoming new version of C++

- Support for new IA-32 processors and SIMD instruction sets

- Support for TR1 and experimental support for the next C++ standard

- Fortran language rewritten to support new standards

- Improved debugging information: Dwarf-2 debugging is now the default.
  Make sure to get the latest GDB version for the best debugging
  experience.

- OpenMP support

For more information, see <http://gcc.gnu.org/gcc-4.4/>.



5.  GENERAL NOTES

- Throwing exceptions through foreign frames

Previous versions of GCC would blindly unwind through all foreign frames.
If these frames did not have valid unwind information, perhaps because
they were written in a language that does not have exceptions, program
data structures might be left in an incoherent state, leading to
mysterious bugs including data loss and program crashes.  From now on,
GCC will only unwind through frames if it can be determined that the
functions understand exceptions.  Currently, functions that use either
Dwarf-2 EH or SEH are supported.

Unfortunately, in i386 versions of Windows, there is no reliable way
for the compiler or runtime unwinder to tell if a function supports
unwinding with SEH.  Consequently, it is necessary to add the seh_aware
decorator to the declarations of foreign SEH functions that exceptions
might be thrown through.

If you intend to throw exceptions through Windows API callbacks, you
will need to add __attribute__((seh_aware)) to the declaration of the
corresponding API function.  This is only a temporary measure, as a
future version of w32api from MinGW.org will have some sort of way of
adding this annotation automatically.  Note that it is not necessary to
add this attribute to the callbacks themselves, or any other function
definition that is compiled by GCC; it is only necessary for foreign
functions.

- Dynamic linking with libgcc_s_dw2-1.dll

Dynamic linking with libgcc_s_dw2-1.dll is necessary to throw
exceptions between different modules, such as between two DLLs or a
DLL and an EXE.  Consequently, it is the default for all languages
other than C.  To disable this dynamic linking, use -static-libgcc.
To enable this dynamic linking in C, use -shared-libgcc.



6. KNOWN ISSUES

- The Java compiler GCJ is somewhat broken.  Compiling with
  -static-libgcj works better than the default of dynamically linking.

- libstdc++_s is only partially implemented.

- GRAPHITE is not supported due to various bugs.  This is being corrected
  for the next release.



7. CONTACT INFORMATION

Bugs:      http://www.mingw.org/bugs.shtml
General:   mingw-users at http://www.mingw.org/lists.shtml


Changes: