Hi,
== PandaBoard ==
* upgraded my ARM dev environment from Ubuntu to Linaro snapshot (20110303)
* found another kernel bug on the panda (#728565)
== libunwind ==
* resolved build issues on ARM (when using the linaro snapshot)
* allows the testsuite to work with linkers that do not pull in indirect
shared libs
* fix build of the test-static-link test case on ARM
* link libunwind-setjmp.so against libunwind-elf
* posted some first patches on the libunwind ml
* learned about the Exception Handling ABI for the ARM Architecture
Regards
Ken
Starting back in Linaro land after a gap of 3-4 weeks where I've been
away on ARM internal tasks.
== GCC ==
- Setting up a new machine that I received for Linaro work.
- Spent some time reviewing upstream patches. Spent some time on the
P1 PR47719 upstream to get this fixed .
- Starting to read up on the benchmarking report and recreating the
environments.
- Looked through some of the speed tickets to have a look through and
spend some time on it.
- Put in a hardware request for a Panda board.
== Next Week ==
- Set up environment properly for some amount of benchmarking.
- Look at some of the performance regressions and work on some things
that need to be done.
- Continue looking at PR47719.
* Investigated and fixed sqlite3 testsuite failure on ARM (bug 725052)
* Discussing libffi API changes with maintainer; hopefully he's
going to send out his comments today.
* Looking at how to upstream the string routine changes
* Need to look at big endian testing
* Testing QEmu pre-release for Peter; looking very nice.
Dave
RAG:
Red:
Amber:
Green:
Current Milestones:
| Planned | Estimate | Actual |
qemu-linaro 2011-03 | 2011-03-08 | 2011-03-08 | |
Historical Milestones:
finish virtio-system | 2010-08-27 | postponed | |
finish testing PCI patches | 2010-10-01 | 2010-10-22 | 2010-10-18 |
successful ARM qemu pull req | 2010-12-16 | 2010-12-16 | 2010-12-16 |
finish qemu-cont-integration | 2011-01-25 | 2011-01-25 | handed off |
first qemu-linaro release | 2011-02-08 | 2011-02-08 | 2011-02-08 |
== maintain-beagle-models ==
* preparation and test for next week's qemu-linaro 2011-03 release
* put in a temporary fix for bug 723630 (apt/glibc now try prlimit64
syscall, so silence qemu warnings about not implementing it)
* investigated qemu warnings about bad 16 bit writes: this is a
kernel bug: https://bugs.launchpad.net/linux-linaro/+bug/727781
== vexpress model ==
* sent vexpress patches upstream, put into qemu-linaro
== merge-correctness-fixes ==
* more work on performance counter registers: proper cycle counter
implementation; now just needs a bit of tidying before upstreaming
* ran valgrind's test cases on qemu; added revealed issues to
https://blueprints.launchpad.net/qemu-linaro/+spec/merge-correctness-fixes
* sent patch fixing broken VMOV s0,s1,r0,r1 implementation
* sent patch fixing inverted carry bit on ORNS
== other ==
* meetings: toolchain, standup, architecture q&a, pdsw-tools, team brief
Current qemu patch status is tracked here:
https://wiki.linaro.org/PeterMaydell/QemuPatchStatus
Absences:
17/18 March: QEMU Users Forum, Grenoble
Holiday: 22 Apr - 2 May
9-13 May: UDS, Budapest
(maybe) ~17-19 August: QEMU/KVM strand at LinuxCon NA, Vancouver
== This week ==
* Submitted the fix for the Qt miscompilation upstream. Applied after
approval.
* Submitted a patch for the Thumb LDR problem that Dave Martin hit.
This was rejected.
* Ended up spending a few days on the "unreasonable amount of memory
while compiling qemu" bug due to unfamiilarity with the DWARF 2 code.
I realise the original idea was that I'd just file this upstream,
but it was one of those cases where I kept finding out more info
for the bug report until the problem became obvious.
I've now submitted two patches for this upstream. The first was trivial
and is now in. I was asked to add a bit of extra code to the second,
which I hope to do next week.
* Looked at the MIPS bug that was reported against the Linaro toolchain.
This turned out to be a problem in our extension elimination pass.
Submitted a merge request for that.
* Got confirmation from ARM that we should use relocation number 160
for R_ARM_IRELATIVE, and that it was OK to make the changes public
(thanks!). I've now submitted the binutils patches upstream.
I'll do the eglibc ones when I get back.
== Next week ==
Holiday!
Richard
Hello,
Testing the patch for SMS to support targets
that their doloop part is not decoupled from the rest of the loop's
instructions, as SMS currently requires.
The testing includes bootstrapping on ARM machines for c language
configured w and w\o --with-arch=armv7-a options and using"-O2
-fmodulo-sched -fmodulo-sched-allow-regmoves -fno-auto-inc-dec
-funsafe-math-optimizations -mthumb" flags.
Thanks,
Revital
On Monday, I was asked to find out whether the fix for GCC Bugzilla
PR43137 was present in our source base.
I can confirm that it is *not* present.
Apologies for the delay.
Andrew
Hi All,
Up until now, I have had no choice but to test toolchain correctness on
A8 hardware. It made sense to use the same -mfpu settings as the
Linaro/Ubuntu package builds use. This did not match the policy that the
interesting platform was A9-NEON, but I didn't have that option.
That's changed now - our Panda boards have arrived! Yay! :)
But, it seems to me that if I change to using the Pandas for correctness
testing (not performance testing) then I won't be testing what Ubuntu
will actually use.
So what should I test on?
I'd rather not double my test load by testing on both, but that is an
option ....
Any suggestions?
Andrew
Hi,
On Mon, Feb 28, 2011 at 9:19 PM, Nicolas Pitre <nicolas.pitre(a)linaro.org> wrote:
> On Thu, 24 Feb 2011, John Rigby wrote:
>
>> The resulting kernel builds and boots but some modules have problems:
>>
>> $ modprobe fat
>> fat: unknown relocation: 102
>> FATAL: Error inserting vfat
>
> A workaround for what appears to be a binutils bug has been merged in
> linaro-2.6.38. So the Thumb2 kernel testing may resume on trusted
> targets.
Thanks for merging it.
It's a bit ugly to include turn off compiler optimisations to work
around this though, so we might encounter upstream to that patch.
In any case, we still need someone to take a look at the possible
tools issue -- CC'ing linaro-toolchain in case people aren't aware:
https://bugs.launchpad.net/binutils-linaro/+bug/725126
Cheers
---Dave
On 25 February 2011 22:28, Alexander Sack <asac(a)linaro.org> wrote:
> On Wed, Feb 23, 2011 at 8:28 AM, Jim Huang <jserv(a)0xlab.org> wrote:
>> I would like to make a proposal about utilizing Linaro toolchain for
>> Android and NDK (Native Development Kit)[1].
Added linaro-toolchai list in Cc.
>> ** Motivation
>>
>> There are some different perspectives between Linaro toolchain and
>> Google Android toolchain including technical and
>> non-technical considerations. It doesn't really work if we only
>> replace prebuilt toolchain with Linaro toolchain because
>> of the compatibility of Android system utilities such as ELF
>> prelinker. Also, since Android is developed in relatively closed
>
> I don't have enough background to understand this "ELF prelinker"
> stuff. Are you saying that because of the way how android links stuff
> we cannot have one code base for gcc that works for both, android and
> "normal libc linux"?
>
Take Bug #707487 for example:
https://bugs.launchpad.net/binutils-linaro/+bug/707487
It is evident that Android's system utilities like soslim ("strip"
implementation)
and apriori ("prelink" implementation) expect the specific output of
GNU Toolchain,
but it sometimes varies since we would take Linaro's toolchain.
>> environment (Google style open source model), a great amount of
>> software components are not always verified by different
>> toolchain or build configurations. This proposal attempts to
>
> ack. thats what we want to do. Of course, we cannot really verify what
> is going on behind closed walls, but we can continuously build android
> with our toolchain and fix issues due that in android public master
> and if even that doesn't work we can ensure that our android trees
> always work nicely with both, our gcc and android gcc.
>
Android team is known to work on this field already.
> Another thing is to make our toolchain easily consumable (like the NDK
> you mention at the bottom); this will increase chances that someone
> from google can eventually take a look at what we are doing etc. and
> also helps the community to use linaro toolchain to built their
> android distributions.
Agree.
>> establish the compact development flow to enable Linaro
>> optimized ARM toolchain to build Android from scratch and verify it
>> transparently. Eventually, Android can be the reference
>> indicator as Linaro toolchain performance and reliability.
>>
>>
>> ** Brief introduction to Google Android toolchain
>>
>> Inside Google, there is a dedicated compiler team working on GNU
>> Toolchain for various purposes including server-side
>> computing, Android, Chrome OS, etc. Google engineers submit patches to
>> upstream for public review and maintain the
>> toolchain for Android. Along with each Android Open Source Prokect
>> (AOSP) release, there is a special branch in korg
>> GIT [2] for hosting the GPL'd toolchain source code modified by
>> Google. Usually, file "README.google" mentioned the
>> summary, but it is not developer friendly because several changes were
>> done within one GIT commit.
>>
>> Please refer to wiki for details:
>> https://wiki.linaro.org/Platform/Android/UpstreamToolchain
>>
>
> thats a good wiki page. thanks for the content. If I read the skia
> example correctly, we could add a test to our "normal" abrek testsuite
> that uses our daily android toolchain and run the skia benchmark? e.g.
> we could start doing this benchmarking even without having a
> validation solution ready for android targets?
>
If adb is supposed to work well on target, then you can easily use "bench.py"
script mentioned in the above wiki to do several benchmarking.
> Please let's talk to Paul how we can get the android toolchain to
> /opt/android as part of abrek and lets try to add this to our abrek
> testsuites. Until we have daily toolchain builds it would be OK to
> download the android toolchain tarball from a fixed place from
> people.linaro.org I guess.
>
Ok!
>> ** What's wrong with Android upstream Toolchain?
>>
>> In my opinion, list as following:
>>
>> (1) Few information about Google improvement: Sometimes, we have to
>> guess something from implicit GIT commitlog
>> such as "commit gcc-4.4.3 which is used to build gcc-4.4.3 Android
>> toolchain in master"[3]. It is hard to track and get
>> verified carefully.
>
> yes, that feels like a messy situation. Do we know why they don't
> commit the changes as individual commits but then in next step
> document what they changed?
I have no exact idea since I am just an observer regarding Android's GIT tree.
Google engineers do send patches to FSF/GNU, but it is not always related to
the GIT activities we have seen in korg.
You can search the keyword, "submit", in file gcc/gcc-4.4.3/README.google , and
you will see some descriptions as following:
gcc/cp/cp-lang.c
gcc/gimple.c
gcc/langhooks-def.h
gcc/langhooks.h
gcc/langhooks.c
gcc/tree-flow.h
gcc/tree-ssa-dce.c
gcc/testsuite/g++.dg/tree-ssa/vptr_init_dse.C
gcc/testsuite/g++.dg/tree-ssa/vptr_init_dse2.C
Enhancing dead code elimination to eliminate
useless vptr field initialization.
Owner: davidxl
Status: not submitted
gcc/fold-const.c
gcc/Makefile.in
Fix 2045297
Owner: davidxl
Status: Not submitted
The information is too few to track for us since the above "Fix
2045297" tends to
indicate Google bug database number instead of FSF's.
>> (2) Google specific improvements are absent in recent release, only
>> enabled months later. For example, Google Compiler
>> Team Lead, Dr. Shih-wei Liao, presented the improvements against GNU
>> Toolchain in the middle of 2009.[4]. The report
>> came with several impressive improvements like FDO (Feedback Directed
>> Optimizations) and IPO (Inter-Procedure
>> Optimizations). However, only some of them are public to AOSP and be
>> integrated late in the middle of 2010 (Android
>> Froyo; 2.2). Even FDO was merged in Android Froyo already, but there
>> is few documentation and no robust method to verify
>> by community members such as Linaro engineers.
>
> you say that they don't publish the code for lets say the
> "gingerbread" toolchain in a timely fashion when they release
> gingerbread? Or do they ship a separate "fast" NDK/prebuilt for
> partners through secret channels?
I have no idea.
>> (3) For some reasons, Google tends to deliver stable (old) toolchain
>> plus mainline backport. It is a safe and workable approach,
>> but sometimes developers would expect to use the latest technologies
>> as Linaro aims to bring to the world.
>>
>> (4) Few readable documentation. For example, Google already open its
>> toolchain benchmark suite in early 2010, but there was
>> no document specific to such important components. Furthermore, there
>> was one file gone in public kog GIT, required by
>> automated benchmark process. One year later, Google engineer finally
>> put back the one to public. This implies the unusual way
>> Google developed and delivered software.
>>
>
> Assuming good faith I would think this might just have been an oversight.
>
> Do you know if anyone from community pointed this out to google using
> official android mailing lists/groups or a bug?
>
Google engineers sometimes pick up the issues from Google Code:
http://code.google.com/p/android/issues/list
And, they do discuss on mailing-list:
http://developer.android.com/community/
>> ** Linaro's Approach to enable latest technologies
>>
>> Linaro android team tries to do:
>> (1) Document Android toolchain and related utilities in korg GIT as
>> possible as we can.
>
> That's good stuff and I think your wiki page is already a great
> contribution in that direction. What we should do though is run this
> through google eyes early by using official android mailing lists.
>
Got it.
>> (2) Early adaptation of Linaro toolchain to Android build system and
>> verify these output systematically.
>
> ack. Do you know if those changes would be conflicting with what we do
> on "normal" linux side? e.g. do we need to maintain special android
> patches or can we merge those into our main trees?
>
In fact, GCC 4.6 already merges Android specific patches with the help of
CodeSourcery. We would initially backport these patches to linaro-gcc-4.5
branch for review. Luse Cheng already did it.
However, other parts are not related to Android directly, and they might be
too aggressive to generic GCC optimization, that can be the reason why Google
didn't submit first.
>> (3) Backport Google changes to Linaro GCC and review in public.
>
> This is really tricky as you said. Here again, we should propose this
> on android mailing lists to maybe get feedback from google team and
> maybe improve the way we work on that. Untangling a big patch based
> just on changelog feels really unefficient.
Ok, I got your point. However, what we need is to create workable combination
of Linaro kernel + Linaro toolchain for Android integration engineers.
Alexander, I need your help to catch the attention of someone at Google.
> Also, we have to remember that if we pick changes out of _their_ tree,
> we cannot upstream those to fsf because we don't own copyright to
> those. Of course, for stuff they already pushed to 4.6 its not a
> problem to backport them from fsf trunk.
Thanks for notice.
>> (4) Improve the deployment and validation flow by means of Linaro
>> infrastructure.
>
> my understanding is this:
>
> 1. we add support to build android toolchain from linaro branches to
> our cloud build service
> 2. we do this so that we either produce a full toolchain tarball that
> can be installed under /opt/android or a NDK tarball (or both)
NDK doesn't need admin permission to install.
> 3. we improve our android platform build infrastructure to allow
> using latest daily toolchain tarball and then we build android with a)
> google toolchain and b) linaro toolchain; in this way we get daily
> android builds for both toolchains that can go into the linaro
> validation farm and get the typical validation/testing and
> benchmarking done.
Yes, it would be great.
>> (5) Build and test Android system with Linaro tools. Then, figure out
>> the regressions caused by Linaro Toolchain and/or
>> aggressive optimizations
>
> right. I think that's covered with the point above, no? The android
> builds done with our toolchain would also be available in public, so
> you can do whatever you want on top of what we already
> test/validate/measure automatically in the validation farm with them.
Agree.
>> (6) measure performance gain by Linaro tools
>
> right. for this we need to define a set of open-source benchmarks to
> run and ensure that those are supported in our validation framework.
>
>> The detailed specification in wiki:
>> https://wiki.linaro.org/Platform/Android/Specs/LinaroAndroidToolchain
>>
>> ** Implementation of Linaro toolchain for Android
>>
>> We started from Android style toolchain build and move to Linaro GCC +
>> ARM specific optimizations in mind. The initial work
>> can be obtained by wiki:
>> https://wiki.linaro.org/Platform/Android/Toolchain
>>
>> We plan to maintain the following GIT repositories at least:
>> * android/toolchain/build.git : Linaro-aware build system. Derived
>> from Android toolchain build system, it can handle Linaro-GCC
>> and Linaro snapshot/bzr.
>> * android/toolchain/gcc-patches.git : Patchset to be applied on top
>> of Linaro-GCC release/snapshots
>
> I think thats fine. however, how do we ensure that we have patches
> that always apply to both release/snapshots? do we maintain branches
> for gcc-patches.git in case you need two versions of patch X if the
> linaro gcc codebase diverged?
I might need help from toolchain WG.
>> The reference builder script output:
>> $ ./linaro-build.sh --help
>> --prefix-dir= Specify where to install (default:
>> /tmp/android-toolchain-eabi)
>> --gcc-src-dir= Specify where linaro gcc source is (in <toolchain>/gcc)
>> --apply-gcc-patch=(yes|no) Apply-patch which in
>> <toolchain>/gcc-patches directory (default: no)
>>
>> Current verified combinations:
>> * gcc-linaro: 4.5-2011.02-0
>> * binutils: 2.20.1
>> * gmp: 4.2.4
>> * mpfr: 2.4.1
>>
>> Only gcc is replaced by gcc-linaro: 4.5-2011.02-0 and others are
>> checked out from korg GIT.
>
> do we need to do something like --gcc-src-dir and -patches for
> binutils, gmp and mpfr as well? or would we be only interested in
> improving/fixing gcc for now?
>
I think focusing on linaro-gcc is pretty good. We can follow the
original combination
of Google.
> Waybe we also want to support protocol schemes like git: http: and
> bzr+ssh:/lp: for the --gcc-src= argument. this would then
> automatically download/branch the source tree from the given location.
> What do you think?
Agree.
>> ** Summary of gcc-patches
>>
>> "gcc-patches" are used as "backport" from Google changes into Linaro
>> gcc base. Here is the summary at present:
>>
>> 0001-Add-linux-android.patch
>> Add linux-android
>>
>> 0002-Add-support-for-Bionic-C-library.patch
>> Add support for Bionic C library
>>
>> 0003-Support-compilation-for-Android-platform.patch
>> Support compilation for Android platform
>>
>> 0004-Add-multilib-configuration-for-arm-linux-androideabi.patch
>> Add multilib configuration for arm-linux-androideabi
>>
>> 0005-Fix-gthr-posix.h-to-support-Bionic.patch
>> Fix gthr-posix.h to support Bionic
>>
>> 0006-Add-untested-support-for-Bionic-to-libstdc.patch
>> Add [untested] support for Bionic to libstdc++
>>
>> These patches are taken from Maxim Kuvyrkov of CodeSourcery in gcc-4.6
>> branch. Of course, we can always add changes by
>> Google or other Android specific adaptation by this model.
>
> Can we get a toolchain example tarball done and uploaded to
> people.linaro.org? I would like to verify that those work out of the
> box with gingerbread and if so, i would like to see those land in the
> main toolchain WG branch rather than adding them to our gcc-patches
> tree.
Yes, I would like to do that later.
>> ** Planned improvements over Linaro toolchain for Android
>>
>> (1) GCC multilib setting
>> Default: arm, fpu and thumb. The prebuilt google toolchain use:
>> armv5te and mandroid. We should focus on ARMv7.
>> (2) HardFP-ABI Support for Android.
>> (3) Patch management: Better to get the Android patches into
>> Linaro-GCC tree eventually.
>> (4) Build system improvement. Don't have to build gmp, mpfr everytime,
>> and provide option to build without gdb.
>> (5) Enable LTO (Link Time Optimization, introduced since gcc-4.5) in
>> Android TARGET_GLOBAL_CFLAGS
>> (6) Verify the functionality of FDO (Feedback Directed Optimization)
>> and introduce the approaches to integrate.
>
> I really think those topics should be executed by the toolchain WG
> rather than in platform. I am happy that we give them guidance and
> support them by providing them with easy to use tools to get their job
> done. Also feeding them with topics is great. Please talk to Michael
> Hope and ask him how he wants to collect those android toolchain
> optimization topic ideas. Could be good input for our 11.11
> requirements gathering process.
Agree.
>> ** Toward Android NDK
>>
>> Once Linaro toolchain for Android is ready to use, it is time to
>> re-package Android NDK by Linaro toolchain. To do that, extra
>> build configuration, sysroot, is required. According to Android
>> Release Cycle & Phases[5], the repacked NDK should be verified
>> one moth after Android public release.
>
> That sounds like a great idea. What's the a benefit/difference of
> shipping an NDK compared to just shipping a "normal" toolchain binary
> tarball for this purpose?
NDK consists of some architecture specific helper scripts/headers to indicate
the optimization flags and some combinations such as ARMv7 with/without
NEON, etc.
If we provide NDK directly, users don't have to consider the above integration
issues as far as I know.
Sincerely,
Jim Huang (jserv)
Android Team