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