|
Message
From: Heiko Panther<heiko.panther@w...>
Date: Wed Dec 17 22:17:11 CET 2003
Subject: [openrisc] or32-gcc: Current status + new version
Hi folks,there has been some confusion about the various gcc compilers and their respective bugs or features. I did some research and a lot of experimenting, and here's my summary.
Testing objectives
- I tested if the optimization (-O2) works by running eCos, which has in the past produced errors in printf()-like routines when the compiler had -O2 enabled. - I checked if the gcc could build newlib (important for the folks who don't run eCos or other OSes which include a libc). To achieve this, I created symbolic links for newlib and libgloss from the newlib dir into the gcc dir, and used the gcc --with-newlib configure option. - Since it's important for me, I checked for availability of the -msoft-mul flag. - Lastly, I compiled my app, which includes eCos and a user application, and noted down the binary size, compiled with -O2. Compilers that produce buggy code with -O2 weren't checked.
Test results
opencores(oc) gcc-3.2.3 -O2 buggy. Builds newlib. Has -msoft-mul.
oc-gcc-3.2.3 Scott Furman version Scott sent me his modification, which includes an ABI change. This means you have to recompile everything, including libs, for use with this. Scott says this modified ABI is faster, too. When I built my app with this, it wouldn't come up - eCos died while doing the static constructors. Didn't yet check why that happened. Builds newlib. Has -msoft-mul. Binary size: 420k.
University Cantabria (uc) gcc-3.4 Is built with a developmental version of gcc-3.4, which is probably the reason for not building newlib and the large binary size. Fixes the -O2 bug without changing the ABI. Can't build newlib. Doesn't have -msoft-mul. Binary size: 470k.
New version
Based on this, I decided to put a new gcc together, taking the target config from uc-gcc-3.4 and putting it into oc-gcc-3.2.3. I added the -msoft-mul support from oc-gcc-3.2.3. No ABI change. newlib has to be installed seperately (cd to newlib subdir of gcc build dir and make install). -O2 working. Builds newlib. Has -msoft-mul. Binary size: 385k.
So, with this, we should have a reliably working and optimizing compiler. The files and instructions are at http://homepage.mac.com/hpanther/gcc-3.2.3-oc-to-uc-patch.tgz
I invite you to try and build you apps and OSes with this version. If everyone is satisfied (or no one complains, whichever happens first), I shall put the files into CVS (given that I'm granted CVS write access, wink wink. Otherwise, maybe one of the opencores maintainers will do that).
Heiko
|
 |