FYI.
The whole thread is available here:
http://article.gmane.org/gmane.linux.ports.arm.omap/119412
---------- Forwarded message ----------
Date: Thu, 16 Oct 2014 01:18:01 +0100
From: Russell King - ARM Linux <linux(a)arm.linux.org.uk>
To: Peter Hurley <peter(a)hurleysoftware.com>
Cc: Nathan Lynch <Nathan_Lynch(a)mentor.com>,
David Laight <David.Laight(a)ACULAB.COM>,
Otavio Salvador <otavio(a)ossystems.com.br>,
Linus Torvalds <torvalds(a)linux-foundation.org>,
Nicolas Pitre <nico(a)fluxnic.net>,
Linux OMAP Mailing List <linux-omap(a)vger.kernel.org>,
linux-arm-kernel(a)lists.infradead.org
Message-ID: <20141016001801.GQ12379(a)n2100.arm.linux.org.uk>
Subject: Re: [PATCH] ARM: Blacklist GCC 4.8.0 to GCC 4.8.2 - PR58854
On Wed, Oct 15, 2014 at 06:18:30PM -0400, Peter Hurley wrote:
> On 10/15/2014 05:56 PM, Russell King wrote:
> > I was in two minds whether to include 4.8.3 as Linaro released a buggy
> > toolchain which identifies itself as 4.8.3, but I decided that's also
> > a distro problem. IMHO Linaro should really think about taking that
> > compiler down given the seriousness of this bug and it being
> > indistinguishable from the fixed stock version.
>
> Maybe it's unfair to blame them; Linaro just took a snapshot and
> released what was there.
>
> If gcc is going to retain the "change release number then add all the
> new features" model, some kind of prerelease indicator would help
> eliminate this kind of problem. And that indicator should be both
> a preprocessor define and parseable from the command line :)
My comment is not to attribute blame to them, my comment is entirely
on a technical level.
My reasoning is that the bug is just as prevalent in userspace, though
it will occur less often. Any program which uses signal handlers is
a candidate for exactly the same kind of corruption, since you can
receive that signal between the point that the stack pointer is
modified and the function loads the parent context.
Of course, there are ways around that: don't use signal handlers, or
if you do, use alternate signal stacks. Neither of those can be
guaranteed for any program though.
So, let me put this another way: a compiler with this bug is _completely_
unsuitable for use for compiling programs for use under the Linux
kernel _as well_ as the Linux kernel itself.
The difference is that the Linaro compilers come with an expectation
that they are usable on ARM... whereas stock versions cover a lot more
and so the ARM arch is probably very small number of their users.
Hence why I recommend that Linaro takes down their buggy compiler.
Their 4.8.3 version should not be used *anywhere*, just the same as
the stock 4.8 to 4.8.2 inclusive should also not be used anywhere on
ARM either.
== Progress ==
Neon vld/vst [4/10]
. submitted v2 of vldN_lane patch (respin of patches 1&2 only)
. continued ML discussion about patches 3&4.
Tried out jenkins/cbuild infrastructure [1/10]
. hardest part was getting git.linaro.org/people to hold my test tree
. https://wiki.linaro.org/Platform/Systems/GitServer#Creating_new_repositories
. if it doesn't work, ask ITS to check you are in the git-users group
. still need to find where the results go.
bug 403/418 wrong line number on neon error messages [2/10]
. experimented with a couple of ways to solve this
bug 715 [2/10]
. investigated and closed as only affects deprecated old ABI
Misc [1/10]
== Plan ==
Benchmark 2014.10 release
Continue bug 403/418 work
== Progress ==
* Further work on malloc single-thread optimizations (2/10, TCWG-436)
- Still pending some resolution on direction from upstream
* Upstream work (1/10, CARD-341)
- Patch review
- Applied binutils patch for missing AArch64 relocs
* Further work on malloc app benchmark framework (2/10, TCWG-441)
- Found a possible way to get memory statistics without hacks, should improve
speed and reliability of the benchmark framework
* Email, meetings, etc. (1/10)
* Thursday and Friday annual leave (4/10)
== Issues ==
* None
== Plan ==
* Get malloc app benchmark framework into shape and committed
* Figure out direction for malloc single thread optimization work
--
Will Newton
Toolchain Working Group, Linaro
cbuild2 benchmarking - TCWG-360 [7/10]
* Fixed/worked around some especially resilient bugs
** Mostly relate to running benchmarks through LAVA, which may be less
important in the near future
* Wrote a doc
* Upstreamed some code that works about as I want it to
Meetings/mail/etc [3/10]
=Plan=
cbuild2 benchmarking
* Work through TODO list from connect
* Tidy up behaviour on shutdown
* Storage issues
* (Maybe) persuade a LAVA Juno to work for benchmarking or configure spec
Hopefully pick up something else
= Progress ==
* Core mark benchmark and report for PGO and PGO + LTO (4/10)
More profiling and collected numbers and reported. JIRA card TCWG-181 updated.
Adding LTO gains in x86 and degrades in Aarch64 .
* Addressed machine bring up issues, debugged and installed necessary
packages for both x86 and Aarch64 (1/10)
* PR 62308 - Analyzed RTL dumps. Looks to be similar issue solved in
trunk. Git bisected and found the passing revision in trunk. posted my
comments. waiting for feedback. (2/10)
* Misc [3/10]
Internal work, emails, AMD meetings and 1-1 with inline manger.
1-1 with Maxim, christophe and 1-1 with ryan
Linaro status call
== Plan ==
* Coremark benchmark and profiling for PGO and PGO + LTO. Investigate
LTO degradation causes and report.
* Investigate PR 63173
* Setup Cbuildv2 build in internal machine.
== Issues ==
Experiencing Hardware connection issues and kernel instability issues
with my local machines.
== Holiday ==
* Public Holiday (2/10)
* Leave (4/10)
== Progress ==
* Zero/sign extension elimination with widening types (4/10)
- Started experimented with a pass for widening type.
- Verified for one simple test-case.
- Bootstrapping is failing and looking into it.
== Plan ==
* Continue with Zero/sign extension pass.
== Progress ==
* Automation Framework (CARD-1378 1/10)
- Planning LAVA server for new TCWG gateway
* Buildbots (TCWG-76 7/10)
- Fixing Compiler-RT buildbot (from 69 to 4 failures)
* Background (2/10)
- Code review, meetings, discussions, etc.
- Re-testing a change in inst combine that broke bots before
- Reviewing CMake builder for Windows builds
- Discussing clang-reformat on lld's codebase
== Plan ==
* Continue fixing the Compiler-RT buildbot
* Present 2 talks at Linux Plumbers
== Progress ==
* GCC trunk/4.9 cross-validation (CARD-647) (2/10)
- trunk build for aarch64 reported to fail because libsanitizer
requires an update. Pinged libsanitizers maintainers but got no answer
so far.
- posted testsuite patch to test if -shared is supported
- managed to find how to force target-dependent -mword-relocations
flags to compile testglue, without needing a testuite patch :-)
* Validation (3/10)
- compared cbuild2 schroot-test branch using (default) shared libs
and forcing static libs
Using static libs causes many unresolved and unsupported tests
- compared using unix.exp and arm-linux.exp: the latter causes
creates instability in the results
* Neon intrinsics tests (2/10)
- rebased on trunk, applied requested changes
- the make-check parallelization support has changed mid-September,
took some time to discover that my .exp harness was now incompatible.
* Misc (3/10)
- calls/meetings
== Next ==
* GCC trunk/4.9 cross-validation
- continue investigation of abi_check test
* Neon intrinsic tests update, trying to take float16 types into account
* cbuild2:
- compare results + validation time of stable and schroot-test branches
- look at backport-test script + logs