[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
- 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
(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.
- 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
- 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
(i86-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).