== GCC ==
* Worked on reimplementing reassociation pass based on
review comments I had received.
* Identified root cause and worked on fix for vectorizer
bug causing unaligned memory accesses (reported by Mans).
Mit freundlichen Gruessen / Best Regards
Ulrich Weigand
--
Dr. Ulrich Weigand | Phone: +49-7031/16-3727
STSM, GNU compiler and toolchain for Linux on System z and Cell/B.E.
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter | Geschäftsführung: Dirk
Wittkopp
Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht
Stuttgart, HRB 243294
Hi,
OpenEmbedded-Core/meta-linaro:
* fixed the binary toolchain support on master (still 2012.03)
* fixed armhf support for Linaro GCC 4.6 on master
* backport of Linaro GCC 4.7 r114985
* tested the images using QEMU - no failures
* now the master branch supports building images for ARM, MIPS, PPC,
X86 and X86_64 using the latest (2012.05) releases of Linaro GCC
4.6 or 4.7
* add tags on meta-linaro to easily find the revision for a particular
Linaro GCC
* changed cbuild to pull in the master branches of OE-Core and
meta-linaro
* merged the branch that allows to build OpenEmbedded-Core using cbuild
http://bazaar.launchpad.net/~kwerner/cbuild/oecore/changes/
* updated docs on the wiki
Misc:
* public holiday on Thu, vacation on Fri
* I'll be back on Monday : )
Regards,
Ken
Hi,
GDB for Android:
* Submitted and committed trivial patch to gdbserver which made it
compile again on Android. A patch had been added which made gdbserver
use a MIPS-related constant which Android doesn't provide.
* Compared testsuite results of GDB on Android vs regular Linux.
Unfortunately there's a lot of noise because the GCC 4.4 used by
the Android SDK generates bad debuginfo which confuses GDB and breaks
a lot of tests. Overall, it seems GDB on Android is in a generally
good
shape. Still need to run the testsuite again with an Android based on
a newer compiler to have a better comparison.
* Mozilla has a GDB patch to call gdbarch_addr_bits_remove before
comparing PCs in breakpoint handling which seems like a sensible thing
to do. Still, running the testsuite with and without this patch didn't
make a difference on Android or regular Linux.
* Remotely attended the GDB for Android session at Connect. Prepared
the following page to go with it:
https://wiki.linaro.org/ThiagoBauermann/Sandbox/AndroidGDBConnectSession
--
[]'s
Thiago Jung Bauermann
Linaro Toolchain Working Group
Hi,
GDB for Android:
* Created patch to expand the ~ in "set solib-search-path". Despite
doing the right thing in other commands, GDB doesn't understand ~ in
solib-search-path, which made me lose some time in a debugging session
trying to figure out what was going on. Committed upstream.
* Looked into AOSP patch which hardcodes use of fork tracing instead of
thread events. Found out that gdbserver actually already prefers fork
tracing on both Linux and Android (tested on ICS and Linaro 12.04).
This must have been a problem in some earlier version, and the patch
is
unnecessary now.
* Set up a QEMU instance with Linaro Android 12.04. Got dropbear ssh
on it and ran the GDB testsuite remotely on the VM.
--
[]'s
Thiago Jung Bauermann
Linaro Toolchain Working Group
Hi,
OpenEmbedded-Core/meta-linaro:
* added a default xorg.conf for the qemuarmv7a MACHINE
* necessary because OE-Core master switched from Xfbdev to Xorg
* noticed that hard float with Linaro GCC 4.6 works on denzil but is
broken on master
due to differences on the requested/provided interpreter
* it used to (accidentally?) work when /lib/ld-linux.so.3 was used
even for armhf
* need to check out what loader name OE-Core really wants to use
* worked on getting OE-Core to build with Linaro GCC 4.7
* verified that the recipes for Linaro GCC 4.7 are working for ARM,
MIPS, PPC, X86, X86_64
* all images are working!
* updated the wiki pages
Regards,
Ken
Linaro Connect edition...
RAG:
GREEN: productive Connect, hammered out a KVM TODO list
* As usual, most sessions don't really intersect with KVM/QEMU work,
so the bulk of the benefit of the week was in informal discussions
and hacking sessions. Useful outcomes there:
* Dragged Rusty through some of the more obscure corners of the
ARM architecture, in the course of doing a review of all the
A15 cp15 registers and how KVM should handle them
* Thrashed out a todo list for getting to "initial upstreamable
patchset" for KVM:
https://docs.google.com/document/d/1TSpDKQZ-6u-HH_2BNY_85jDStI2YDhENf5-z8Nb…
* Nailed down a few decisions we'd left hanging for a bit
* A few sessions that seem worth mentioning:
* Enterprise bootloaders
Jon M definitely pushing the idea that servers will want ACPI,
UEFI, etc all to look as consistent and like x86 as possible. This
includes a desire for UEFI in the virtual environment provided by
QEMU/KVM. We've been aware we might want to do that, but there is
definitely some work to do to get UEFI running (probably a combo of
QEMU bugfixes/feature work and patching UEFI). Total work required
hard to estimate because you just have to keep fixing bugs until it
works... (The push for UEFI was repeated in a couple of other
sessions too.)
* v8 discussion
The question of whether there will be a v8 QEMU was raised (again).
There do seem to be enough people interested that we should be able
to collaborate on a user-mode emulator, which I think is a good
outcome. This will obviously depend on release of enough public
info on the architecture.
* KVM performance
Bit of a null session, as it turns out that we aren't really ready
to think about performance. We believe there aren't any obvious
areas requiring optimisation in the current KVM patchset. Virtio is
the only thing to be added later, and this is really just missing
QEMU side rather than needing specific kernel support. We did take
the opportunity to go through our TODO list for KVM functionality;
nobody raised anything we'd missed, so that's good.
-- PMM
The Linaro Toolchain Working Group is pleased to announce the 2012.05
release of the Linaro Toolchain Binaries, a pre-built version of
Linaro GCC and Linaro GDB that runs on generic Linux or Windows and
targets the glibc Linaro Evaluation Build.
Uses include:
* Cross compiling ARM applications from your laptop
* Remote debugging
* Build the Linux kernel for your board
What's included:
* Linaro GCC 2012.05
* Linaro GDB 2012.04
* A statically linked gdbserver
* A system root
* Manuals under share/doc/
The system root contains the basic header files and libraries to link
your programs against.
Interesting changes include:
* Updates the system root to Ubuntu Precise
* Switches to the arm-linux-gnueabihf triplet
* Compiles programs for hard float by default
* Includes soft float support for ARMv4T and later systems
* Includes debug symbols for debugging and backtracing the C library
The Linux version is supported on Ubuntu 10.04.3 and 12.04, Debian
6.0.2, Fedora 16, openSUSE 12.1, Red Hat Enterprise Linux Workstation
5.7 and later, and should run on any Linux Standard Base 3.0
compatible distribution. Please see the README about running on
x86_64 hosts.
The Windows version is supported on Windows XP Pro SP3, Windows Vista
Business SP2, and Windows 7 Pro SP1.
The binaries and build scripts are available from:
https://launchpad.net/linaro-toolchain-binaries/trunk/2012.05
Need help? Ask a question on https://ask.linaro.org/
Already on Launchpad? Submit a bug at
https://bugs.launchpad.net/linaro-toolchain-binaries
On IRC? See us on #linaro on Freenode.
Other ways that you can contact us or get involved are listed at
https://wiki.linaro.org/GettingInvolved.
Thanks to the change in the schedule the agenda is here.
https://wiki.linaro.org/WorkingGroups/ToolChain/Meetings/2012-05-28
If there are any topics folks would like to add to this for today
please feel free to do so now given we have a session in under 2
hours.
regards,
Ramana
Progress
* Fixed PR53334 upstream - something that broke eembc builds.
* Usual meetings.
* Work through some of the speed tickets and upstream bugzilla perf
tickets in preparation for connect.
* Prepared for connect. Looked through some open issues and
investigating PR48941 patch. Uli and I had some discussions around the
patches for this and I had an idea later this evening to try out
something with __builtin_shuffle which certainly looks interesting and
is effectively what we came up with . It's probably better to use
__builtin_shuffle rather than inventing something on our own. In the
process found a bug with automatic rev generation from vec_perm
expressions and that should now be fixed.
* Worked through the auto-inc-dec stuff. Still needs some work and
looks unlikely to complete before connect and that's something I need
to keep working through.
* Prepared for connect.
Plans
* Connect next week !
Absences:
28 May - 1 June : Linaro Connect
Committed my core-shifts patch into Linaro GCC.
Checked and posted my (newly rebased) neon-shifts patch upstream for review.
Continued work on my brain-dump of work in progress. Cleaned up, tested
and posted example testcases and before/after compiler output for all my
work-in-progress patches.
Looked at LaunchPad bug #851258. It's a miss-optimization bug that would
take some effort to fix.
Discovered that my lower-subreg build had failed due to Werror. Fixed
the warning, reuploaded the sources, and relaunched the build.
Prepared for travel to Connect.
== GCC ==
* Followed up on review comments on reassociation pass.
* Analyzed performance headroom of Linaro GCC 4.7 compared
to various other compilers and identified several missing
optimisations.
== Misc ==
* Prepared for Linaro Connect Hong Kong.
Mit freundlichen Gruessen / Best Regards
Ulrich Weigand
--
Dr. Ulrich Weigand | Phone: +49-7031/16-3727
STSM, GNU compiler and toolchain for Linux on System z and Cell/B.E.
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter | Geschäftsführung: Dirk
Wittkopp
Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht
Stuttgart, HRB 243294
Current Milestones:
|| || Planned || Estimate || Actual ||
||cp15-rework || 2012-01-06 || 2012-06-23 || ||
== other ==
* preparation for Connect
* wrote up and sent out proposal about handling TrustZone for KVM
* investigated some issues Riku found when testing his packaged
version of KVM (one model issue, one kernel-too-old issue)
* usual upstream maintainer duties
-- PMM
Hi,
OpenEmbedded-Core/meta-linaro:
* cbuild enhancements:
* debugged failures till I noticed cbuild was pulling in the wrong
branch of meta-linaro (now fixed)
* added support for checking the oe-core build prerequisites
* the images are now automatically bootet using qemu
* sizes of the images and package sizes are now recorded
* update to Linaro GCC 4.6 2012.05 (denzil) and Linaro GCC 4.7 2012.05
(master)
* debugged build failure when using Linaro GCC 4.6 in a hard float
configuration
* turns out that OE expects the GCC to respect the
ARCH_FLAGS_FOR_TARGET env variable
to build libgcc and friends properly for the given target
(another missing patch to build the GCC the OE-Core way)
* fix tested and checked in (denzil)
* created/updated wiki pages:
https://wiki.linaro.org/WorkingGroups/ToolChain/Outputs/OpenEmbedded-Corehttps://wiki.linaro.org/KenWerner/Sandbox/OpenEmbedded-Core
Regards,
Ken
Hi,
GDB for Android:
* Fixed the PC offset in jmp_buf but the patch still wasn't working.
It turns out that GDB wasn't loading the libc6.so symbols even though
I set both sysroot *and* solib-search-path. Copied libc6.so to GDB's
cwd and the patch worked (will investigate this next week).
Submitted upstream, currently under review.
--
[]'s
Thiago Jung Bauermann
Linaro Toolchain Working Group
Hi,
GDB for Android:
* Worked on patch which uses the correct offset for finding the PC value
inside the jmp_buf on Android binaries. Things weren't working though,
and in the end it turns out that the value used in AOSP's patch is
wrong.
--
[]'s
Thiago Jung Bauermann
Linaro Toolchain Working Group
Hi Zhenqiang. I've had a look at the difference between testsuite
results on our current softfp Natty builders and the new hard float
Precise builders. The diff and notes is at:
http://people.linaro.org/~michaelh/incoming/hard-float-builder-diff.txt
There's a lot of commonality:
/usr/bin/ld: cannot find {S,g}crt1.o: builder fault. I've fixed this.
sorry, unimplemented: Thumb-1 hard-float VFP ABI errors: tests where
they set the architecture to ARMv5T and use our default Thumb mode.
This causes the compiler to fail as it doesn't support Thumb-1 with
hard float.
arm_iwmmxt_ok5222.c:1:0: sorry, unimplemented: iWMMXt and hardware
floating point
Some are real:
+FAIL: gcc.c-torture/compile/sync-3.c -O0 (test for excess errors)
/tmp/cc3ufndj.s:436: Error: co-processor offset out of range
+FAIL: gcc.dg/pr48335-2.c (test for excess errors)
pr48335-2.c:19:30: internal compiler error: in
expand_expr_addr_expr_1, at expr.c:7527
+FAIL: gcc.dg/pr48335-5.c (test for excess errors)
pr48335-5.c:17:1: error: unrecognizable insn:
(insn 11 10 12 3 (set (reg:DI 141)
(unspec:DI [
(mem/c:DI (plus:SI (reg/f:SI 129 virtual-stack-vars)
(const_int -8 [0xfffffffffffffff8])) [2 S8 A32])
] UNSPEC_MISALIGNED_ACCESS))
/cbuild/slaves/ursa2/gcc-linaro-4.7+bzr114988~zhenqiang-chen~gnueabihf/gcc/gcc-linaro-4.7/gcc/testsuite/gcc.dg/pr48335-5.c:16
-1
(nil))
+FAIL: gcc.dg/torture/stackalign/builtin-apply-2.c -O0 execution test
Some are marked as unsupported but shouldn't be:
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-11a.c
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-11b.c
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-11.c
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-11c.c
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-25.c
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-26.c
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-28.c
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-2.c
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-32.c
Could you look into the unsupported ones please? I'll fix the crt1
problems and respin the build.
-- Michael
The Precise based hard float auto builders are now online. Every
merge request and commit to gcc-linaro will now be built build both on
a Natty softfp system and a Precise hard float. Let's run this in
parallel for a while before updating the validation lab.
I've also updated the x86 cloud builders from Natty to Precise. A
quick test showed no regressions but I want to run them in parallel
for a bit to be sure.
-- Michael
Progress
* Proposed backport for vfp addressing modes patch.
* Investigated the build issue with EEMBC and have a candidate patch
for upstream trunk. (PR53334)
* Investigated auto-inc-dec sched changes.
* Some upstream patch review.
Plans
* Work on auto-inc-dec sched changes.
* Finish PR53334 patch upstream.
* Work through some of the speed tickets and upstream bugzilla perf
tickets in preparation for connect.
Remerged the GCC 4.7 branch from upstream. I had previously
misunderstood how to resolve a conflict where Uli had committed a
different version of the same patch upstream.
Spun the GCC 4.6 and 4.7 release tarballs and passed them to Michael for
testing.
Continued work on improving code generation for 64-bit and/or/not/xor. I
now have this working to the point where it would be ready to post
upstream .... except that it depends on my other patches that are not
yet committed (or even reviewed) upstream.
Rebased and modified my core-shifts patch following Ramana's code
review. Then regression tested it - no regressions - and committed the
patch upstream. I've also updated the launchpad branch and resubmitted
the merge request with the finalized upstream patch.
Rebased the neon-shifts patch. I'll repost this upstream as soon as I'm
happy it still works correctly.
Worked on a brain-dump of all I have been working on recently. This will
hopefully help others take over my tasks after the contract expires. I
still need to put together all the test-cases and examples that Ramana
requested.
Summary:
* Linaro binary toolchain 2012.05 release.
* Code size benchmark analysis.
Details:
1. Linaro binary toolchain 2012.05 release
* Check-in the patches to support multilib and arm-linux-gnueabihf
in linaro crosstool.
* Update config to 2012.05 release, which will build multilib toolchain:
default option: -mthumb -march=armv7-a -mfloat-api=hard
-mtune=cortex-a9 -mfpu=vfpv3-d16
armv4t option: -marm -march=armv4t -mfloat-api=soft
* Try u-boot build with the armv4t option.
* Add arm-linux-gnueabihf.mpi for windows installer.
* Tests and regression analysis.
2. During code size regression analysis, we find postreload can not
optimize some cases when spilling happens, reassociation for PHI note
might lead to spilling, expand generates inefficient codes which can
not be optimized by later passes and poor code layout introduces more
branch instructions.
Plans:
* Linaro binary toolchain 2012.05 release.
* Investigate other code size regressions in 4.7.
Best regards!
-Zhenqiang
== GCC ==
* Completed implementation of new optimization sub-pass to improve
re-association of plus/minus chains for types with undefined
overflow (to improve end-of-loop value computation);
posted to gcc-patches for review.
Mit freundlichen Gruessen / Best Regards
Ulrich Weigand
--
Dr. Ulrich Weigand | Phone: +49-7031/16-3727
STSM, GNU compiler and toolchain for Linux on System z and Cell/B.E.
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter | Geschäftsführung: Dirk
Wittkopp
Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht
Stuttgart, HRB 243294
Current Milestones:
|| || Planned || Estimate || Actual ||
||cp15-rework || 2012-01-06 || 2012-06-23 || ||
Historical Milestones:
||initial-a15-system-model || 2012-01-27 || 2012-01-27 || 2012-01-17 ||
||qemu-kvm-getting-started || 2012-03-04?|| 2012-03-04 || 2012-02-01 ||
== cp15-rework ==
* fixed various issues, sent out v2 series, looks good to me
== other ==
* qemu-linaro 2012.05 released
* thinking about how to handle TrustZone in the context of QEMU/KVM
(we're not going to try to do a full emulation, but we need to
define a coherent line for how we support running guests that
are expecting to run as either S or NS PL1/0 kernels)
* had a play with booting UEFI on QEMU -- fails early on trying
to use the TrustZone-only VBAR register
* usual upstream maintainer duties
-- PMM
On 17 May 2012 18:23, Zhenqiang Chen <zhenqiang.chen(a)linaro.org> wrote:
>> Some are marked as unsupported but shouldn't be:
>>
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-11a.c
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-11b.c
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-11.c
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-11c.c
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-25.c
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-26.c
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-28.c
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-2.c
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-32.c
>
> The root cause is "target vect_cmdline_needed". For those cases, they
> have notes as:
>
> /* { dg-do run { target vect_cmdline_needed } } */
>
> In function "check_effective_target_vect_cmdline_needed" of
> lib/target-supports.exp, it check_effective_target_arm_neon.
>
> For our build, it is arm neon,
> check_effective_target_vect_cmdline_needed return 0.
>
> A quick fix is to add another dg-do run like:
> /* { dg-do run { target arm*-*-*eabihf } } */
I've looked into this further and the tests make no sense. The test
themselves are turned off unless the compiler needs extra command line
arguments to enable some type of SIMD. See PR21292. Let's discuss
this on Monday.
I've put an updated list at:
http://people.linaro.org/~michaelh/incoming/hard-float-builder-diff-2.txt
The interesting ones below. They're a mix of assembler faults, ICEs,
and testisims. None are due to the change in triplet so please
propose your patch upstream.
-- Michael
+FAIL: gcc.c-torture/compile/sync-1.c -O0 (test for excess errors)
+FAIL: gcc.c-torture/compile/sync-3.c -O0 (test for excess errors)
/tmp/ccGuCO1R.s:463: Error: co-processor offset out of range
** Doesn't happen with a natty sysroot. Assembler fault?
+FAIL: gcc.dg/builtin-apply2.c execution test
** Testism. Skips if an explicit float-abi=hard is passed.
+FAIL: gcc.dg/pr48335-5.c (test for excess errors)
(insn 11 10 12 3 (set (reg:DI 141)
(unspec:DI [
(mem/c:DI (plus:SI (reg/f:SI 129 virtual-stack-vars)
(const_int -8 [0xfffffffffffffff8])) [2 S8 A32])
] UNSPEC_MISALIGNED_ACCESS))
/cbuild/slaves/ursa2/gcc-linaro-4.7+bzr114985~michaelh1~hard-builder-test/gcc/gcc-linaro-4.7/gcc/testsuite/gcc.dg/pr48335-5.c:16
-1
(nil))
** The unaligned access support doesn't include an unaligned DI pattern?
+FAIL: gcc.dg/torture/stackalign/builtin-apply-2.c -Os execution test
** Testism. Assumes doubles are passed in core registers.
+UNSUPPORTED: gcc.target/arm/mmx-1.c
/cbuild/slaves/ursa2/gcc-linaro-4.7+bzr114985~michaelh1~hard-builder-test/gcc/gcc-linaro-4.7/gcc/testsuite/gcc.target/arm/g2.c:12:1:
sorry, unimplemented: Thumb-1 hard-float VFP ABI
** Various forms. Needs thought.
The Linaro Toolchain Working Group is pleased to announce the release of
Linaro QEMU 2012.05.
Linaro QEMU 2012.05 is the latest monthly release of qemu-linaro. Based
off upstream (trunk) QEMU, it includes a number of ARM-focused bug fixes
and enhancements.
New in this month's release:
- Beagle bootrom emulation now correctly handles FAT12/FAT16
images (thanks to Peter Chubb for the bug report and patch).
- We now support running ARM BE8 userspace binaries (ie
byte-invariant big-endian data and little-endian code).
Known issues:
- Graphics do not work for OMAP3 based models (beagle, overo)
with 11.10 Linaro images.
- Audio may not work on Versatile Express models with the latest
Linaro kernel/hardware packs (LP:977610).
The source tarball is available at:
https://launchpad.net/qemu-linaro/+milestone/2012.05
More information on Linaro QEMU is available at:
https://launchpad.net/qemu-linaro
There will be no release of Linaro GDB this month. We're busy working
on upstreaming Android support and will backport them as they come
ready.
-- Michael
The Linaro Toolchain Working Group is pleased to announce the 2012.05
release of both Linaro GCC 4.7 and Linaro GCC 4.6.
Linaro GCC 4.7 2012.05 is the second release in the 4.7 series. Based
off the latest GCC 4.7.0+svn187448 release, it includes performance
improvements especially around 64 bit operations.
Interesting changes include:
* Updates to GCC 4.7.0+svn187448
* Uses the new /lib/ld-linux-armhf.so.3 loader for hard float binaries
* Adds support for negating 64 bit values in NEON
* Improves loading of 64 bit immediate values in NEON
Fixes:
* LP: #959242 ICE: in vect_is_simple_use_1, at tree-vect-stmts.c
* LP: #968766 GCC 4.6.3 (cc1) crashes when compiling MPFR 3.1.0
Linaro GCC 4.6 2012.05 is the fifteenth release in the 4.6 series.
Based off the latest GCC 4.6.3+svn187273 release, this is the second
release after entering maintenance.
Interesting changes include:
* Updates to 4.6.3+svn187273
Fixes:
* LP: #959242 ICE: in vect_is_simple_use_1, at tree-vect-stmts.c
* LP: #968766 GCC 4.6.3 (cc1) crashes when compiling MPFR 3.1.0
* LP: #972648 ICE (segfault) in gsi_for_stmt
The source tarballs are available from:
https://launchpad.net/gcc-linaro/+milestone/4.7-2012.05https://launchpad.net/gcc-linaro/+milestone/4.6-2012.05
Downloads are available from the Linaro GCC page on Launchpad:
https://launchpad.net/gcc-linaro
More information on the features and issues are available from the
release page:
https://launchpad.net/gcc-linaro/4.7/4.7-2012.05
Mailing list: http://lists.linaro.org/mailman/listinfo/linaro-toolchain
Bugs: https://bugs.launchpad.net/gcc-linaro/
Questions? https://ask.linaro.org/
Interested in commercial support? Inquire at support(a)linaro.org
-- Michael
Hi,
OpenEmbedded-Core/meta-linaro:
* reverted the gcc 4.7 support from the denzil branch as it's causing
too much trouble
* instead we'll use a oe-core master snaphsot for 4.7
* committed a fix to our kernel bbappend
* started to look into cbuild
* added configurations to support building the images for all
oe-core targets
* created lp:~kwerner/cbuild/oecore
* kicked off a build for ARM, MIPS, PPC, X86, X86_64 using Linaro
GCC 4.6 2012.04
Misc:
* IBM internal meetings
* public holiday on Thu, vacation on Fri
I'll be back on monday
Regards,
Ken
Hi Ramana. FYI, gcc trunk fails to bootstrap with:
../../../../gcc-4.8~/libgcc/libgcc2.c: In function '__mulvdi3':
../../../../gcc-4.8~/libgcc/libgcc2.c:397:1: internal compiler error:
in df_uses_record, at df-scan.c:3179
A cross compiler fails when building EEMBC with:
(insn 1166 1165 1167 155 (set (reg:CC 24 cc)
(compare:CC (reg:SI 2148 [ D.6766 ])
(const_int 5000 [0x1388]))) iirflt01/bmark.c:501 -1
(nil))
iirflt01/bmark.c:1138:1: internal compiler error: in extract_insn, at
recog.c:2131
The last revision that bootstrapped was 187203. 187223 and 187275 failed.
-- Michael
The GCC 4.7 merge testing is currently in progress. We're a little late
with it, so I'm spinning the release speculatively. This being the case
I've made the lp:gcc-linaro branch read-only, just in case.
This shouldn't prevent anybody from reading the branch with
"lp:gcc-linaro", but the "lp:~linaro-toolchain-dev/gcc-linaro/4.7" name
will be broken for a while, so you may find "bzr pull" broken. (The
reason being that the only way to make a bzr branch read-only is to
change its owner.)
I will put the branch back to its normal state as soon as the release is
done.
Andrew
Hi there. We'd like to run a Fast Model in the validation lab for KVM
testing. Is there a blueprint for this? What's the status?
Paul and I discussed a rough plan a few months ago. It was along the lines of:
* A x86 machine as the Fast Model host
* An emulated vexpress-a15 as the KVM host
* A vexpress-a15 as the KVM guest
* LAVA treats the Fast Model as a board
* Jobs are spawned into the LAVA scheduler
* Once the KVM host is running, everything else is toolchain specific
and done via shell scripts
The dispatcher would:
* Grab the hwpack
* Grab the nano rootfs
* Build the rootfs with separate kernel, initrd, and dtb using
linaro-media-create
* Start the Fast Model with the boot wrapper, kernel, and rootfs
* Use the console to run the test script
There's more information on the steps required at:
https://wiki.linaro.org/MichaelHope/Sandbox/KVMUseCase
-- Michael
== GCC ==
* Checked in patch to fix LP #959242 (GCC PR tree-optimization/52633)
to Linaro GCC 4.7 and 4.6.
* Completed design of new optimization sub-pass to improve
re-association of plus/minus chains for types with undefined
overflow (to improve end-of-loop value computation);
started implementation.
* Investigated GCC PR target/44141.
* Started investigation of TSVC vectorizer test kernels.
Mit freundlichen Gruessen / Best Regards
Ulrich Weigand
--
Dr. Ulrich Weigand | Phone: +49-7031/16-3727
STSM, GNU compiler and toolchain for Linux on System z and Cell/B.E.
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter | Geschäftsführung: Dirk
Wittkopp
Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht
Stuttgart, HRB 243294
* Linaro GCC
Did the merges from upstream ahead of the Linaro releases next week.
Unfortunately, with the Linaro office move the test system is running
slowly, and it took a long while for Uli's concerns about the 4.7 merge
to be confirmed, so this might cause a bit of delay while I remerge, and
retest.
Begun looking at a solution for GCC Bugzilla pr53189. I've rewritten the
anddi3, iordi3 and xordi3 patterns to avoid the problems when NEON is
not available, and also improved the situation when NEON is enabled.
There are still a few kinks that need to be ironed out with poorly
optimized extend-and-operate sequences, and then I'm done, I hope.
* Other
Public holiday on Monday.
Summary:
* arm-linux-gnueabihf and multilib support for linaro toolchain.
Details:
1. Make arm-linux-gnueabihf and multilib work together for linaro toolchain
* Tuning the include and link path and order.
* The build requires a sysroot with both soft and hard float support
(Refer precise-sysroot-armhf-r0c.tar.bz2 at
http://people.linaro.org/~michaelh/incoming/). With the sysroot, a
reference multilib toolchain build is at
http://people.linaro.org/~zhenqiangchen/
* Update the Makefiles in tests to support armv4t build.
* Setup a pandaboard and run some tests.
Plans:
* Investigate other code size regressions in 4.7.
* Prepare for linaro binary toolchain 2012.05 release.
Best regards!
-Zhenqiang
<Short week given bank holiday>
Progress
* Committed the VFP addressing modes patch.
* Investigated PR48941 patch a bit more - looks like an issue with the
register allocator around vzip and vuzp patterns and not sure what the
easiest way of sorting this really is. I wonder if we should be
looking at some of the issues around secondary reloads or friends for
this particular patch - we generate too many vmov's for my liking and
with more complex code this ends up as spills !
* Backported gnu_unique_objects patch. Need approval to commit in Linaro tree.
Plans
* Backport VFP addressing patch to Linaro tree.
* Finish smin-umin idiom patch in the backend.
* smin - umin idiom patch in middle-end - investigate further.
Absences:
* May 28- June 3 : Away to Linaro Connect.
(short week, bank holiday)
Current Milestones:
|| || Planned || Estimate || Actual ||
||cp15-rework || 2012-01-06 || 2012-06-23 || ||
Historical Milestones:
||initial-a15-system-model || 2012-01-27 || 2012-01-27 || 2012-01-17 ||
||qemu-kvm-getting-started || 2012-03-04?|| 2012-03-04 || 2012-02-01 ||
== cp15-rework ==
* various fixes following Rusty's review
* attempted to fix an issue where we would leak the hashtable
every time a new thread is created in linux-user mode. This
has run into the problem that qemu's current "copy this cpu
object" function has no place to insert cpu-specific code to
handle state which can't be simply shallow copied. This might
introduce a dependency on some object model rework, though
I'd prefer to avoid that.
== other ==
* put together and tested qemu-linaro 2012.05 prerelease tarball
* usual upstream review: couple of ARM fixes sent in for 1.1
-- PMM
Hi,
OpenEmbedded-Core/meta-linaro:
* finished script to automate the checkout, build and test of
oe-core+meta-linaro (denzil)
* currently supports GCC 4.6 based toolchains only
* pushed support for Linaro GCC 4.7 to meta-linaro/master
* backported support for GCC 4.7 based toolchains to the denzil branch
of meta-linaro
* when using GCC 4.7 against the oe-core release:
* Qt 4.8 fails to build (probably needs backporting a fix)
* sato images are booting but don't show the matchbox wm
Regards,
Ken
Hi Ken. I've checked in a rough script that builds OpenEmbedded
inside the cbuild Makefile-based auto builders.
To run it yourself:
* bzr branch lp:cbuild
* cd cbuild
* cp oecore.mk lib
* mkdir -p slaves/`hostname`
* cd slaves/`hostname`
* make -f ../../lib/oecore.mk
It's a Makefile which runs locally or remotely. Everything is under
cbuild/lib. The steps are driven by steps.mk which use stamp files to
see what is finished and what needs running. The normal steps are
configure; build; install; testsuite; run. I've split the build and
similar steps into one per architecture and added a ping to the
scheduler (http://ex.seabright.co.nz/helpers/scheduler) between each
one as it will take some time. Logs end up in gcc-native/*.txt.
To toast everything, do 'rm -rf gcc-native results'. The top level
build directory is $LBUILD (gcc-native/oecore). The variant build
directory (think -O3 vs -O2) is $VBUILD (gcc-native/oecore/$variant).
The architecture directory is $VBUILD/$arch. I've left $ARCHITECTURES
and $IMAGE as fallbacks so they can be overridden by the incoming job.
You should implement 'get-sizes' so we track the final image and package sizes.
I'd add a patch-% rule for any architecture specific patching such as
using the vexpress-a9 model. Use patch-% as the fallback and the
specific patch-arm for ARM specific. Add it as part of the configure.
It fetches a snapshot of OpenEmbedded and bitbake. The following are
snapshotted on change:
* kwerner/meta-linaro
* openembedded-core/denzil
and end up at:
http://builds.linaro.org/toolchain/snapshots/
We don't want download problems stopping us from running. The script
uses my normal tactics:
* Everything over HTTP
* Use a in-network proxy, set in ~/.wgetrc
* Pull from a mirror first or only
(http://builds.linaro.org/toolchain/misc/mirror/openembedded/)
Install polipo and echo http_proxy=http://localhost:8123/ > ~/.wgetrc.
I've seeded the mirror. We should keep track of any extras needed
such as due to other architectures.
BTW, I'm wondering about doing the build in zram backed ramdisk.
Might speed the build and not wear the build disk out.
-- Michael
Hi,
GDB for Android:
* Reviewed Carlos O'Donell response to my message in lsb-discuss to think
about the pros and cons of the approaches he mentioned, did some
investigation. Maybe the ABI-tag is not needed, at least for debugging
purposes (there may be other uses).
* Wrote patch which detects an Android app by looking at the ELF
interpreter field in the binary.
--
[]'s
Thiago Jung Bauermann
Linaro Toolchain Working Group
Hi,
GDB for Android:
* Struggled with creating and running a Linaro Android 2012.04 QEMU image.
* Failed to set up a network between the image and the host to run
gdbserver on it.
* Studied how GDB copes with uclibc and dietlibc regarding the jump buffer
format to compare it how Android GDB solves the problem. It turns out
that they both use the same format that glibc uses so nothing is needed
on GDB side.
* Researched Pandaboard and accessories to purchase.
--
[]'s
Thiago Jung Bauermann
Linaro Toolchain Working Group
* Linaro
Continued trying to understand lower-subreg and its impact on ARM
optimization. After much staring at RTL dumps and trying to minimize
test cases from large code bases I've not found an example of code where
disabling the lowering of pseudo-to-pseudo copies made the code larger
for anything other than unfortunate random knock-on effects (such as no
longer being able to use 16-bit thumb1 opcodes). I posted a message to
this effect on the gcc list, and I'll try benchmarking a patch for this
next week.
In the process of looking at lower-subreg, discovered a silly
missed-optimization bug with many DImode operations, and reported it to
GCC Bugzilla as pr53189.
Hi,
OpenEmbedded-Core/meta-linaro:
* created meta-linaro denzil branch to be used in conjunction with the
oe release
* added a patch that prevents GCC from installing libssp and
libstdc++-v3 to lib64 on X86_64 Linux
* merged patches that use vexpress defconfig only for qemuarmv7a
* built and tested all supported QEMU tarted (ARM, MIPS, PPC, X86,
X86_64) using Linaro GCC 4.6 2012.04
* All images (minimal, sato and Qt) are booting!
* started to work on the automation
Regards,
Ken
Summary:
* arm-linux-gnueabihf and multilib support for linaro toolchain.
* Code size benchmark analysis.
Details:
1. arm-linux-gnueabihf support for linaro toolchain
* Update gcc, libgcc and libstdc++ config to support the triplet.
* Update build scripts to gnueabihf.
* Add sample config for gnueabihf.
2. Multilib support for linaro toolchain
* Merge Terry's multilib patches
(http://gcc.gnu.org/ml/gcc-patches/2012-04/msg00975.htmlhttp://gcc.gnu.org/ml/gcc-patches/2012-05/msg00083.html) and revise
them for linaro.
* Update gcc.c and incpath.c to make multiarch and multilib work together.
* libgcc for armv4t (-mfloat-abi=soft) build fail: ld: error:
armv4t/libgcc_s.so.1.tmp uses VFP register arguments, ... does not.
Root cause: crt*.o from precise sysroot use VFP_args, while other
objects are built with -mfloat-abi=soft. We need additional crt*.o to
build libgcc for armv4t.
3. Code size regression analysis
We find more regression cases introduced by ivopt and loop invariant.
Plans:
* Investigate other code size regressions in 4.7.
* Finalize the arm-linux-gnueabihf and multilib support for linaro toolchain.
Best regards!
-Zhenqiang
I've lost track of the benchmark builds so I've started a manual todo list at:
https://wiki.linaro.org/MichaelHope/Sandbox/Todo
It's been messy with the validation lab being down and some builds
being in my home office and some in Cambridge. Let me know if I'm
missing any.
-- Michael
Hi folks,
We really need to push on with getting the loader path for armhf
standardised. The path that was agreed months ago is
/lib/arm-linux-gnueabihf/ld-linux.so.3
but clearly not everybody is using that yet. Dann has just posted an
updated patch for gcc, and we want to get this reviewed / fixed up /
accepted ASAP. Then we may need to backport it to older gcc releases.
This is *important* so that we can help vendors release binaries that
work on any hard-float distribution. For people who have made binaries
that still use the old, broken location /lib/ld-linux.so.3, we can put
symlinks in place *for now* but in the longer term as many distros
switch to multi-arch the symlink is not an acceptable solution.
I'm working on a more complete spec document for armhf to help us with
this kind of thing, but it's not going as smoothly as I'd hoped and I
don't want to wait for that as a blocker on the linker path.
Cheers,
--
Steve McIntyre steve.mcintyre(a)linaro.org
<http://www.linaro.org/> Linaro.org | Open source software for ARM SoCs
Current Milestones:
|| || Planned || Estimate || Actual ||
||cp15-rework || 2012-01-06 || 2012-06-23 || ||
Historical Milestones:
||initial-a15-system-model || 2012-01-27 || 2012-01-27 || 2012-01-17 ||
||qemu-kvm-getting-started || 2012-03-04?|| 2012-03-04 || 2012-02-01 ||
== other ==
* cleaned up and refactored QEMU GIC/NVIC code enough to provide
a solid foundation for the in-kernel irqchip support. Posted
the refactoring bits to qemu-devel. This should be enough to
unblock Marc Z.
* qemu-linaro: LP:978694: added patch from Peter Chubb fixing
beagle bootrom FAT12/FAT16 handling
* finished a trivial bit of cleanup of an omap3 ID register patch
I'd had lying around half-done for a while
* investigating a bug reported by Alex Graf where we get a segfault
gtk-query-immodules-2.0 but only if qemu's 'reserve memory space'
feature is being used: this appears to be an interestingly nasty
case where if the guest does mmap(dll); execute code in dll;
munmap(); mmap(dll 2); execute code in dll 2; and the two mmap()s
happened to pick the same address then we will end up using a
stale cached translation from dll 1 when executing dll 2...
-- PMM
== GCC ==
* Completed testing and benchmarking of patch to use vld1/vstd1
instead of vldm/vstdm for vector moves. Saw no regressions but
only minor benefits.
* Checked in patch to fix LP #959242 (GCC PR tree-optimization/52633)
to FSF mainline and 4.7 branch; backports to Linaro GCC 4.7 and 4.6
pending.
* Checked in mainline patch to enable -fsched-pressure by default
on s390.
* Ongoing work on improving end-of-loop value computation.
* Started investigation of TSVC vectorizer test kernels.
Mit freundlichen Gruessen / Best Regards
Ulrich Weigand
--
Dr. Ulrich Weigand | Phone: +49-7031/16-3727
STSM, GNU compiler and toolchain for Linux on System z and Cell/B.E.
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter | Geschäftsführung: Dirk
Wittkopp
Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht
Stuttgart, HRB 243294
Hi Uli,
While looking into something else I ran into these - I wonder how many
of these GCC manages to vectorize ...
http://www.netlib.org/benchmark/livermorec . These look interesting
from a vectorizer kernels point of view.
The other interesting paper of note was this PACT paper on
vectorization benchmarks comparing icc , xlc and GCC which might
provide some interesting hints / reading.
http://polaris.cs.uiuc.edu/~garzaran/doc/pact11.pdf . The appropriate
benchmarks kernels are linked to below.
http://polaris.cs.uiuc.edu/ ̃maleki1/TSVC.tar.gz.
regards,
Ramana
I've put the agenda for Monday's call at:
https://wiki.linaro.org/WorkingGroups/ToolChain/Meetings/2012-05-07
which is:
* Review action items from last meeting
* Connect sessions:
* GDB for Android
* GCC performance call - Live!
* KVM performance
* Renderscript
* Android benchmarking
* Dalvik improvements
* Hard float switchover status
* multiarch upstreaming
* Next week is release week
* vld1, EEMBC results, and noise
* twolf result variance
* KVM minimum features
* UP/UP, Ubuntu
* [[MichaelHope/Sandbox/KVMUseCase]]
Feel free to edit,
-- Michael
I've done some minor updates to the instructions for working with
gcc-linaro, bzr, and merge requests at:
https://wiki.linaro.org/WorkingGroups/ToolChain/BzrTips
The interesting changes are using:
* bzr commit --fixes=lp:nnnn to link a branch to a bug number
* bzr branch --hardlink to cut down on branch time and disk usage
* bzr-merge-changelog to automatically merge ChangeLog.linaro
-- Michael
Greetings,
I successfully built BusyBox using the 4.5.2 toolchain. When I try to build BusyBox using the same config with the 4.6.3 toolchain I get the following error:
The Linaro 4.5.2 toolchain was installed in my Ubuntu 11.04 distro using aptitude.
The Linaro 4.6.3 toolchain binaries, downloaded via Launchpad, were installed into my own tools directory.
busybox # make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
scripts/kconfig/conf -s Config.in
can't find file Config.in
make[2]: *** [silentoldconfig] Error 1
make[1]: *** [silentoldconfig] Error 2
make: *** [include/autoconf.h] Error 2
I get the same error if I try 'make oldconfig' or 'make menuconfig'.
Is there a PATH I need to set? Am I missing a package?
Right now my PATH has following 4.6.3 directories set:
linaro-4.6.3/bin
linaro-4.6.3/arm-linux-gnueabi/libc/usr/include
linaro-4.6.3/arm-linux-gnueabi/libc/lib/arm-linux-gnueabi
linaro-4.6.3/arm-linux-gnueabi/libc/usr/include
Thanks,
Dan
I thought I'd send an update on the SPEC 2000 twolf variance. We're
seeing a high amount of variance in the results for the SPEC 2000
twolf, vpr, and galgel benchmarks. I've run tests on a PandaBoard,
Origen, and IGEPv2 and gotten a coefficent of variance of 0.014,
0.017, and 0.003 which suggests that the problem is Cortex-A9
specific. twolf is hard on the cache so my theory is that it's
something to do with the memory subsystem. I currently have a
PandaBoard running with SMP, heap randomisation, virtual address
randomisation, and the branch predictor off and the CPU down clocked
to the non-overdrive 600 MHz. I'll let this run overnight and see if
the results are tighter.
To solve Andrew's immediate problem, I'm running SPEC on the 64 bit
core register shifts on the OMAP3. The results are tight enough that
we should be able to show any regressions.
-- Michael
I added Ubuntu 12.04 'precise' based sysroots to Jenkins yesterday. They
are built using 'armhf' architecture and available in three flavours:
- alip
- nano
- ubuntu-desktop
So far only -dev ones are present, will work on -dbg ones soon.
We have 'nano' one built and available to fetch at
http://snapshots.linaro.org/precise/images/nano-dev/ - rest will be
built when there will be machine free to do that.
They will also be moved to http://snapshots.linaro.org/precise/sysroots/
to not make people try to boot them ;)
Please take a look do they work as you want and tell me what kind of
changes you would like to have, which images are not needed, which
should be added. Are there any users for -dbg style sysroots?
I did see gcc-4.7 fail to build for an sf/hf multilib configuration. The reason
was that gcc -print-multi-directory didn't print anything for the non-default,
and gcc -print-multi-lib only prints `.'. The reason is that set_multilib_dir
in gcc.c only consults MULTILIB_DEFAULTS (only defined in linux-elf.h), but not
the default configure options in configargs.h. This proposed patch updates
MULTILIB_DEFAULTS depending on the configure options. An alternative approach
would be to update set_multilib_dir and print_multilib_info to lookup the
configure_default_options in configargs.h as well.
Note that this didn't fail to build in gcc-4.6, but I can't see yet what change
did cause the build failure.
Matthias
* Linaro
Continued looking at the lower-subreg problem (that the lowering is only
really intended for 32-bit targets that don't have 64-bit operation).
Without NEON this is only really a problem for "ldrd/strd" 64-bit loads
and stores: the patterns are all (or should be all) written such that
they only access DImode regs via SUBREG, so it all works well. When
adding NEON 64-bit this becomes less clear: many operations must remain
in DImode without SUBREG until after register allocation. The
lower-subreg passes mostly cope with this well enough, but it has some
features that attempt to lower zero_extends, certain shifts, and
pseudo-reg copies, unconditionally. I've been investigating what happens
if I disable the pseudo-reg copy "optimization" in the first
lower-subreg pass. As I expected, in many cases it actually leads to
smaller code (more use of LDRD/STRD) without NEON, and even better
results with NEON. Unfortunately I have found so counter-examples, so
I'm trying to figure out what's going on there: for some reason reload
goes crazy and starts spilling things to the stack, even though I can't
see that more registers are required. More investigation required.
Richard E approved my NEON-immediates patch for upstream. I don't have
time to commit it with proper care this week, so that's delayed to next
week.
* Other
Vacation Monday and Tuesday. Had a fun long weekend in Cornwall with my
family.
Progress
Away last week - nothing to report. Will be in BST + 4:30 timezone
this week.
Plans
* Finish off the VFP addressing modes patch.
* Follow up on iterations idiom patch upstream
* Pursue backporting gnu_unique_object upstream.
* Look at some of the existing blueprints and start discussions around
prioritizing this.
* Investigate some of the SEGVs with h-c partitioning in the future.
Hi Zhenqiang. Ubuntu Precise is now out and has switched to hard
float by default. I want to do the same for the next binaries
release. Here's the work that needs to be done:
* Bring in the new sysroot
* Change the triplet to arm-linux-gnueabihf
* Change GCC's configure so it recognises the new triplet
* Change the default float ABI to hard
We should include a soft float (not softfp) multlib libgcc for those
who use the binary toolchain to build bare metal programs like u-boot
or the kernel. They don't use floating point, but the linker will
complain about mixed calling conventions.
I've updated make-sysroot.sh and spun an experimental sysroot at
http://people.linaro.org/~michaelh/incoming/precise-sysroot-armhf-r0.tar.bz2.
Hopefully we'll use Marcin's ones instead.
Matthias has patches for many of these changes. Let's talk about it
at tonight's meeting.
Could you start on these? I'd like the changes done within two weeks
so we have plenty of time to test.
-- Michael
Summary:
* Linaro binary toolchain 2012.04 release.
* Code size benchmark analysis.
Details:
1. Validate and bug fix for linaro binary toolchain 2012.04 release.
2. Investigate code size regressions in 4.7
Find more regression cases due to loop invariant hoisting, and tests
should we can reduce some codesize with option
-fno-move-loop-invariants. Some regressions are due to
pass_reorder_blocks, which is disabled for -Os in 4.7. For some cases,
ivopt will introduce to more codes and function inline might lead to
more spilling. We also try linaro 2012.04 baremetal build. But there
is a few bytes regression compared with 4.7 trunk.
3. Setup the qemu env following Michael’s instructions
(https://wiki.linaro.org/MichaelHope/Sandbox/QEMUCrossTest) and tests
show it work.
4. Try to build gcc-linaro-2012.04 configured with "--with-fpu=neon
--with-float=hard" based on a precise sysroot
(precise-sysroot-armhf-r0.tar.bz2) from
http://people.linaro.org/~michaelh/incoming
* Linux build is OK without any change.
* Mingw32 build reports error. After removing the code, the build PASS.
[ERROR] .../libc/usr/include/arm-linux-gnueabihf/sys/types.h:117:19:
error: two or more data types in declaration specifiers
Plans:
* Investigate other code size regressions in 4.7.
Planed leaves:
* Labor Day holiday: April 30 and May 1.
Best regards!
-Zhenqiang
Hi,
OpenEmbedded-Core/meta-linaro:
* pushed support for Linaro GCC 4.6.4 2012.04 and for the
2012.03-20120326 binary toolchain
* updated the wiki
* created a branch to support GCC 4.7
* built several images using several GCC 4.7 based toolchains (OE,
linaro 4.7.1, binary toolchain 2012-04)
* minimal images are working
* sato image shows splash screen forever (won't bring up the
matchbox window manager)
* only when using the binary toolchain 2012-04 ? -> needs to be
analyzed
* Qt 4.8 requires small patches (posted and merged into
oe-core/master-next)
Libunwind:
* User reports issues when backtracing through signal frame
* reason: the lib falls back on APCS frame parsing which usually
segfaults on EABI systems
* provided debugging hints and insights on how libunwind handles
signal frames
* posted a reduced testcase
Regards,
Ken
== GCC ==
* Fixed regression (ICE when building EEMBC) with patch to use vld1/vstd1
instead of vldm/vstdm for vector moves. Updated merge request and
restarted testing.
* Implemented patch to fix LP #959242; backported to Linaro GCC 4.7 and
created merge request for regression testing and benchmarking.
* Ongoing discussions on -fsched-pressure; worked on patch to enable it
by default on s390.
* Ongoing work on improving end-of-loop value computation.
Mit freundlichen Gruessen / Best Regards
Ulrich Weigand
--
Dr. Ulrich Weigand | Phone: +49-7031/16-3727
STSM, GNU compiler and toolchain for Linux on System z and Cell/B.E.
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter | Geschäftsführung: Dirk
Wittkopp
Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht
Stuttgart, HRB 243294
Current Milestones:
|| || Planned || Estimate || Actual ||
||cp15-rework || 2012-01-06 || 2012-06-23 || ||
Historical Milestones:
||initial-a15-system-model || 2012-01-27 || 2012-01-27 || 2012-01-17 ||
||qemu-kvm-getting-started || 2012-03-04?|| 2012-03-04 || 2012-02-01 ||
== cp15-rework ==
* have had no review feedback on this patchset yet, and we're now
into QEMU 1.1 hardfreeze. I'm hoping to get review during the
month we're in freeze and then commit early June when 1.2 opens.
However since that coincides with me being on holiday I've set the
Estimate date to allow for that plus a week or so of buffer.
Actual further work required is probably 1 week max, most of this
is waiting-for-other-people or being-away.
== kvm-boot-wrapper ==
* pushed dtb support changes to git repo
== other ==
* basic QEMU side support for the VGIC kernel implementation
Marc Z has been working on. I have something that seems to
work but it's still a bit prototype and missing features.
* investigated why my guest kernel was causing kvm to exit:
turns out that we haven't implemented the kernel support for
gracefully not using KVM if not booted in hyp mode, so trying
to boot a KVM-aware kernel as a KVM guest doesn't work yet.
* sent off the final few patches which I want in QEMU 1.1 before
hardfreeze at the start of next week
* tested a beagle board linaro snapshot image (it panics on
bootup, LP:989737)
* trying to clarify the KVM todo list...
-- PMM
Greetings,
I successfully built and booted Linux 3.1 for the beaglebone (TI am335x) using the 4.5.2 toolchain. I rebuild the same kernel using the same config with the 4.6.3 toolchain, but the board hangs at "Uncompressing Linux... done, booting the kernel."
I halt the beaglebone at the U-Boot prompt and have it download and run uImage from an NFS mounted RFS.
The Linaro 4.5.2 toolchain was installed in my Ubuntu 11.04 distro using aptitude.
The Linaro 4.6.3 toolchain binaries, downloaded via Launchpad, were installed into my own tools directory.
4.5.2 INFO:
./gcc-linaro-arm-linux-gnueabi-2012.01-20120125_linux/bin/arm-linux-gnueabi-gcc --version arm-linux-gnueabi-gcc (crosstool-NG linaro-1.13.1-2012.01-20120125 - Linaro GCC 2012.01) 4.6.3 20120105 (prerelease) Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Built with: $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage
4.6.3 INFO:
./bin/arm-linux-gnueabi-gcc --version arm-linux-gnueabi-gcc (crosstool-NG linaro-1.13.1-2012.01-20120125 - Linaro GCC 2012.01) 4.6.3 20120105 (prerelease) Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Built with: $ make ARCH=arm CROSS_COMPILE=<mytoolsdir>/gcc-linaro-arm-linux-gnueabi-2012.01-20120125_linux/bin/arm-linux-gnueabi- uImage
Could it have anything to do with my binutils and/or U-Boot version? Any debugging tips?
U-Boot INFO:
U-Boot# version
U-Boot 2011.09-00010-g81c8c79 (Feb 13 2012 - 14:48:03) arm-angstrom-linux-gnueabi-gcc (GCC) 4.5.4 20111126 (prerelease) GNU ld (GNU Binutils) 2.20.1.20100303
Thanks for reading this far.
We use QEMU to test programs built by the toolchain binary release for
correctness. I've written up the instructions for spinning up your
own at:
https://wiki.linaro.org/MichaelHope/Sandbox/QEMUCrossTest
It's focused on simplicity - getting a running, SSH only Cortex-A9 up
and going as soon as possible. It's not the latest, not graphical,
and doesn't replace the deeper documentation at:
https://wiki.linaro.org/Resources/HowTo/Qemu
-- Michael
The Linaro Toolchain Working Group is pleased to announce the 2012.04
release of the Linaro Toolchain Binaries, a pre-built version of
Linaro GCC and Linaro GDB that runs on generic Linux or Windows and
targets the glibc Linaro Evaluation Build.
Uses include:
* Cross compiling ARM applications from your laptop
* Remote debugging
* Build the Linux kernel for your board
What's included:
* Linaro GCC 4.7 2012.04
* Linaro GDB 7.4 2012.04
* A statically linked gdbserver
* A system root
* Manuals under share/doc/
The system root contains the basic header files and libraries to link
your programs against.
Interesting changes include:
* Switches to the new GCC 4.7 based Linaro GCC
* Adds native language support to most of the programs
* Adds the mudflap, ssp, and gomp runtime libraries
* Enables gnu_unique_object support in GCC
Please see the README about running 4.7 based programs on a system
with 4.6 based runtime libraries.
The Linux version is supported on Ubuntu 10.04.3 and 11.10, Debian
6.0.2, Fedora 16, openSUSE 12.1, Red Hat Enterprise Linux Workstation
5.7 and later, and should run on any Linux Standard Base 3.0
compatible distribution. Please see the README about running on
x86_64 hosts.
The Windows version is supported on Windows XP Pro SP3, Windows Vista
Business SP2, and Windows 7 Pro SP1.
The binaries and build scripts are available from:
https://launchpad.net/linaro-toolchain-binaries/trunk/20yy.mm
Need help? Ask a question on https://ask.linaro.org/
Already on Launchpad? Submit a bug at
https://bugs.launchpad.net/linaro-toolchain-binaries
On IRC? See us on #linaro on Freenode.
Other ways that you can contact us or get involved are listed at
https://wiki.linaro.org/GettingInvolved.
-- Michael
Hi,
GDB for Android:
* Wrote patch for bionic adding .note.ABI-tag to the crtbegin
object files. Sent to Google engineers, They think it's
going in the right direction and I will submit via gerrit.
* Isolated Android-related changes in diff between AOSP's
GDB 7.3.x and FSF GDB 7.3. There are a lot of unrelated
changes there.
* Sent e-mail asking for comments about the Android extension
to .note.ABI-tag to the LSB and binutils mailing lists.
Got only one e-mail of feedback.
--
[]'s
Thiago Jung Bauermann
Linaro Toolchain Working Group
Hi,
* catching up with emails
* rebased against current OE-core
* OE is planning a release in april (following the yocto schedule)
* noticed the libc of our binary toolchain is lacking i18n
* caused a packaging issue for meta-linaro but easy to workaround
* contents of the i18n folder are only used at runtime (not relevant
for compiliation time)
* updates in order to support for the 2012.03-20120326 binary toolchain
* locations of sibgcc_s.so and libstdc++.so are different
* added support for linaro gcc 2012.04
* looked at the meta-linaro patches made by Khem
Regards,
Ken
The EEMBC supplied build system has a couple of bugs with library
order (putting -lrt at the start of the command line instead of the
end) and the harness library (depending on THOBJS but linking against
THLIB). I've fixed these and pushed to our private branch.
Ulrich, I've spawned builds of your vld1.64 branch and its ancestor.
Once those are done I'll spawn a benchmark run against them.
-- Michael
Summary:
* Code size benchmark analysis.
* Linaro binary toolchain 2012.04 release.
Details:
1. Tuning the heuristic to assign register for copies.
* Take the CONFLICT_HARD_REGS and HARD_REG_COSTS of copies into
account when conflict_costs is NULL in
update_conflict_hard_regno_costs, which handles the following case:
a = ...
...
b = a // a can be assigned with r3 or r5 which have the same min_cost.
... // b is conflicted with r3 or the cost of r3 is very high
= b
In this case, if a is assigned with r3, b can not be assigned with
r3, so the copy "b = a" can not be optimized. When taking the
CONFLICT_HARD_REGS or HARD_REG_COSTS of b into account, we can assign
a with r5.
2. Linaro binary toolchain 2012.04 release.
* Update gdb/TOOLCHAIN_PKGVERSION/README to 2012.04.
* Test workaround localization patch to fix lp:918926.
* Local build and tests show the toolchain can find the
corresponding .mo file.
* But if the host system does not have the corresponding font
packages, it will show some mess characters.
* gdb does not have gdb.mo.
3. Investigate code size regressions in 4.7.
* Loop invariant hoisting might increase register pressure, which
leads to much more spilling.
Plans:
* Finalize Linaro binary toolchain 2012.04 release
* Investigate other code size regressions in 4.7.
Planed leaves:
* Labor Day’s holiday: April 30 and May 1.
Best regards!
-Zhenqiang
Hi,
I have been using CodeSourcery tool-chains since forever, and I
decided to try Linaro's tool-chain. So far I haven't had any issues,
except one:
libgcc_s.so.1 is located in arm-linux-gnueabi/lib, which is not
available from arm-linux-gnueabi/libc. The CodeSourcer tool-chain has
all those files inside the 'libc' directory, which is useful for
Scratchbox2, because you need to specify a "target root" which is
basically the libc directory which acts in a similar fashion to /.
I've managed to create a rule to workaround this issue, but I wonder
why are those files in that location, why not in 'libc/lib'?
Cheers.
--
Felipe Contreras
=== Progress ===
* Worked on the VFP addressing modes patch upstream. Handled most
comments. Final version has finished testing and looks almost ready to
commit.
* Investigated an issue with min type transformations for loop
terminating conditions. Wrote up a small patch which appears to do the
right thing - passed a bootstrap on x86 but that probably means it
never got triggered :( .
The particular case of interest was not vectorizing :
#define min(x,y) ((x) <= (y) ? (x) : (y))
int a[256] __attribute__((aligned (16)));
int b[256] __attribute__((aligned (16)));
int c[256] __attribute__((aligned (16)));
void foo (int x, int y)
{
int i;
for (i = 0;
i < x && i < y;
// i < min (x, y);
i++)
a[i] = b[i] * c[i];
}
but vectorizing the commented region. I've tentatively worked out a
fix in tree-loop-im.c which looks like a bit of a grotesque hack ....
* Attended LLVM devcon in Week 15. Useful and interesting and conference.
== Plans ==
* Pursue backporting gnu_unique_object upstream.
* Look at some of the existing blueprints and start discussions around
prioritizing this.
* Investigate some of the SEGVs with h-c partitioning.
* Finish off the VFP addressing modes patch.
Absences.
* 03 May 2012 - 08 May 2012.
* Linaro Connect Q2.12 - May 28 - June 1 -
== GCC ==
* Checked in backport patch to fix LP #972648
into Linaro GCC 4.6.
* Checked in fix for incorrect vld alignment hints to
FSF mainline and 4.7 branch.
* Investigated options to fix stack re-alignment.
* Ongoing investigation of LP #959242: design problem in vectorizer
pattern detection logic causes ICE in certain cases where an
original sequence is recognized as part of *two* potential patterns
simultaneously.
* Ongoing work on improving end-of-loop value computation.
Mit freundlichen Gruessen / Best Regards
Ulrich Weigand
--
Dr. Ulrich Weigand | Phone: +49-7031/16-3727
STSM, GNU compiler and toolchain for Linux on System z and Cell/B.E.
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter | Geschäftsführung: Dirk
Wittkopp
Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht
Stuttgart, HRB 243294
Current Milestones:
|| || Planned || Estimate || Actual ||
||cp15-rework || 2012-01-06 || 2012-04-10 || ||
Historical Milestones:
||initial-a15-system-model || 2012-01-27 || 2012-01-27 || 2012-01-17 ||
||qemu-kvm-getting-started || 2012-03-04?|| 2012-03-04?|| 2012-02-01 ||
== cp15-rework ==
* sent out v1 patchseries for cp15 cleanup to the mailing list, finally
* handled review comments on drop-cpu-reset-model-id patchseries
== kvm-boot-wrapper ==
* imported libfdt device tree library and Dave Martin's code from
the big.LITTLE boot-wrapper, to add support to the KVM boot wrapper
for handling device tree blobs. Patch series sent, will probably
commit next week unless there are review issues
* that will more or less wrap this blueprint up
== other ==
* usual upstream patch review; QEMU 1.1 soft feature freeze was start
of this week, hardfreeze will be beginning of May, people (including
me :-)) are trying to squeeze things in under the wire...
-- PMM
* Linaro GCC
Investigated the latest test failure for the neon-extend patch. The test
for GCC Bugzilla 43137 is failing again. It turns out to be because my
switching sign_extend to use a DImode output, rather than two SImode
subreg outputs has exposed a bug in the lower-subreg pass. I've spent
most of the week trying to figure what can be done about this and
discussing the problem with Richard Sandiford upstream.
Richard Earnshaw approved my neon-negate patch. That patch depends on
the neon-immediates patch which is not approved yet, so I'll have to
wait to commit it.
Continued looking at NEON-v-core register allocation. Not much progress
this week though.
* Other
Created a patch to make the GCC RTL dumps easier to diff. Posted it
upstream and discussed it on the list.
Vacation on Friday.
* Next week
Vacation Monday and Tuesday
Hello,
I've been following up on the discussion we had on Monday regarding stack
alignment, and noticed that I had mis-remembered the current state of
affairs. Ramana asked me on Tuesday to provide a write-up of the actual
status, so here we go ...
To summarize the background of the problem: on ARM, the incoming stack
pointer is only guaranteed to be aligned to an 8 byte boundary. This means
that objects on the stack (local variables, spill slots, temporaries etc.)
cannot easily be aligned to more than 8 bytes. This can potentially cause
problems in two situations:
1) The object's default alignment (according to its type) is larger than 8
bytes
2) The object has a forced non-default alignment that is larger than 8
bytes
The first situation should in theory never appear, since according to the
ARM ABI all types have a default alignment of at most 8 bytes. However,
due to the current mix-up in GCC, vector types actually are considered to
have a 16-byte alignment requirement in GCC.
The second situation can only appear with local variables that are declared
using attribute ((aligned)).
We had discussed on Monday that we need to fix the second situation, since
this can always occur and is supported on other platforms. By doing so,
we would then automatically fix the first situation as well.
However, this reasoning turns out to be incorrect. There are currently in
GCC *two* completely separate mechanisms that can be used to align objects
on the stack to larger than the ABI guaranteed stack pointer alignment:
A) Re-alignment of the full stack frame. This is what is used by the Intel
back-end (and only the Intel back-end). At function entry, generated code
will align the stack pointer itself to whatever is necessary to fulfil
alignment requirements of all objects on the stack. This may necessitate
follow-on changes: the frame pointer, if there is one, will likewise need
to be aligned at runtime. Also, since incoming stack arguments are now no
longer at a fixed offset relative to the stack pointer *or* frame pointer
in some cases, we might need an extra register as argument pointer. This
method allows extra alignment for *any* object on the stack, but needs
significant back-end support in order to be enabled on any non-Intel
architecture.
B) Dynamic allocation of selected stack variables. This is implemented by
common code with no involvement of the back-end. In effect, the code in
cfgexpand.c:expand_stack_vars that decides on how to allocate local
variables on the stack will remove all variables that require extra
alignment and place them into an extra structure. Generated prologue code
will then in effect dynamically allocate and align that structure on the
stack, and just store a pointer to it as "variable" into the normal stack
frame. All other areas of the frame are unaffected. Since this method
just simulates code the programmer could have written themselves using
alloca, it does not require *any* back-end support and is enabled by
default everywhere. However, it only works for regular local variables,
and not for any other objects on the stack.
Objects on the stack *except* local variables always use default alignment.
Since on most platforms, except Intel and *currently* ARM, the ABI stack
pointer alignment is sufficient to implement default alignments, method B)
as above is able to fulfil all stack alignments. Intel uses method A), so
they're also OK. In effect, it's only ARM due to the vector type
alignment problem that runs into the situation that neither method works.
Under those circumstances, given that:
- we want to fix vector type alignment in order to become ABI compliant
- once we've fixed this, we're in the same situation as other platforms and
method B) already fixes stack alignment problems
- implementing method A) is therefore both quite involved *and* actually
superfluous
I'd now rather recommend that we *don't* try to implement method A) (full
stack-frame re-alignment) on ARM.
Comments?
Mit freundlichen Gruessen / Best Regards
Ulrich Weigand
--
Dr. Ulrich Weigand | Phone: +49-7031/16-3727
STSM, GNU compiler and toolchain for Linux on System z and Cell/B.E.
IBM Deutschland Research & Development GmbH
Vorsitzende des Aufsichtsrats: Martina Koederitz | Geschäftsführung: Dirk
Wittkopp
Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht
Stuttgart, HRB 243294
Hi,
GDB for Android:
* Continued conversation about .note.ABI-tag.
* Committed upsream the second of three patches for building
gdbserver on Android.
* Continued working on a crtbrand.c for bionic.
2012.04 release:
* Tested the gdb-linaro/7.4 branch on armv5tel, x86 and x86_64, both
natively and remotely. Compared results against the 2012.02 release.
* Ran the release process, made the release.
--
[]'s
Thiago Jung Bauermann
Linaro Toolchain Working Group
Hi,
GDB for Android:
* Investigated .note.ABI-tag generation in glibc and FreeBSD.
Wrote crtbrand.c for bionic based on FreeBSD's crtbrand.c.
Tried to integrate it with bionic's build system.
* Contacted Google engineers about adding .note.ABI-tag to Android
binaries.
2012.04 release:
* Started working on the release. Applied the latest patches from
the FSF 7.4 branch to gdb-linaro/7.4 and also my patches to compile
gdbserver with the Android toolchain.
--
[]'s
Thiago Jung Bauermann
Linaro Toolchain Working Group
* Linaro GCC
Spun release tarballs for Linaro GCC 4.6 and 4.7. Pushed them to
Michael's servers and launched the testing.
Continued trying to get the 64-bit NEON stuff to work. The negdi2 patch
needed some reworking following upstream review, and the extend patch
has mysteriously reintroduced a performance regression when the
operation is done in core-registers, which needs to be solved, but the
other patches seem ok at the moment, although the shift stuff is blocked
on benchmarking.
I've begun looking at how my changes affect spec2000, and whether the
register allocation could be done better. Unfortunately, given that the
test systems are currently giving spec results with a low level of
consistency (and therefore confidence), this has mostly been by visual
inspection, so far.
* Other
Public Holiday on Monday.
I have a cross toolchain I configured with "--with-arch=armv7-a --with-cpu=cortex-a9 --with-tune=cortex-a9" and I want the linker to emit armv4t compatible thumb interworking, but I can't seem to get it to.
I noticed that if I create a armv4t toolchain with "--with-arch=armv4t --with-cpu=arm7tdmi --with-tune=arm7tdmi" and then I pass "--use-blx" to the linker it will emit armv7 thumb interworking. There doesn't seem to be any inverse "--no-use-blx" type switch though. Is this a bug/limitation of the linker or am I misunderstanding something?
-Allen
nvpublic
Current Milestones:
|| || Planned || Estimate || Actual ||
||cp15-rework || 2012-01-06 || 2012-04-10 || ||
Historical Milestones:
||initial-a15-system-model || 2012-01-27 || 2012-01-27 || 2012-01-17 ||
||qemu-kvm-getting-started || 2012-03-04?|| 2012-03-04?|| 2012-02-01 ||
== cp15-rework ==
* completed last of the register conversions, started on the final
check-through and polish before it goes out to the mailing list
* implemented changes following review of the clean-up-reset patchset
== other ==
* qemu-linaro 2012.04 final testing (confirming an audio issue on
the vexpress model LP:977610 wasn't a regresion) and release
* patch review: pl330 dma controller model
* patch review: samsung's sd card model overhaul
* minor patch: fix compile failure on bsd
* minor patch: fix failure to reset timer on a9 mptimer reset
* minor patch: diagnose attempts to use python3 at configure time
* sent arm-devs.next pullreq
* put together a bug report in the form of a youtube video (!) as
requested by the gmail folks
-- PMM
== GCC ==
* Committed fix for LP #968766 (PR tree-optimization/52880)
to FSF mainline and Linaro GCC 4.6 and 4.7.
* Created merge reqest to fix LP #972648 for Linaro GCC 4.6
by backporting mainline patch; pending approval.
* Updated patch to use vld1.64/vst1.64 instead of vldm/vstm
for vector moves. Testing detected problems in GCC core
memory alignment logic (GCC assumes vector types are
naturally aligned, which contradicts ARM ABI and ARM
back-end assumptions). Started discussion on possible
fixes.
* Updated and retested patch to use vld1/vst1 to implement
vec_set/vec_extract for cases where the scalar operand
resides in memory.
* Ongoing work on fixing LP #959242.
* Ongoing work on improving end-of-loop value computation.
Mit freundlichen Gruessen / Best Regards
Ulrich Weigand
--
Dr. Ulrich Weigand | Phone: +49-7031/16-3727
STSM, GNU compiler and toolchain for Linux on System z and Cell/B.E.
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter | Geschäftsführung: Dirk
Wittkopp
Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht
Stuttgart, HRB 243294
The Linaro Toolchain Working Group is pleased to announce the release of
Linaro GDB 7.4 2012.04.
Linaro GDB 7.4 2012.04 is the second release in the 7.4 series. Based
off
the latest GDB 7.4, it includes a number of ARM-focused bug fixes and
enhancements.
Interesting changes include:
* gdbserver can now be compiled with Android's toolchain.
* Additional fixes from the GDB 7.4 branch, one of them being
that it doesn't require makeinfo to build anymore.
The source tarball is available at:
https://launchpad.net/gdb-linaro/+milestone/7.4-2012.04
More information on Linaro GDB is available at:
https://launchpad.net/gdb-linaro
--
[]'s
Thiago Jung Bauermann
Linaro Toolchain Working Group
The Linaro Toolchain Working Group is pleased to announce the release of
Linaro QEMU 2012.04.
Linaro QEMU 2012.04 is the latest monthly release of qemu-linaro. Based
off upstream (trunk) QEMU, it includes a number of ARM-focused bug fixes
and enhancements.
New in this month's release:
- ppoll syscall now supported in ARM linux-user mode
- the SETEND instruction in the Thumb encoding now UNDEFs to
match behaviour for the ARM encoding
- the OMAP36xx UART FIFO status registers are now implemented
(thanks to Jan Vesely)
Known issues:
- Graphics do not work for OMAP3 based models (beagle, overo)
with 11.10 Linaro images.
- Audio may not work on Versatile Express models with the latest
Linaro kernel/hardware packs (LP:977610).
The source tarball is available at:
https://launchpad.net/qemu-linaro/+milestone/2012.03
More information on Linaro QEMU is available at:
https://launchpad.net/qemu-linaro
The Linaro Toolchain Working Group is pleased to announce the 2012.04
release of both Linaro GCC 4.7 and Linaro GCC 4.6.
Linaro GCC 4.7 2012.04 is the first release in the 4.7 series. Based
off the latest GCC 4.7.0+svn186061 release, it includes performance
improvements especially around 64 bit operations.
Interesting changes include:
* Our first 4.7 based release
* Updates to GCC 4.7.0+svn186061
* Better use of 16 bit Thumb-2 instructions for smaller code size
* Implements 64 bit ones complement in NEON
* Adds support for the ARMv6 saturation instructions
* Backports the NEON lexer improvements for faster compilation
* Backports the 64 bit multiply, divide, and mod improvements
Fixes:
* LP: #960283 slp pass assert when compiler configure with --enable-checking
Linaro GCC 4.6 2012.04 is the fourteenth release in the 4.6 series.
Based off the latest GCC 4.6.3+svn186060 release, this is the first
release after entering maintenance.
Interesting changes include:
* Updates to 4.6.3+svn186060
Fixes:
* LP: #960283 slp pass assert when compiler configure with --enable-checking
The source tarballs are available from:
https://launchpad.net/gcc-linaro/+milestone/4.7-2012.04https://launchpad.net/gcc-linaro/+milestone/4.6-2012.04
Downloads are available from the Linaro GCC page on Launchpad:
https://launchpad.net/gcc-linaro
More information on the features and issues are available from the
release page:
https://launchpad.net/gcc-linaro/4.7/4.7-2012.04
Mailing list: http://lists.linaro.org/mailman/listinfo/linaro-toolchain
Bugs: https://bugs.launchpad.net/gcc-linaro/
Questions? https://ask.linaro.org/
Interested in commercial support? Inquire at support(a)linaro.org
-- Michael
All,
In the below code, I tried few compiler options and got following observations:
1) arm-linux-gnueabi-gcc -O2 -mcpu=cortex-a15 -mfpu=neon -ftree-vectorizer-verbose=6 -ftree-vectorize
Compiler throws following info messages:
foo.c:16: note: not vectorized: unsupported use in stmt.
foo.c:16: note: not vectorized: unsupported use in stmt.
foo.c:18: note: not vectorized: unsupported use in stmt.
foo.c:18: note: not vectorized: unsupported use in stmt.
2) -O2 -mcpu=cortex-a15 -mfpu=neon
None of the generated code contains the NEON instructions. Code generated with case 1 is taking 3000 cycles, and code generated by option 2 is taking 2500 cycles.
Even if vectorization failed in case1, it should not generate more inefficient code than case 2. My belief was that the executables from both would take same cycles, any thing done for doing unsuccessful vectorization must be reverted if it did not succeed.
###################################################################
#define SIZE1 20
#define SIZE2 26
unsigned int array[SIZE1][SIZE2];
void foo()
{
unsigned int i,j;
unsigned int max = 0;
for(i = 0; i < SIZE1; i++)
{
for(j = 0; j < SIZE2; j++)
{
if (array[i][j] > max)
{
max = array[i][j];
index = j;
}
}
}
printf("Max value: %u Index: %u\n", max, index);
}
Regards
RKS
Hi there. The 2012.04 toolchain release is this week.
Ulrich, I see your fix for LP: #968766 has been approved upstream. In
theory it's too late but I'm happy to land it if you are. Could you
decide and let Andrew know by the middle of Tuesday? Andrew, if you
don't hear from Ulrich then spin away.
Andrew, could you run the release process on Tuesday please? There's
one extra step this month: once you've uploaded and spawned the job,
go to the scheduler screen and click on 'Release' beside each of the
ursas. I reserved them to make sure they'd be idle and ready to pick
up the release build when ready.
Thiago, let us know if Ulrich or I can lend a hand with the GDB release.
-- Michael
Hi there,
At the last call Michael asked if we could push this call back by 30
minutes given the changes due to daylight savings. Does anyone have
any objections to a new time of 10 a.m. BST - 11 a.m. Central
European - 9 p.m. New Zealand. ?
cheers
Ramana
* GCC
Identified the latent bug that's upset my NEON-shifts testing. It turns
out the define-insn-and-shift patterns in arm/sync.md have no length
attributes set.
Now that the NEON 64-bit shifts appear to be not broken, I've relaunched
the 64-bit extend testing.
Identified the problem with my NEON-64-bit-negate patch: I already knew
it works better (produces more optimal code) with my NEON-immediates
patch, but it turns out that at -O0 the other patch is a hard
requirement or else bad things happen in output_move_vfp.
Backported Ramana's patch for ARM-mode testing of my recent Thumb 64-bit
test cases. I've applied it to Linaro GCC directly, without a merge
proposal, as it's a very low-risk patch.
Caught up with some launchpad blueprint fiddling.
Completed the merges from 4.6 and 4.7 FSF. The 4.7 merge was tricky as
it required working around a BZR bug; I've posted the workaround to the
toolchain list.
* Other
On leave on Tuesday
Public holiday on Friday.
Attached a copy of the ARM Linux ABI document to KBentry 39 so we're
hosting it somewhere, at least. Posted an internal Mentor/CS question
about getting its old home restored, and getting a relicensed edition to
allow others to use it as the basis for a hard-float equivalent.
=== Progress ===
* Worked on VFP addressing patch and corrected the failures.
* Got SPEC2k up and running with hot cold partitioning. Some SEGVs
that need investigation. In
general results appear to be better in quite a few cases.
* Investigated an issue with a merge request for upstream 4.7 branch
into our tree. There was a testsuite
failure and I wasn't able to reproduce it with a local i386 rebuild of
the toolchain. Therefore we'll have to
let this go in.
== Plans ==
* I will be away for 2 days this week attending the LLVM conference in London.
* Pursue backporting gnu_unique_object upstream.
* Finish off the VFP addressing modes patch upstream.
* Look at some of the existing blueprints and start discussions around
prioritizing this.
* Investigate some of the SEGVs with h-c partitioning.
Absences.
* Apr 12-13 : Euro-LLVM London.
* Linaro Connect Q2.12 - May 28 - June 1 -
Summary:
* Revise the patch for relocatable NLS support.
* Code size benchmark analysis.
Details:
1. Revise the patch for relocatable NLS support: lp:918926.
* Read the gcc configure and makefile.
* It seams hard to get the relative dir if the gcc is configured
with --bindir=... --datadir/datarootdir. E.g.
--bindir=/opt/bin
--datarootdir=/tmp/data
2. Code size benchmark analysis with -Os
* Investigate regression in small cases.
3. Try to build linaro gcc trunk with crosstool-ng. But it reports
error when configuring libquadmath.
* configure:9829: error: Link tests are not allowed after GCC_NO_EXECUTABLES.
* Manual check or a simple case show libc.so can be linked.
Plans:
* Tuning optimization heuristics for -Os
Planed leaves:
* April 9 - 11: Vacations
Best regards!
-Zhenqiang
Current Milestones:
|| || Planned || Estimate || Actual ||
||cp15-rework || 2012-01-06 || 2012-04-10 || ||
Historical Milestones:
||initial-a15-system-model || 2012-01-27 || 2012-01-27 || 2012-01-17 ||
||qemu-kvm-getting-started || 2012-03-04?|| 2012-03-04?|| 2012-02-01 ||
== other ==
* LP:970252 got a beagle board booting so I could read the UART
version register; reviewed and applied to qemu-linaro the set
of patches provided by Jan Vesely (thanks!)
* sent a patchset cleaning up the GIC model so it is a self-contained
sysbus device; this should make it easier to just drop in a
functionally equivalent device which is a shim for an in-kernel
GIC model that uses the hardware VGIC features
* upstream review:
save/load support for sd.c [patchset from Samsung]
SPI bus [patchset from Petalogix]
* put together qemu-linaro prerelease tarball and did some testing
* performance evaluation finished and submitted
Continued work on neon 64-bit correctness. This is really dragging out
now. I had hoped to have had it fixed by now, but subtle bugs are subtle.
The 16-bit opcodes patch is now committed both upstream and in Linaro
GCC 4.7, however, so that's some progress at least.
Posted benchmark results for the the 64-bit shifts in core registers.
The results are inconclusive: the benchmark runs are too noisy.