== Progress ==
* Linux Plumbers (6/10)
- Attended conference, Android/Tools/LLVM tracks
- Presented 2 talks (GCC+LLVM and LLVM+ARM)
* Buildbots (TCWG-76 2/10)
- Made the Compiler-RT bot green! Now on to the libc++ one
* Background (2/10)
- Code review, meetings, discussions, etc.
- Internet upgrade, re-wiring the house, building works
== Plan ==
* Add libc++abi buildbot
* Follow up on the fpu issues on Clang/asm
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
cbuild2 benchmarking - TCWG-360 [7/10]
* Cleaned up and upstreamed some code that works
* Fixed a couple of issues raised by LAVA people
** No longer scraping the logs
** No longer assuming stable IP addresses
lowlevellock.h comments - CARD-341 [1/10]
* Respun based on Carlos' comments
Meetings/mail/etc - [2/10]
=Plan=
cbuild2 benchmarking
* Upstream code-with-fixes
* Write a doc
* Invite people to start using this thing
** Assuming that the storage questions get resolved
* Work through list of tweaks
Get up to speed on glibc vector math thread
== Progress ==
* Investigate a number of bugs in Linaro toolchain (2/10)
- Submitted patches for cbuild build failure with eglibc and i686
- Investigated BZ #675, gdb baud rate issue. Should be fixed by
switch to cbuild
- AArch64 PIE support seems to be ok?
* Submitted a patch to add all missing relocs from AArch64 ABI 1.0 to
binutils (1/10)
* Email, meetings, etc. (1/10)
* More malloc single-thread optimizations (6/10, TCWG-436)
- Patches submitted to the list
== Issues ==
* None
== Plan ==
* More atomics work
* Tidy up and commit malloc app benchmarks
* Out Thursday and Friday for a wedding
--
Will Newton
Toolchain Working Group, Linaro
== Progress ==
* LR register not used in leaf functions (TCWG-539) (1/10)
Reviewed Jiong's changes.
* bug #412 (2/10)
- Seems to have been fixed but since there is not specific test-case
except that it happens with spec2k gcc, need more work to be entirely sure.
* AArch64 Spec2006 int regression (1/10)
- Looked at bug databases and mailing list archive for more information
* armv3 (bug #85 and bug #410) (2/10)
- Looked at both the outstanding bug to find more information
- proposed using -mno-lra for armv3 after discussion with the team
* Misc (2/10)
- Public holiday (2/10)
- Annual Leave (2/10)
== Plan ==
* zero/sign extension elimination with widening types
== Holidays ==
* 06/10/2014 - Public holiday
* 07/10/2014 and 07/10/2014 - Annual leave
== This week ==
* TCWG-515 - Neon intrinsic testing part 1 (5/10)
- Developed fix for vclz DejaGnu failure
- Tested on ARM hardware
* Linaro bugzilla 602 - gcc 4.7.3 compiler internal error while building
hsail components (1/10)
- Unable to reproduce with either Linaro 4.8 or 4.9
* Linaro Bugzilla 540 - Median of three has unneeded register moves (1/10)
- Results of Triage indicate generated code has improved though still
not optimal
- No plans for further improvement
* Misc. (1/10)
- Completed ARM annual review paperwork
* Out sick Friday, October 3rd (2/10)
== Next week ==
- Full validation testing on vclz bug fix
- Create patch for vclz bug fix and send to gcc-patches list
- Resolve any blocking issues to patch for bugzilla 331
= Progress ==
* Core mark benchmark and report for PGO and PGO + LTO (2/10)
Collected benchmark scores and report sent internally.
Adding PGO benefits coremark. LTO seems to hurt. More runs and profiling
next week. Tired few experiments with -funroll-all-loops and seems to
benefit.
* Misc [2/10]
Internal meeting and 1-1 with Ryan and inline manger.
Revisited and closed PR61442
Short week leave on 29 Sep, 2 and 3rd Oct (6/10).
== Plan ==
* Coremark benchmark and profiling for PGO and PGO + LTO
* Investigate PR 62308
* Setup Cbuildv2 build in internal machine.
== Progress ==
* Fixed test infrastructure bugs (TCWG 1378 - 8/10).
- Installed Foundation Model on all Hetzner machines so
aarch64 bare metal testing works.
- Refactored all board support files to eliminate duplication to
reduce maintainance headaches. Fixed ldflags so now getting
good results.
- Backport job is working good now.
- Worked on Gerrit/Jenkins integration, with the goal of having
the notifications work *after* the test and validation is done.
- More work on optimizing SSH connections by reducing extraneous
commands in the test framework.
- Recreated stable branch from master now that results are much
better.
* Meetings and Misc (2/10)
* Fixed National Park internal wireless network, getting access to
much better bandwidth than the crappy Guest one. :-)
== Plan ==
* Escape Yosemite, hard during a great weather window, and being
the only person in my group with a job...
* Continue fixing remote testing support, merge "boards" branch
into master, then make it stable after more testing.
== Progress ==
Closed bug #405 (not a bug)
NEON load/store
. reworked patches not to do type-punning [9/10]
. investigated alternative ways to solve poor code generation with
array of vector types
Started investigating NEON bugs 403, 418 [1/10]
== Plan ==
NEON load/store - submit new patches, continue upstream discussion
Try out validation infrastructure for my own patches
== Progres ==
* GCC trunk/4.9 cross-validation (CARD-647) (3/10)
- aarch64 address sanitizer tests currently all fail at execution
under qemu because they try to reserve 50GB of memory. Tried to push
the limits with no success so far.
- working on fixing support for testcases generating a shared lib
- newly introduced abi_check for aarch64 fails on my side, probable
testsuite configuration problem.
* Linaro branches
- updated backports spreadsheet
- reviewed backports prepared by Yvan
* Validation (3/10)
- manually running builds+validations to compare master and chroot
branches, see the diffs between static and dynamic libs in terms of
PASS/FAIL, ....
* Neon intrinsics tests (1/10)
- No need to comply to the GNU coding style since it's imported from
and existing testsuite.
- only minor changes requested
- should help having the 1st subset committed soon
* Misc (3/10)
- calls/meetings
- bugzilla admin etc..
cbuild2 benchmarking - TCWG-360 [9/10]
* Knocked off a lot of rough edges
* Now working fairly robustly
lowlevellock.h comments - CARD-341 [4/10]
* Got a bit stuck trying to follow condvar locking
* But wasn't really needed to describe the code in question
LCA [10/10]
LCA recovery day [2/10]
Meetings/mail/etc [5/10]
=Plan=
cbuild2 benchmarking:
* Push upstream for others to look at
* Sort out storage story for benchmark sources and results
* Try to get working on a Juno (in LAVA, therefore on OE)
* Look at our Jenkins scripts with a view to figuring out how to hook in
* Work through list of bits 'n' pieces to fix -
+ Don't scrape logs (bad for server)
+ Don't fail on network timeouts
+ Extra target control knobs - disable ASLR, set a nasty nice value,
maybe hugepages
+ Set appropriate flags automatically for cross-builds
== Progress ==
* Monday off to recover from Connect (2/10)
* Catch up on email (1/10)
* Upstream work (1/10, CARD-341)
- Patch review
* Investigate malloc single-thread optimizations (1/10, TCWG-436)
- More exploratory work on atomics
* Investigate binutils support for full range of AArch64 relocs (1/10)
* Annual leave Thursday and Friday (4/10)
== Issues ==
* None
== Plan ==
* More work on atomics
* Figure out how to make an LLVM cross compiler with gas/ld
--
Will Newton
Toolchain Working Group, Linaro