GCC Version Questions

Ralf Corsepius ralf.corsepius at rtems.org
Sat Apr 28 03:57:04 UTC 2012


On 04/27/2012 04:00 PM, Sebastian Huber wrote:
> I would rather use GCC 4.6.X for the RTEMS 4.11 release on ARM since I
> had a lot of trouble with earlier version of GCC 4.6. I worked with GCC
> 4.6 during the whole 4.11 development cycle and I am really at unease to
> use an untested GCC 4.7 for this release.

Sebastian,

a) rtems4.11 is the unstable, rolling development branch, which may eat 
the hair of your head and may eat your family and children.
It's _you_ (The developers) who are testing and are supposed to find, 
report and occasionally fix the bugs.

b) You having called arm-eabi-4.6.x "crap" was one of the reasons for 
the switch.

If you want a stable platform, use rtems4.10.

> Most ARM BSPs use ARMv4T and ARMv5T. The focus at GCC is currently at
> more recent architecture versions like ARMv7. My impression is that the
> older versions receive little testing and attention by the GCC
> developers.
Well, IMO, the sad and unpleasant truth is:

* Any architecture which is not a mainstream GCC (== Linux( architecture 
doesn't receive much attention in GCC.
It's left to the embedded community to bring and keep these 
architectures in usable shape.

You can actually count yourself lucky on the arm, because the arm 
receives much more attention than other targets, because it is about to 
become mainstream target and is about to receive $$$ companies's support.

Other, less popular architectures are in a much worse position in GCC.


* As with most developments, GCC branches do not receive the amount of 
work and attentions they would need, because developers find this boring 
and tiresome.

Openly said, the situation in RTEMS basically is the same.

Devs are working on trunk, introducing "new stuff", breaking APIs and 
ABIs ad-lib, but do not care about RTEMS-4.10. It's unfortunate and sad, 
but it's the natural way.

> So progress breaks older versions sometimes.

Sure. ... this is an inevitable consequense, which generally applies 
everywhere.

It is the same consideration, why I had kept the arm-rtems/gcc-4.6.x 
toolchains, becaus I had assumed the elf->eabi switch will have the same 
effect - And in deed, it did have this effect.

> In general we should consider to select a certain GCC version for an
> upcoming RTEMS release and stick with this GCC version for this RTEMS
> release. Thus we continuously work with a particular GCC release during
> development and can address all compiler issues in this phase.

Well, this is naive wishful dreamery.

C.f. the arm situation:
- People want arm-eabi
   ... arm-eabi in 4.6 was "imature".
- People want support for arm-architecture-variant xyz,
   ... xyz did not exist in 4.6.
- People want to exploit GCC/language-feature "abc",
   ... feature "abc" did not exist in gcc-4.6.
...

... in comparison to the situation of other architectures, the situation 
on the arm actually is nice. It's probably just that the fact of you 
being an arm power users makes you more familiar with the issues on the 
arm but the issues on other targets.

To sum up, IMO,
- it is impossible to "freeze" on one GCC version, instead, we cannot 
avoid to find individual compromises per target/architecture for 
production releases.
- the only possibility to find such compromises is to actually use the 
tools on RTEMS develment branches (== RTEMS-4.11).

Ralf





More information about the devel mailing list