[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

New compiler tools release: cris-dist-1.54

There's a new release of the compiler tools.  It has been tested
together with the recent devboard_82-R1_91 release and should
trivially work with the devboard_lx_ide-R1_00 release.

Do *not* use this release for devboard_lx-R2_1_0 or older,
devboard_bt-R1_0_0 or older, or devboard releases: compilation
will fail, in some cases in non-obvious ways, creating huge
temporary files (6GB) which are left behind.

Customers using products with no release supporting
cris-dist-1.54, for example devboard_lx, are advised to ask
their sales contact or this list for a new devboard_lx-release.

Lots of things have changed with this release, mainly due to
using gcc-3.2.x as a base.  Some of the items below are expected
to not be relevant to your use.  However, for this kind of
information, better too much than too little.  Also refer to the
NEWS file in the cris-dist-1.54.tar.gz file or
/usr/doc/cris-dist-1.54/NEWS for the RPM package.

- All the good things that come with stock gcc-3.2.1:

- Your program and library sources may have to be tweaked.
  More bugs and undefined behavior are found by gcc-3.2.1.

- Link scripts definitely have to be tweaked, (by e.g. adding
  "*(.rodata.*)" after "*(.rodata)").

- An assembler bug causing incorrect code or an internal
  assembler error with branches to constant addresses, for
  example "ba 0xbadf00", has been solved.  GCC does not generate
  such code.

- To reduce the risk for hard-to-find bugs with the use of "asm", gcc
  will now emit error when a register in the clobber list overlaps an
  asm-declared register in the operands, with the message:
  "asm-specifier for variable `FOO' conflicts with asm clobber list".
  This contradiction in specifiers for the asm operands previously
  led to hard-to-find bugs.  For details, see
  <URL:http://gcc.gnu.org/ml/gcc/2002-09/msg00741.html> and
  (This is not in the official gcc-3.2.1, hence this specific note.)

- A bug in GCC has been fixed, in which asm-constructs of a type
  typically used for system calls could get the wrong operands.
  Refer to <URL:http://gcc.gnu.org/ml/gcc-patches/2003-02/msg01808.html>
  for in-depth analysis.

- A bug in GCC, where invalid assembly code could be generated
  when either the -fpic or -fPIC options were used, has been solved.
  See <URL:http://gcc.gnu.org/ml/gcc-patches/2003-04/msg00983.html>
  for details.

- A bug in the assembler, when a macro was used after an
  #NO_APP/#APP sequence caused wrong assembly, has been fixed.
  For details, see
  This case might seem artificial.  However, if you change
  arch/cris/kernel/entry.S in the Linux kernel to use an
  assembler macro anywhere after the `.include "entryoffsets.s"'
  line, the bug will cause all assembly code after the macro
  invocation to silently be ignored.

- A bug in GCC, causing it to effectively ignore volatile
  qualifiers, has been solved.  For details, see

- A bug in the linker has been solved.  The bug caused programs
  compiled with -fPIC or -fpic to hang when the program called
  functions in a shared library.

- A bug in glibc causing invalid return value from lseek64 has
  been solved.

- The cris-dist-linux-headers-N.M tarball now also contains
  headers from glibc, making it 40%/400k bigger.  The headers
  are required to be present even when the first GCC for
  cris-axis-linux-gnu is built.  (GCC needs to be build twice to
  solve interdependancies between GCC and glibc.)

- The new canonical location for the tools programs is default
  /usr/local/cris/bin.  There are compatibility symlinks from the
  root (still default /usr/local/cris), so no changes are required
  for makefiles, scripts or PATH:s.  This relates to users using
  the compiler free-standing: if you use the supported devboard_*
  code, the used path is the same and you will not notice.

- Slightly faster code, slightly smaller code.  (It varies with the
  application, but code is generally in the order of 1% faster and 1%

- The canonical toolchain names are now supported (in the bin
  subdirectory), e.g. cris-axis-elf-gcc, cris-axis-aout-gcc and
  cris-axis-linux-gnu-gcc.  If you have used other GCC-based
  cross-compiler toolchains, these will look familiar.  Use of
  the old gcc-cris name is supported by a script calling the
  proper compiler.  If you use the canonical toolchain names,
  you can omit and forget the options "-melf" "-maout" and

- Mostly of interest for packagers, BuildRoot (a.k.a installprefix or
  installroot) does not work anymore.  This means that the
  installation directory (default /usr/local/cris) must be absent at
  the start of the build.  When using cris-dist.spec and RPM, it will
  be removed after the build.  There's hope that support will be
  restored in a future GCC version.

- Arguments to install-cris-tools have changed, for the missing
  BuildRoot support and for removing the library directory
  argument.  This probably matters for package builders only.

- The compiler part of the toolchain is now split in three:
  cris-axis-elf, cris-axis-aout and cris-axis-linux-gnu.  Thus the
  storage needed for the installed parts of the toolchain has
  increased from (figures in bytes) ~110M to ~160M, the required
  temporary storage from ~510M to ~730M and build time went up 30-70%.
  See README for updated figures.  Previously, a single toolchain was
  able to serve three purposes: generating (mostly historical) a.out
  objects, generating ELF objects for monolithic-program use and for
  generating ELF objects for GNU/Linux.  In a future release, I may
  add support for selecting which toolchain parts are wanted, when
  building from source.

The compiler tools are available in five forms: as a source
SRPM, as a binary RPM, as a binary .deb package, Debian source
description and as "pure" sources; gzipped tar-balls.  The
binary RPM is suitable for i386-type host machines
(i[3456]86-pc-linux-gnu) running Red Hat Linux release 6.2 and up.)
The Debian binary package is similarly suitable for PC:s running
release "Woody" or newer.

The SRPM and RPM are available at:

The Debian binary package is at:

The Debian source package files (which require the source
tarballs below to be retrieved separately) is at:

The corresponding source tar-balls are in three parts at:

If you need to install from the tar-ball sources (though the
binary or source packages are strongly recommended), first
unpack the cris-dist-1.54.tar.gz tar-ball in an empty directory,
then "cd cris-dist-1.54" and unpack the latter two tar-balls in
that directory.  Further installation instructions are available
in the file README in the cris-dist-1.54.tar.gz tar-ball.

There are also files ending in *.md5, to use for minimal
integrity-check of the above files, with contents repeated
below.  Older releases are moved to the subdirectory "old" with
every new release ("old/debian-dsc" for old Debian build
description files, when the new ones are available).

3fe8e59baf488c3e63199ac827c31163 *cris-dist-1.54-1.i386.rpm
9e1daae94008cc680f4c701c9b3bbca9 *cris-dist-1.54-1.src.rpm
7165bd20b14795d57c63f557bcaadab3 *cris-dist_1.54-1_i386.deb
bf4923d8c967bbc31c776eb0a0c40860 *cris-dist_1.54-1.dsc
3dd4ac7b02b7b93add49fe20a656379d *cris-dist_1.54-1.tar.gz
a6ef88a42a52726c0a11f374a8523e42 *cris-dist-1.54.tar.gz
b0929ed57ec56dc1498090bf2061aa09 *cris-dist-linux-headers-1.54.tar.gz
05ca9b9be28ed4f3036b0b86802f4269 *cris-dist-glibc-1.54.tar.gz

brgds, H-P