== Progress ==
* Merges for linaro-4.8-2013.06 and linaro-4.7-2013.06
- Spent most of my time on this activity, with Yvan
- A few cbuild issues, local disk full, and other local disk crash
- Investigating why the cross-validations lack libpthread and libdl
(required since libsanitizer backport). The libs are present, but not
found by the compiler.
* Registered for Connect/Dublin
== Next ==
* Complete merges quickly, to enable release this week.
* Disable-peeling: resume work
* Better end of loop counter optim: discuss with Kugan
* libsanitizer/aarch64: resume work
* Neon intrinsics/vzup/veor: resume work
* Book hotel/flight for Connect/Dublin
== Issues ==
* None.
== Progress ==
* Releases merge reviews:
- Most of the week spent on this activity
- Lot of reviews and cbuild issues
- some reviews still on-going
* Jira cards:
- Closed card #108 on Tiny memory model support.
- Created Card #167 for TLS support in the Tiny memory model.
* LRA on ARM and AArch64:
- Raise the issue to LRA maintainer (Vladimir Makarov)
- will iterate with him in the coming weeks.
* Launchpad bug #1187247
- started to look at it.
== Plan ==
* Finishing reviews
* Bug #1187247
* LRA
== Progress ==
* AARCH64 testing
Drilling down Boot strap failure with GCC 4.9 trunk on open embedded
image with V8 model
Sent the steps to reproduce boot strap failure in the model to team.
Renoto suggestion to add libgcc_eh.a explicilty is not working well at
all places.
Trying few other options (LDFLAGS, --with-stage1-libs ) to pass
libgcc_eh.a to the xg++ build.
* libssp support for Aarch64
Wrote down the steps needed to implement the support in Aarch64. Sent
mail to Matt for a review.
Working on machine descriptions for stack_protect_set and stack_protect_test.
* Filled online VISA Application form. Collected Relevent documents needed.
Hotel rooms are not available via online booking. Sent follow up mail
to the hotel and informed James and Arwen.
== Plan ==
* Continue bootstrap testing and push patches to GCC
* Implement Libssp GCC back end hooks.
* Linaro connect travel prep, book tickets hotel and apply visa.
== Progress ==
* Did builds of GCC 4.6, 4.7, 4.8, 4.9-svn on x86_64, i686, arm7l to
load more recent data into testing database plus test source builds
for the release at the same time.
* Did builds of GDB 7.6 & 7.5 on x86_64, i686, arm7.
* Added wiki page on how to run DejaGnu in a chroot.
* Cbuildv2 work continuing, works well enough to do the above
builds plus bootstrapping infrastructure.
* Change how the index for the testing database gets calculated,
so it's now possible to delete bogus records without screwing
up existing data when importing.
== Plan ==
* Produce some new graphs with the data from the above builds and
test runs.
* Make GCC & GDB release tarballs.
* Update wiki pages on Cbuildv2, release process.
== Issues ==
* Figure out why make check for GDB fails for everything on
chromebook running 13.04.
- rob -
== Progress ==
* Investigated gdb.threads and gdb.multi failures and submitted patch
to enable tests requiring multiple hardware breakpoints on arm
targets.
* Investigate gdb.base failures and submitted patch to enable
disp-step-syscall.exp for arm targets.
* Investigate gdb.mi and gdb.trace failures, some of problems are
feature requests on arm.
* Investigate gdb.base failures and submitted patch to enable
disp-step-syscall.exp for arm targets.
* Submitted gdb.dwarf2 pending patch.
== Plan ==
* Try to fix remaining gdb failures.
* Generate a fresh copy of gdb test suite results on arm and x86
* Chromebook os update on a faster sd card.
* Add JIRA cards for gdb features missing on arm.
* Follow up on Ireland visa application.
== Progress ==
* Better end of loop counter optimisation
- Experimented with fixing the extra instruction.
- Found a possible way to fix it. Discussing it with Christophe.
* Generate a single call to divmod
- Looked at the code including how sin()/cos() -> sincos() handling
in gcc.
- Implemented a prototype and experimented.
== Plan ==
* VRP based zero/sign extension
- Ping the patch.
* Generate a single call to divmod.
- Finish the prototype implementation and get the regression working
- Discuss in gcc mailing list for a good way to implement and get
consensus with the results from prototype.
== Issues ==
* None
== Progress ==
* Test and send out shrink wrapping improvement patch for review (TCWG-133).
* Update aarch64-none-elf TARGET_CFLAGS to " -g -O2 ".
* Enable aarch64 gdb build for Windows (lp:1187862).
* Investigate conditional compare RTL representation.
- Trying to expand it to cmp_and/cmp_ior like instruction.
== Plan ==
* Continue on conditional compare.
== Planed leaves ==
* June 10-12: Dragon Boat Festival.
== Progress ==
* Fixed gdb.cp testsuite failures and committed upstream.
* Worked with ITS to get git mirrors for libraries & tools.
* Started documenting branch and merge policy on the wiki.
* Respin AArch64 binutils ifunc patch and commit.
* Looked into AArch64 assembler issue.
* Assorted other gdb testsuite fixes.
* Some research into malloc.
== Issues ==
* None.
== Plan ==
* Create release branches for libraries & tools and improve docs.
* More gdb fixes.
* More malloc reading.
--
Will Newton
Toolchain Working Group, Linaro
`== Progress ==
* Release 3.3
- Testing and packaging RC3
http://llvm.org/pre-releases/3.3/rc3/
* Bootstrap Script
- Check dependencies, checkout sources, bootstraps, test-suite, package
- Works well on Intel (1h20min bootstrap twice + test-suite)
- Works on Claxeda, Chromebook (10hs each)
- Should work out-of-the-box anywhere:
http://people.linaro.org/~rengolin/llvm/scripts/
* Buildbot
- Following up on GCC/LD failure on linaro-panda-02
* CBuild
- Adding Clang/Extra/RT to toolchain64.lab + update scripts, waiting for
merge
- Hopefully next build will get the whole pack
* Phoronix
- Setting up environment on my Chromebook, I'll have to think how to do
that automatically
- Running some base runs (gcc 4.6), still not automatic enough
* LLVM administrativia
- Reviewing patches, support, etc
== Issues ==
* Network QoS is required to run buildbots, many failures due to timeout
every week. The more bots we run, the more urgent will be this issue.
== Plan ==
* Find a way to run Phoronix without human interaction (batch mode), and
write a script to do that
* Store the base runs somewhere (people.linaro?) and have the script
install them to compare with any run on the board.
* Test and release 3.3 Final
* Use GCC 4.8 on linaro-panda-02 and hope to solve the problem
* Finish LLVM+Clang change in CBuild (merge pending) and try to run some
benchmarks with it
* Think of a way to put bootstrap & phoronix in LAVA/CBuild (whatever is
easier), so I can use the calxeda nodes without worry if they'll be up or
down
Hi,
I am looking at best approach for
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43721 - Failure to optimise
(a/b) and (a%b) into single __aeabi_idivmod call in ARM architecture
In sumary, the following c code results in __aeabi_idivmod() call and
one __aeabi_idiv() call even though the former already calculates the
quotient.
int q = a / b;
int r = a % b;
return q + r;
My question is what would be the best way to handle it. As I see there
are few options with some issues.
1. Handling in gimple level, try to reduce the operations to equivalent
of this. We should do this for the targets without integer divide.
{q, r} = a % b;
Gimple assign stmts have only one lhs operation (?). Therefore, lhs has
to be made 64bit to signify return values of R0 and R1 returned
together. I am not too sure of any implications on other architectures here.
2. Handling in expand_divmod. Here, when we see a div or mod operation,
we will have to do a linear search to see if there is a valid equivalent
operation to combine. If we find one, we can generate __aeabi_idivmod()
and cache the result for the equivalent operation. As I see, this can
get messy and might not be acceptable.
3. An RTL pass to process and combine these library calls. Possibly
using cse. I am still looking at this.
4. Ramana tried a prototype to do the same using target pattens. He has
ruled this out. (if you want more info, please refer to at
https://code.launchpad.net/~ramana/gcc-linaro/divmodsi4-experiments)
Any suggestion for best way to handle this?
Thanks,
Kugan
Hi all,
I am facing build error, when I try to bootstrap GCC trunk for native
aarch64-unknown-linux-gnu configuration in openemedded/V8 model.
Linker error occurs while building stage 1 GCC.
(Snip)
/usr/lib/gcc/aarch64-oe-linux/4.7.3/../../../../aarch64-oe-linux/bin/ld:
gcov: hidden symbol `__deregister_frame_info' in
/usr/lib/gcc/aarch64-oe-linux/4.7.3/../../../aarch64-oe-linux/4.7.3/libgcc_eh.a(unwind-dw2-fde-dip.o)
is referenced by DSO
/usr/lib/gcc/aarch64-oe-linux/4.7.3/../../../../aarch64-oe-linux/bin/ld:
final link failed: Bad value
collect2: error: ld returned 1 exit status
(Snip)
The steps to reproduce the issue is attached.
Need some help to solve this.
regards,
Venkat.
== Progress ==
* Neon intrisincs: compiled my testsuite with GCC/trunk and filed
bugzilla 57431 for ICE.
* Merges for linaro-4.8-2013.06: started actual merges
- fixed a cbuild reporting problem
- faced calxeda and e2c problems, fixed by Matt.
* Jira: a few updates
* Libsanitizer: patched upstream, to be backported in GCC/trunk, then
in gcc-linaro-4.8.
== Next ==
* Merges for linaro-4.8-2013.06: complete them.
* Disable-peeling: resume
* Look at Kugan question about trunk regression
* Libsanitizer/aarch64: resume
* PGO/LTO/python bug: resume
* Neon intrinsics/vzup/vero: resume
== Progress ==
* Investigated attach to process and threads failures
(TCWG-95<http://cards.linaro.org/browse/TCWG-95>).
Almost all problems were fixed with any patch by making an os configuration
change on chromebook.
* Ran GDB test suites after OS configuration change on chromebook and
updated test results.
* Investigated inline-break.exp test suite failures on arm. GDB seems to be
missing one inlined instance on two different functions. Obtained debug
info and dumps of obj file without any luck to find the possible cause and
fix.
* Started work on integration of different testing scripts. Initially added
commandline options in bash script to test let user choose target/host,
native-none/native-gdbserver/remote, and testsuite/testcase configurations.
== Plan ==
* Figure out a reason/solution for inline-break.exp failures on arm.
* Investigate and Fix more ARM bugs shown in gdb 7.6 testsuite results.
* Chromebook os update on a faster sd card.
* Side activity work on automation of testing gdb in different
configurations and uploading comparison result.
== Issues ==
* None.
== Progress ==
* LRA on ARM and AArch64:
- Tried to workaround the issue with new insns (reload_outdi,...).
- But it doesn't seem to be handle by LRA.
- Debug still ongoing.
* Internal meetings
== Plan ==
* Releases merge reviews
* LRA
== Progress ==
Very short week (monday and wednesday off).
* AARCH64 testing
Got boot strap failure with GCC 4.9 trunk on open embedded image with
glibc changes. Retired with latest openembedded image on V8 model
Noted down the steps to reproduce boot strap failure in the model for
broadcasting.
* libssp support for Aarch64
Read documentation to understand and evaluate the work.
== Plan ==
* Continue bootstrap testing and push patches to GCC
* Implement Libssp GCC back end hooks.
* Linaro connect travel prep, book tickets hotel and apply visa.
== Progress ==
* VRP based zero/sign extension
- Tested and posted the latest patch
* Better end of loop counter optimisation
- Tree level optimization are optimized in mainline
- Christophe noted a slight change in asm generated from earlier
version
- tracked down the patch causing this and communicated this.
* Generate a single call to divmod
- Looked at expand_divmod to understand how __aeabi_idiv and
__aeabi_idivmod are generated.
== Plan ==
* Better end of loop counter optimisation
- Change the pattern to remove this additional instruction if
necessary.
* Generate a single call to divmod
- Come up with a solution
== Issues ==
* None
== Progress ==
* Shrink wrapping improvement (TCWG-133)
- Call copyprop to optimized the parameter register move instructions.
- Test is ongoing.
* Update aarch64-none-elf toolchain newlib version to 2.0~20130530 (lp:1185711).
== Plan ==
* Collect performance data for TCWG-133.
* Continue on conditional compare.
Best Regards!
-Zhenqiang
== Progress ==
* Monday holiday here too, so went mountain climbing
* Finally fixed Lava token for cbuild
* Dug into EC2 issues, still confused
* Cloned infrastructure files from gcc.gnu.org, which turned out to be
out of date, so updated them to the current releases. That then
required fixing a few minor configure bugs in libppl. Files in
~/cbuild/var/snapshots/infrastructure. Infrastructure libs are
statically linked so they're consistent across platforms.
* Worked on cbuildv2, it now downloads a tarball or does a
bzr|git|svn checkout, configures, compiles, and installs them in
a sysroot as other packages depend on them. Also added a function
to download, build, and install all the toolchain infrastructure
libraries in a sysroot for binutils & GCC to use at build time
https://git.linaro.org/gitweb?p=people/rsavoye/cbuild2;a=summary
* Automated import of all historical test results till running.
Currently
the DB has 137,687,996 test results, 1909 separate test runs of GCC,
and covering 544 versions.
== Plan ==
* Add remote SSH support to DejaGnu for remote testing on
Chromebook. (carried over from this week)
* Figure out the EC2 mess and document it better
* Clone gcc_release.sh script but enhance so a similar process can be
applied to releasing Eglibc, Newlib, and the Binutils.
* Start gearing up for the releases
* Finish cross build and testing support in Cbuildv2, which would
basically eliminate the need for crosstool-ng.
== Progress ==
* 4 day week due to bank holiday.
* Merged binutils arm ifunc changes onto stable branch.
* Worked on getting some git mirrors setup for various toolchain deliverables.
* A certain amount of planning and JIRA card work in preparation for
the next iteration.
* Fixed aarch64_be-* and aarch64-elf testsuite issues with AArch64 ifunc patch.
* Investigated glibc malloc and alternatives.
== Issues ==
* None.
== Plan ==
* Submit new AArch64 ifunc patch after testing complete.
* Finish getting git mirrors setup.
* Look at some gdb testsuite failures.
--
Will Newton
Toolchain Working Group, Linaro
[very short week; two days]
Progress:
* misc
** handover from John Rigby: got a QEMU+KVM+AArch64 setup running with
his work-in-progress patchset
** tracked down weird behaviour when ^C'ing qemu on aarch64
to a bug in glibc's getcontext() implementation (it doesn't
clear the PSTATE field and ends up passing a garbage pstate
to the rt_sigreturn syscall)
Plans:
* VIRT-55: talk to Andre about testing; investigate testing migration
using LAVA
* set up a new qemu-linaro tree/branch as our CI/LAVA input [to keep it
separate from our "we release this" tree]
* restart work on upstreaming omap3 patches as part of my generic qemu
maintenance work (will reduce our maintenance burden in the long term)
-- PMM
== Progress ==
* 3.3 Release
- RC2 is out, we'll have an RC3 (critical bug on X86_64/Darwin)
- Adding some docs to the release
* Infrastructure
- Installing Ubuntu on Chromebook, automating bootstrap+test-suite
- Running the test-suite on a BeagleBoard (LLVM 3.2 and 3.3), no
regressions
- Trying to run an LLVM CBuild job
* Buildbots
- Chasing GCC internal failure on self-host bot
- Chasing more MCJIT failures on all bots
== Issues ==
- Upgrading to 13.04 was a big mistake, had to rollback to 12.10 and
re-configure my whole environment
- Office network/power grid is insufficient for the current population,
I'll be working from home from now on
== Plan ==
* Continue with CBuild for LLVM
* Setup continuous build for bootstrap+test-suite
* Automate Phoronix, setup CI
* If CBuild is done, try running benchmarks with LLVM on it
* As hardware become available, set them up as buildbots
We are using the Linaro prebuilt binary 2013.03 toolchain.
We have a program that does a memcpy of 6 bytes and the source and
destination pointers are both 6 byte arrays (through multiple levels of
struct & union etc).
At -O2 we get the memcpy inlined.
The code area in question is:
22840: f8b7 2054 ldrh.w r2, [r7, #84] ; 0x54
22844: f853 1d12 ldr.w r1, [r3, #-18]!
22848: f042 0202 orr.w r2, r2, #2
2284c: 889b ldrh r3, [r3, #4]
2284e: b292 uxth r2, r2
->22850: f8c7 101a str.w r1, [r7, #26]
22854: f8a7 2054 strh.w r2, [r7, #84] ; 0x54
22858: 83fb strh r3, [r7, #30]
2285a: f8da 3000 ldr.w r3, [sl]
And we get an alignment fault at the str.w marked above.
Looking at the types involved and their location in the containing
structures I don't see how the compiler could think that the destination
was word aligned
(I believe it is guaranteed that dest % 8 == 6)
There are no -march -mcpu or -mtune params passed to the compiler. The
code is running in user space on a A15.
Basic question before we look further:
Is the compiler assuming that cp15 SCTLR.A is 0 so that it is free to
generate unaligned loads and stores?
If the answer to the above is "no" we can isolate the code more and
bring it back to the list.
Thanks,
Bill
---------------------------------------
William A. Mills
Chief Technologist, Open Solutions, SDO
Texas Instruments, Inc.
20450 Century Blvd
Germantown MD 20878
240-643-0836
The Linaro Toolchain and Platform Working Groups are pleased to announce
the 2013.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 4.8 2013.05
* Linaro GDB 7.6 2013.05
* 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:
* gcc 4.7 is no longer included
* gdb is updated to 7.6
* Linux release file names no longer include a date to make life easier
for scripted downloads
* ISL/CLooG support is enabled in all builds
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/2013.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.
Hi,
I have a usecase where linaro toolchain is used to build my executables and
the sysroot is copied and used as glibc for running my embedded system.
Reason for this is, I want to use the same glibc what the application is
compiled against.
I found a bug fix from glibc community which I want to cherry pick and
rebuild the sysroot to include this fix. But, in the README.txt published
with linaro toolchain binary, there are no instructions for rebuilding
sysroot.
Can anyone point me to info on rebuilding sysroot? If formal steps don't
exist, could you point me to the current process being followed by linaro
so that I can observe the build log and attempt to do the same?
Thanks
Bharath
All,
In the Toolchain Working Group Mans has been doing some examination of SPEC
2000 and SPEC 2006 to see what C Library (glibc) routines impact performance
the most, and are worth tuning.
This has come up with two areas we consider worthy of further investigation:
1) malloc performance
2) Floating-point rounding functions.
This email is interested with the first of these.
Analysis of malloc shows large amounts of time is spent in executing
synchronization primitives even when the program under test is single-threaded.
The obvious 'fix' is to remove the synchronization primitives which will
give a performance boost. This is, of course, not safe and will require
reworking malloc's algorithms to be (substantially) synchronization free.
A quick Google suggests that there are better performing algorithms
available (TCMalloc, Lockless, Hoard, &c), and so changing glibc's algorithm
is something well worth investigating.
Currently we see around 4.37% of time being spent in libc for the whole of
SPEC CPU 2006. Around 75% of that is in malloc related functions (so about
3.1% of the total). One benchmark however spends around 20% of its time in
malloc. So overall we are looking at maybe 1% improvement in the SPEC 2006
score, which is not large given the amount of effort I estimate this is
going to require (as we have to convince the community we have made
everyone's life better).
So before we go any further I would like to see what the view of LEG is
about a better malloc. My questions boil down to:
* Is malloc important - or do server applications just implement their own?
* Do you have any benchmarks that stress malloc and would provide us with
some more data points?
But any and all comments on the subject are welcome.
Thanks,
Matt
--
Matthew Gretton-Dann
Toolchain Working Group, Linaro
Greetings,
I'm using the Linaro tool chain with Eclipse (Juno) (under Windows) and
openOCD to write firmware for an STM32F20x based design (using an ST-Link2
debugger).
In general, that all works fairly well.
The part I'm having problems with is debugging (step-in, etc) from Eclipse.
The execution flow seems chaotic when single stepping through C code: it
skips statements, it jumps into the middle of a function, then returns to
the start of a function, it loops over certain statements (while there's no
loop in the code), etc. (It's close to useless).
I have seen this behavior with other IDE's and tool chains when code was
built with optimization turned on.
However, I specify 'no optimization' (-O0) when I build my code.
My questions:
a) Is there some implicit optimization being done in the compiler, even
though I tell it not to do so, which may affect proper debugging?
b) Are other people using Eclipse (Juno) and are they seeing the same
issue? Are there any known ways to fix this chaotic debugger behavior?
Kind regards,
~ Paul Claessen
== Progress ==
* Performed investigation on gdb7.6 test suite failures and untested test
cases.
* Updated JIRA enteries with test suite failures on arm to track progress.
* Wrote an automation script for selection of individual test cases from a
text file.
* Got the gdb.dwarf2 test suite patch reviewed from Matt and Will.
* Day off on Friday.
== Plan ==
* Finish up initial investigation on gdb7.6 test suite results.
* Complete updates of JIRA enteries after investigation on test suite
results in complete.
* Start work on integration of different testing scripts written in past
couple of months.
* Send gdb.dwarf2 test suite patch upstream.
Hi Richard,
After adding some new ops, I can keep the conditional compare to the
end of tree-level optimization. As tests, I expand conditional compare
to BIT_AND_EXPR/BIT_IOR_EXPR, which still depend on later "combine"
pass to combine them.
Is it possible to expand it to *cmp_and/*cmp_ior like patterns?
What's the expected RTL representation for conditional compare after
expand and before combine?
Thanks!
-Zhenqiang
== Progress ==
4 day week was ill on Friday.
* AARCH64 gprof –c option support.
Completed and submitted patch in binutils and got it upstreamed.
http://sourceware.org/ml/binutils/2013-05/msg00265.htmlhttp://sourceware.org/ml/binutils/2013-05/msg00264.html
The committer has changed the logic and seems it is not working for
backward addresses. Sent him an offline mail to correct it.
http://sourceware.org/ml/binutils/2013-05/msg00279.html
* AARCH64 gprof –glibc support.
Submitted patch and got is approved
http://sourceware.org/ml/libc-ports/2013-05/msg00098.html
* AARCH64 gprof – gcc support
Tested with removing test clause as suggested by Marcus (Aarch64 maintainer).
Marcus wants me to send two separate patches. Will be posting it.
* AARCH64 testing
Got boot strap failure with GCC 4.9 trunk on open embedded image with
glibc changes.
To confirm it is not a regression I ran with the openembedded image
available at Linaro download site.
Bootstrap failure can be reproduced. I am documenting the steps to
increase the size of image and also
Steps to reproduce boot strap failure in the model.
== Plan ==
* Continue bootstrap testing and push patches to GCC
* libssp support for Aarch64
* Linaro connect travel prep.
Misc
------
Planned leave 29-5-2013.
== Issues ==
* None.
== Progress ==
* LRA on ARM and AArch64:
- Reduced the ARM test case.
- The issue occurs during the constraints alternatives choice.
- Debug still ongoing.
== Plan ==
* LRA, LRA and LRA
== Progress ==
VRP based zero/sign extension
- Got some review comments for the patch and started addressing them
- split the patch into two; 1. propagating value range and 2. do rtl
expansion
- testing in progress
specfp regression
- Benchmarked spec2k for A15 with trunk and couldn't reproduce it.
- benchmarked spec2k for A9 with trunk and couldn't reproduce between
24th and 28th
== Leave ==
- Monday off Sick
== Plan ==
VRP based zero/sign extension
- Send patch for review
specfp regression
- benchmark for trunk version on 23rd
- Resolve regression
Sorry, this covers the last two weeks, not just one.
== Progress ==
* Created database schema for DejaGnu test results
* Created data schema for benchmarks
* Wrote scripts to convert benchmark and test data into a form that
can be imported into a database, added them to DejaGnu branch
* Imported all historical benchmark data
* Imported most historical test results (GCC still importing)
* Did some experimental graphs of test results
* Read lots of web pages to come up to speed on Linaro, registered
for lots of web pages and accounts
* Learned about Cbuild and LAVA
* Started on Cbuild v2
* Installed Ubuntu on Chromebook
== Plan ==
* Write Cbuild 2 design doc
* Continue work on Cbuild v2 to be able to use it for the June release
* Get remote testing working with Chromebook & foundation model
* More support tasks resulting from move off launchpad
- rob -
Greetings,
I'm using the Linaro tool chain with Eclipse (Juno) (under Windows) and
openOCD to write firmware for an STM32F20x based design (using an ST-Link2
debugger).
In general, that all works fairly well.
The part I'm having problems with is debugging (step-in, etc) from Eclipse.
The execution flow seems chaotic when single stepping through C code: it
skips statements, it jumps into the middle of a function, then returns to
the start of a function, it loops over certain statements (while there's no
loop in the code), etc. (It's close to useless).
I have seen this behavior with other IDE's and tool chains when code was
built with optimization turned on.
However, I specify 'no optimization' (-O0) when I build my code.
My questions:
a) Is there some implicit optimization being done in the compiler, even
though I tell it not to do so, which may affect proper debugging?
b) Are other people using Eclipse (Juno) and are they seeing the same
issue? Are there any known ways to fix this chaotic debugger behavior?
Kind regards,
~ Paul Claessen
== Progress ==
* binutils on ARM testsuite finally green in cbuild!
* Tested and pushed to gerrit bionic memcpy patches.
* Investigated binutils native AArch64 testsuite failures (not IFUNC related).
* Made a start on the DeveloperTools/LibraryPerformance wiki.
* Started looking at the Android memcpy problem on Galaxy Nexus.
== Issues ==
* binutils make ; make check takes over 24 hours on foundation model!
== Plan ==
* Respin AArch64 IFUNC binutils patch once relocation number allocated.
* Setup git mirrors for binutils, glibc and newlib.
* Android memcpy issue.
--
Will Newton
Toolchain Working Group, Linaro
== Progress ==
* Disable-peeling: looking at how to have less aggressive vectorization
* Libsanitizer/aarch64: initiated upstream discussion
* PGO/LTO bug reported by Doko: SD card too small to reproduce the problem
* Merges for linaro-gcc-2013.06: started looking at what to backport,
started merges
* Jira/wiki: started cleanup/collecting new cards
* Internal support
== Next ==
* Jira: update status on cards/blueprints backported from launchpad
* Merges for linaro-gcc-2013.06: continue collecting relevant merges
* Disable-peeling: continue investigating vectorizer behaviour
*Libsanitizer/aarch64: look at frame implementation
* PGO/LTO: complete build of python
* Neon intrinsics: continue improving crc with vuzp/veor
Progress:
* misc
** got raring/aarch64 cross build set up
** reducing number of places that need changing for a new qemu
target: sent some simple configure patches
** some 32 bit cleanup work that will help with getting John's
AArch64 patches to work
** tested Huawei's aarch64 patches and confirmed they work
** rebased qemu-linaro (and passed the results to Serge H for Ubuntu)
** sent patches which make QEMU builds for arm/ppc/microblaze guests
require libfdt, since a non-FDT-aware ARM QEMU is becoming
rapidly less and less useful
Plans:
* handover from John Rigby
* VIRT-55: talk to Andre about testing; investigate testing migration
using LAVA
* set up a new qemu-linaro tree/branch as our CI/LAVA input [to keep it
separate from our "we release this" tree]
* restart work on upstreaming omap3 patches as part of my generic qemu
maintenance work (will reduce our maintenance burden in the long term)
-- PMM
== Progress ==
* Buildbots
- Self-hosting bot online
- Fiddling with MCJIT tests to get bots green
* Benchmarks
- Running Phoronic benchmarks: GCC vs. LLVM, good results
- Got a sample of the PerfDB SQLite database, writing some queries
* Jira/Wiki farming
- Creating loads of new cards, blueprints, sub-tasks
- Adding content to the wiki pages about processes, cards, etc
* Release 3.3
- RC2 is out, no regressions, already on official repository
* EuroLLVM 2013
- Monthly call, wrap-up, preview of next year's
== Plan ==
* Try running a CBuild benchmark with LLVM 3.3 (Rob?)
* Automate release process, maybe we can do that every month
* Automate Phoronix test (GCC+LLVMrel+LLVMsvn)
* Follow up on Panda/Arndale ordering, needed for buildbots
* Try to extract useful information from perf database
Hi all,
I've spent a little while porting an optimization from Python 3 to
Python 2.7 (http://bugs.python.org/issue4753). The idea of the patch is
to improve performance by dispatching opcodes on computed labels rather
than a big switch -- and so confusing the branch predictor less.
The problem with this is that the last bit of code for each opcode ends
up being the same, so common subexpression elimination wants to coalesce
all these bits, which neatly and completely nullifies the point of the
optimization. Playing around just building from source directly, it
seems that -fno-gcse prevents gcc from doing this, and the resulting
interpreter shows a small performance improvement over a build that does
not include the patch.
However, when I build a debian package containing the patch, I see no
improvement at all. My theory, and I'd like you guys to tell me if this
makes sense, is that this is because the Debian package uses link time
optimization, and so even though I carefully compile ceval.c with
-fno-gcse, the common subexpression elimination happens anyway at link
time. I've tried staring at disassembly to confirm or deny this but I
don't know ARM assembly very well and the compiled function is roughtly
10k instructions long so I didn't get very far with this (I can supply
the disassembly if someone wants to see it!).
Is there some way I can tell GCC to not compile perform CSE on a section
of code? I guess I can make sure that the whole program, linker step
and all, is compiled with -fno-gcse but that seems a bit of a blunt
hammer.
I'd also be interested if you think this class of optimization makes
little sense on ARM and then I'll stop and find something else to do :-)
Cheers,
mwh
The v8 Foundation Model User Guide has a bare metal hello world example that uses semi-hosting. The Makefile uses ARM tools, however. Is there equivalent support for this example using a bare metal version of the gnu tools, such as gcc-linaro-aarch64-none-elf-4.8-2013.04-20130422_linux.tar.xz? I took a look, but didn't see a way to do this.
Of course, running the Linaro linux port on the v8 Foundation Model allows one to run hello world and much more, but I'm currently only interested in a bare metal target using gnu tools.
Thanks, Don
== Progress ==
* Backed up laptop data and did new ubuntu installation which crashed for
some reason.
* Wrote python script with googledoc API to automate fill up of
googlespread sheet.
* Created and tested patch for arm assembler compatibility fixes for
gdb.dwarf test suite assembly files.
== Plan ==
* Identify arm bugs out of gdb7.6 test results and work towards fixing them.
* Update JIRA enteries with test suite failures on arm to track progress.
* More work on automating googledoc spreadsheet writing using python.
* 2 Day off on coming Friday and Monday.
== Progress ==
* AARCH64 - gprof support.
Completed gprof -c support for aarch64.
Got reviewed internally by Matt and Will.
Patch yet to be posted. Waiting for some feedback on copyright message.
*Testing GCC bootstrap and regression suite.
Created a large image with help of Bero.
Bootstrap fails with GCC trunk libgcc_eh.a (unwind-dw2-fde-dip.o)
hidden symbol __register_frame_info is referenced bu DSO
ld final link Bad value.
Drilling down
== Plan ==
* Post patches in gcc and binutils for gprof work
* Continue handling builtin_return_address when -fomit-frame-pointer
is enabled.
* Continue gcc bootstrap and regression test.
== Issues ==
* Cbuild down most of the week.
== Progress ==
* 4.6 and 4.7 releases
- Released after a painful week !
* LRA on ARM and AArch64:
- Enabled on AArch64, but it leads to an ICE too.
- Applied Brice's ARM patches didn't solved the issue.
- Looked at the documentation/comments to understand the process.
- Debug ongoing.
== Plan ==
* Continue on LRA
== Issues ==
* None
== Progress ==
* Continue on conditional compare.
- Mix fixes for bootstrap.
* Update shrink-wrap patches according to comments and retest them on
Pandaboard and Chromebook.
* Prebuild 2013.05 Linaro toolchain locally.
- gdb related local patches need rework.
== Plan ==
* Continue on conditional compare to bootstrap.
* Linaro toolchain 2013.05 binary release.
Best Regards!
-Zhenqiang
The Linaro Toolchain Working Group is pleased to announce the release
of Linaro GDB 7.6.
Linaro GDB 7.6 2013.05 is the first release in the 7.6 series.
***NOTE*** Linaro GDB 7.6 2013.05 is identical to the FSF GDB 7.6 release,
except for the change in version number and Linaro branding, since all
Linaro GDB features were already accepted upstream and are included in
the FSF release as-is. Future releases in the Linaro GDB 7.6 series may
include additional ARM-focused bug fixes and enhancements.
The source tarball is available at:
https://launchpad.net/gdb-linaro/+milestone/7.6-2013.05
More information on Linaro GDB is available at:
https://launchpad.net/gdb-linaro
--
Matthew Gretton-Dann
Linaro Toolchain Working Group
matthew.gretton-dann(a)linaro.org
== Progress ==
* 3.3 Release
- Bootstrapping, testing, fixing bugs, etc.
- RC1 released on Tuesday
http://people.linaro.org/~rengolin/llvm/
- Fix for C11 atomics on Linux
http://llvm.org/bugs/show_bug.cgi?id=15429
- Fix for zero extend vector bug in test-suite
http://llvm.org/bugs/show_bug.cgi?id=15970
* Test-Suite
- ClamAV fails on Calxeda, same as PPC64 (bad test)
* Self-Host Buildbot
- Re-purposing the Panda back to buildbot service
- Buildbot passing green, setting it up on Build Master
== Issues ==
Calxeda gets turned off quite regularly, which messes up any long term
commitment you might have for them.
== Plan ==
* Install Ubuntu on Chromebook, run benchmarks with 3.3 RC1
* Try to revive LLVM CBuild job if it's any different than our current
buildbot
* Try to setup benchmark jobs for LLVM, either buildbots, CBuild, or
whatever
* Stay alert for RC2 and re-run release process on them
== Progress ==
* Finished porting ld-ifunc tests to AArch64.
* Requested a relocation number for R_AARCH64_IRELATIVE.
* Tested AArch64 ifunc code natively to run generic ifunc tests.
* Investigated gdb bug #1175525 and submitted workaround patch to gdb-patches.
* Started DeveloperTools and LibraryPerformance wiki pages.
* Submitted initial version of AArch64 binutils patch with temporary
reloc number.
== Issues ==
* None.
== Plan ==
* Complete process of getting R_AARCH64_IRELATIVE allocated.
* Feedback on binutils AArch64 ifunc patch.
* Feedback on slightly hacky gdb patch.
* bionic memcpy.
--
Will Newton
Toolchain Working Group, Linaro
== Progress ==
* Disable-peeling: analyzed regression on one bench.
* Libsanitizer/aarch64:
- porting will require more effort than aarch32.
- some syscalls are not supported by aarch64
- libsanitizer expects frame to grow downwards (true on aarch32,
false on aarch64)
* PGO/LTO bug reported by Doko: updating board environment to reproduce it
* Internal support
== Next ==
* Disable-peeling: see how to disable too aggressive vectorization
* Revert-coalesce-vars: discuss how to handle it with the team
* Neon intrinsics: continue improving crc with vuzp
* Neon intrinsics tests: handle feedback if any
* PGO/LTO bug: reproduce it
Progress:
* VIRT-49, VIRT-50 [cp15 migration, reset]
** last bits of patch cleanup complete; realised I could test
KVM migration without any timer or vgic patches; did so and
sent first version of patches out to qemu-devel
* VIRT-55:
** started to draft basic notes on what we want to test:
https://wiki.linaro.org/PeterMaydell/MigrationTesting
* misc
** reviewed Huawei's aarch64 tcg target patches; there are some
issues they need to fix but overall looking good
** fixed a last-minute bug in the versatilepb PCI controller
model (some changes we made earlier in the release cycle
wouldn't work with newer Linux kernels)
Plans:
* deal with any code review feedback on patchset
* set up a raring/aarch64 cross build environment (got partway
through this, waiting for wookey to update some packages)
* more in-depth review/test of John Rigby's mach-virt, aarch64 patchsets
* VIRT-55: write up how to test migration (and talk to Andre
about what he's doing testing-wise)
-- PMM
Hi, All
The attachment file is analysed by the streamline tool.
How to do you think about the vsub.f32 hot spot there?
Is there any way we can improve that?
--
Thanks,
Yongqin Liu
---------------------------------------------------------------
#mailing list
linaro-android(a)lists.linaro.org <linaro-dev(a)lists.linaro.org>
http://lists.linaro.org/mailman/listinfo/linaro-android
linaro-validation(a)lists.linaro.org <linaro-dev(a)lists.linaro.org>
http://lists.linaro.org/pipermail/linaro-validation
== Progress ==
* Filled up the googledoc comparison sheets of gdb 7.6 test suite run in
different configuration on chromebook and x86.
* Filled up the googledoc comparison sheets of gdb 7.5.1 test suite run in
different configuration on chromebook and x86.
* Compared GDB 7.6 and 7.5.1 results which show good improvements in gdb
7.6.
== Plan ==
* Repair my laptop's ubuntu installation which crashed for some reason.
* Submit patch to fix dwarf test suite in gdb 7.6
* Investigate gdb 7.6 gdb.base failures on arm and try to figure out causes
+ possible solution.
* Try to figure out a way automate a comparison of two test suite results
and upload them to googledocs.
Hi,
I downloaded 13.04 version and tried to compile linaro-image-sdk and
linaro-image-lamp. Both these builds fail with the following error.
However, I could compile core-image-minimum. Can somebody help me with this
issue? Is there any quick workaround. Mostly, I do not need ltp package.
Thanks,
Aparna
aarch64-oe-linux-gcc -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
--sysroot=/home/kvs/aparna/openembedded/build/tmp-eglibc/sysroots/genericarmv8
-O2 -pipe -g -feliminate-unused-debug-types -g -O2 -fno-strict-aliasing
-pipe -Wall -DTST_USE_NEWER64_SYSCALL=1
-I/home/kvs/aparna/openembedded/build/tmp-eglibc/work/aarch64-oe-linux/ltp/20120903-r2/ltp-20120903/testcases/kernel/include
-I/home/kvs/aparna/openembedded/build/tmp-eglibc/work/aarch64-oe-linux/ltp/20120903-r2/ltp-20120903/testcases/kernel/syscalls/getdents
-I/home/kvs/aparna/openembedded/build/tmp-eglibc/work/aarch64-oe-linux/ltp/20120903-r2/ltp-20120903/testcases/kernel/syscalls/getdents/../utils
-I../../../../include -I../../../../include -D_FILE_OFFSET_BITS=64
-DOFF_T=__off64_t -c -o getdents04_64.o getdents04.c
| In file included from getdents01.c:57:0:
| getdents.h: In function 'getdents':
| getdents.h:60:16: error: 'SYS_getdents' undeclared (first use in this
function)
| getdents.h:60:16: note: each undeclared identifier is reported only once
for each function it appears in
| In file included from getdents02.c:53:0:
| getdents.h: In function 'getdents':
| getdents.h:60:16: error: 'SYS_getdents' undeclared (first use in this
function)
| getdents.h:60:16: note: each undeclared identifier is reported only once
for each function it appears in
| In file included from getdents03.c:56:0:
| getdents.h: In function 'getdents':
| getdents.h:60:16: error: 'SYS_getdents' undeclared (first use in this
function)
| getdents.h:60:16: note: each undeclared identifier is reported only once
for each function it appears in
| In file included from getdents04.c:56:0:
| getdents.h: In function 'getdents':
| getdents.h:60:16: error: 'SYS_getdents' undeclared (first use in this
function)
| getdents.h:60:16: note: each undeclared identifier is reported only once
for each function it appears in
| make[4]: *** [getdents01] Error 1
| make[4]: *** Waiting for unfinished jobs....
| make[4]: *** [getdents02] Error 1
| In file included from getdents03.c:56:0:
| getdents.h: In function 'getdents':
| getdents.h:60:16: error: 'SYS_getdents' undeclared (first use in this
function)
| getdents.h:60:16: note: each undeclared identifier is reported only once
for each function it appears in
| make[4]: *** [getdents03] Error 1
| In file included from getdents02.c:53:0:
| getdents.h: In function 'getdents':
| getdents.h:60:16: error: 'SYS_getdents' undeclared (first use in this
function)
| getdents.h:60:16: note: each undeclared identifier is reported only once
for each function it appears in
| make[4]: *** [getdents04] Error 1
| make[4]: *** [getdents03_64.o] Error 1
| In file included from getdents04.c:56:0:
| getdents.h: In function 'getdents':
| getdents.h:60:16: error: 'SYS_getdents' undeclared (first use in this
function)
| getdents.h:60:16: note: each undeclared identifier is reported only once
for each function it appears in
| In file included from getdents01.c:57:0:
| getdents.h: In function 'getdents':
| getdents.h:60:16: error: 'SYS_getdents' undeclared (first use in this
function)
| getdents.h:60:16: note: each undeclared identifier is reported only once
for each function it appears in
| make[4]: *** [getdents02_64.o] Error 1
| make[4]: *** [getdents04_64.o] Error 1
| make[4]: *** [getdents01_64.o] Error 1
| make[4]: Leaving directory
`/home/kvs/aparna/openembedded/build/tmp-eglibc/work/aarch64-oe-linux/ltp/20120903-r2/ltp-20120903/testcases/kernel/syscalls/getdents'
| make[3]: *** [all] Error 2
| make[3]: Leaving directory
`/home/kvs/aparna/openembedded/build/tmp-eglibc/work/aarch64-oe-linux/ltp/20120903-r2/ltp-20120903/testcases/kernel/syscalls'
| make[2]: *** [all] Error 2
| make[2]: Leaving directory
`/home/kvs/aparna/openembedded/build/tmp-eglibc/work/aarch64-oe-linux/ltp/20120903-r2/ltp-20120903/testcases/kernel'
| make[1]: *** [all] Error 2
| make[1]: Leaving directory
`/home/kvs/aparna/openembedded/build/tmp-eglibc/work/aarch64-oe-linux/ltp/20120903-r2/ltp-20120903/testcases'
| make: *** [testcases-all] Error 2
| ERROR: oe_runmake failed
| ERROR: Function failed: do_compile (see
/home/kvs/aparna/openembedded/build/tmp-eglibc/work/aarch64-oe-linux/ltp/20120903-r2/temp/log.do_compile.6470
for further information)
ERROR: Task 349
(/home/kvs/aparna/openembedded/openembedded-core/meta/recipes-extended/ltp/
ltp_20120903.bb, do_compile) failed with exit code '1'
== Progress ==
* AARCH64 - gprof support.
Submitted GCC patches to generate profile call.
Also applied the review comments from Marcus and tested patches for
aarch64-none-elf.
http://gcc.gnu.org/ml/gcc-patches/2013-05/msg00597.html
* Setup a Ubuntu machine at Office.
Ran GCC testsuite with on openembeded/V8 model
ref: http://people.linaro.org/~hrw/oe/vekumar/.
This image has updated gcc and glibc and enables gprof.
During bootstrap GCC build failed due to space getting over.
Need to create a larger image.
* Looking at how to handle builtin_return_address when
-fomit-frame-pointer is enabled.
GCC saves frame pointer for the function alone where
builtin_return_address is used.
Callers of the function may not have set up the frame yet.
== Plan ==
* Continue gprof "-c" option support in binutils
* Continue handling builtin_return_address when -fomit-frame-pointer
is enabled.
* Continue gcc bootstrap and regression suite after creating a larger image.
== Progress ==
* 3.3 Release
- Running tests on Pandas and Calxeda, Ubuntu 12.04 and 12.10
- Chromebook arriving next week
- Calxedas died a couple of times this week for no reason (somebody else
turned it off?)
- Many bootstrap failures on 12.04: check-all, test-suite, etc on all
phases
- Fixing a bug that allows to bootstrap on Ubuntu 12.10
* EuroLLVM 2013
- Published the questionnaire results, wrote a post on the blog
- http://blog.llvm.org/2013/05/eurollvm-2013-paris-france.html
* Extra
- Studying C++11 atomics
== Issues ==
There's no way to tell when someone will turn the Calxeda server off, so
relying on its results or usability is folly. Not to mention that the
designers should have had a bit more care on the interface to power up and
configure nodes.
== Plan ==
* Spend the weekend testing on the Pandaboard with Ubuntu 12.10 and see if
the fix is good, commit
* Install Ubuntu on Chromebook arriving on Monday, run release tests on them
* Hope that Ubuntu 12.10 will be less hemorragic than 12.04 for the LLVM
release...
Short week (3 days)
== Progress ==
* Disable-peeling: got results vs reference, shared with team.
* Revert-coalesce vars: got results vs reference, showing regressions.
* Libsanitizer: committed upstream.
* Neon intrinsics: shared initial proposal of dejagnu-ization of my
existing tests.
* Branch reviews
* Internal support
== Next ==
* Disable-peeling: investigate regression on eon
* Revert-coalesce: discuss how to handle it with team
* Libsanitizer: enable on aarch64
* Neon intrinsics: continue improving crc with vuzp
* Neon intrinsics tests: continue dejagnu-ization
== Progress ==
* Four day week and traditional bank holiday cold slowed progress.
* Tested glibc memcpy patch on big endian and got it committed.
* Submitted some generic IFUNC patches for binutils upstream.
* Further work on AArch64 IFUNC support in binutils.
== Issues ==
* cbuild seems to not be doing much building at the moment.
== Plan ==
* Complete AArch64 IFUNC support and submit a patch.
* Look further at gdb bug if I get time.
--
Will Newton
Toolchain Working Group, Linaro
[three day week]
Progress:
* VIRT-49 [cp15 migration]
** lots of patch cleanup; nearly ready to submit but ideally
I'd like to test KVM migration with Andre's kernel changes first
** improved arndale setup by switching to USB hard disk; confirmed
I can build and boot my own kernel
* VIRT-50 [cp15 reset]
** it turns out that the VIRT-49 patches on their own break
reset handling for the KVM case, so we need to include VIRT-50
work in the same patchset. Fortunately it turns out to be a small
extension; patch done and tested, and will be submitted as part
of the VIRT-49 patchset
* misc
** discussions about early-printk in a virtual machine. I still think
it's important to be able to have a device tree binding to tell
the kernel where its early-printk uart is. Grant Likely said he
and Nico actually tossed this idea around in the past, it just
never got implemented.
Plans:
* VIRT-49/50: test against Andre's kernel timer save/load patches,
then submit
* more in-depth review and test of John Rigby's mach-virt and
aarch64 patchsets
-- PMM
Hi,
I'm running into an interesting problem with driver blobs when building
Android with the 4.8 toolchain:
E/libEGL ( 1219):
load_driver(/vendor/lib/egl/libEGL_POWERVR_SGX540_120.so): Cannot load
library: soinfo_link_image(linker.cpp:1635): could not load library
"libIMGegl.so" needed by "libEGL_POWERVR_SGX540_120.so"; caused by
soinfo_link_image(linker.cpp:1635): could not load library "libsrv_um.so"
needed by "libIMGegl.so"; caused by soinfo_relocate(linker.cpp:975): cannot
locate symbol "__aeabi_uidiv" referenced by "libsrv_um.so"...
__aeabi_uidiv is a libgcc.a function (Android doesn't have libgcc_s) - and
the blob makers didn't link libgcc.a properly, so it is understandable why
this would be missing.
However, Android's libc has an ugly but (up until now) working workaround
that is supposed to address this sort of issue.
It includes libgcc_compat.c, which comes down to
#define COMPAT_FUNCTIONS_LIST \
XX(__aeabi_uidiv) \
... (same for other libgcc functions)
#define XX(f) extern void f(void);
COMPAT_FUNCTIONS_LIST
#undef XX
void __bionic_libgcc_compat_hooks(void)
{
#define XX(f) f();
COMPAT_FUNCTIONS_LIST
#undef XX
}
Running nm on libc.so shows the symbol is actually in libc.so, and it seems
to be visible.
$ nm /system/lib/libc.so |grep aeabi_uidiv
0004f5d8 t __aeabi_uidiv
0004f680 t __aeabi_uidivmod
libsrv_um.so is linked to libc too, so it should see it...
$ objdump -x /vendor/lib/libsrv_um.so |grep libc.so
NEEDED libc.so
Can anyone think of a reason why this would work fine if the system is
built with the 4.7 toolchain, but break with 4.8?
My first thought was that 4.8 might have miscompiled the dynamic linker -
but the problem remains if I copy in /system/bin/linker from the 4.7 build.
ttyl
bero
Hi all,
You probably don't care, but here is a quick post (with pictures!) of the
EuroLLVM 2013 that just happened last week.
http://blog.llvm.org/2013/05/eurollvm-2013-paris-france.html
Linaro helped organize (mainly so I could get free booze in Paris), and it
seems that other people liked it, too.
If you're really interested in knowing more, let me know.
cheers,
--renato
== Progress ==
* SD card purchased dumped ubuntu for chromebook on sd card and configured
chromebook for development.
* Created newly released GDB 7.6 test suite results by running on
chromebook and x86 machine in native-none,native-gdbserver and
remote-gdbserver configurations
* Created GDB 7.5.1 test suite results by running on chromebook and x86
machine in native-none,native-gdbserver and remote-gdbserver configurations
* Created comparisons of gdb 7.6 test suite results in different
configuration.
* Public Holiday on 1st of May
== Plan ==
* Fill up the googledoc comparison sheets of gdb 7.6 test suite run in
different configuration on chromebook and x86.
* Fill up the googledoc comparison sheets of gdb 7.5.1 test suite run in
different configuration on chromebook and x86.
* Analyse difference between test suite results between gdb 7.5.1 and gdb
7.6.
* Pakistan General Elections 2013 might have to take a day off.
== Progress ==
* AARCH64 - gprof support.
Make GCC generate profile information (Completed).
Defined macros in GCC to enable frame return address and insert profile call.
Changed glibc to use generic gprof calls. Now gmon.out is generated
when run in openembedded on V8 model.
Used PROFILE_HOOK and generated mcount call using emit_library_call.
Misc
-------
1 May was a holiday.
== Plan ==
* Continue AARCH64 gprof support
* Post patches in GCC for profile and RETURN_ADDR_RTX
* Look at gprof "-c" option support in binutils
* Run gcc testsuite with changes on openembeded/V8 model.
Hi,
I tried compiling a hello-world program for cortex -a53/57 but, gcc does not recognize the mcpu option.
Here is my command ...
aarch64-linux-gnu-gcc hello_world.c -mcpu=cortex-a53 -o hello_world
Does the compiler support these options? I see that lib/gcc/aarch64-linux-gnu/4.8.1/plugin/include/config/aarch64/aarch64-cores.def do have the entries for cortex a53 & a57.
Thanks,
Kalai
== Progress ==
* Committed binutils testsuite fix for precise, should be green in cbuild now.
* Comitted binutils fix for ARM IFUNC issue.
* Various small binutils fixes for AArch64.
* Lots of rework of glibc memcpy patch, now up to v6.
* Integrated latest bionic string functions into cortex-strings.
* AArch64 IFUNC code and tests beginning to take shape.
== Issues ==
* None.
== Plan ==
* Another respin of glibc memcpy patch (last one?).
* More work on AArch64 IFUNC.
* May get time to look into gdb bug Peter found.
* 4 day week due to bank holiday.
--
Will Newton
Toolchain Working Group, Linaro
Progress:
* office move
* checking up on status of licensing issues with QEMU's softfloat
* cleaned up obsolete qemu blueprints in launchpad [Matt G-D is
going to finish the last bits of transferring the backlog to
JIRA where appropriate]
* booked travel/hotel for Connect Dublin
* reviewed John Rigby's mach-virt and aarch64 patches
* VIRT-49
** can run KVM with this code now, need to test migration proper
(requires kernel to support arch timer state save/load),
and clean up some TODOs and other cruft
** GDB is behaving oddly connected to QEMU's stub, which I think is
a GDB bug (LP:1175525) but may also be a QEMU side issue
Plans:
* VIRT-49 debug & patch cleanup
* NB: UK bank holiday next week, will be 3 day week for me
-- PMM
== Issues ==
* None
== Progress ==
* Short week (only 2 days)
* Libunwind AArch64 support:
- Did some fixes and cleanups after review.
- re-submitted upstream
* LRA on ARM and AArch64:
- Enabled LRA on trunk for ARM target
- build doesn't complete, investigation ongoing
* Internal meetings
== Plan ==
* Short week too
* Continue on LRA
== Progress ==
* EuroLLVM 2013
- Conference Mon~Tue
- Analysing questionnaire's response
- Writing a blog entry, reports
* Shorter week, low progress
== Plan ==
* Release
- Start testing version 3.2
- Check-out frozen 3.3 and run the same tests
- Make sure calxeda node is up to the task
- Buy a Chromebook for further testing (?)
I'll probably spend all my time worrying about the release, one way or
another...
Hi,
I'm trying to build the aarch64 tool chain from source on a Redhat machine. I see that build.mk in the crosstool package requires a few .deb packages. If I want to build this on a Redhat machine, what are the changes I have to do?
Thanks,
Kalai
Hi,
I am looking for pre-build (binary, tar) GCC for native ARM e.g. I need to
use in Angstrom FS and panda board to compile the code.
Thanks & regards,
Sukumar
Hi,
I am trying to compile Qt 4.8 for ARMv8. I need following packages.
libqt4-dev libqt4-opengl-dev libphonon-dev libicu-dev libsqlite3-dev
libxext-dev libxrender-dev gperf libfontconfig1-dev libphonon-dev
libpng12-dev libjpeg62-dev
I could not find these or any such packages on Linaro website. Is there any
website which maintains packages compiled for ARMv8?
I downloaded Qt4.8 source code. But it seems I need to do many hacks to get
it compiled for ARMv8. Is it already available some where?
Any help will be appreciated.
Thanks
Aparna
== Progress ==
* Compared gdb test suite results in arm native none and arm remote
gdbserver configurations. Filled up the googledoc sheet with the
comparison.
* Created a patch for dwarf failures still need to sync it with gdb main
trunk and then need to test it on chrome book and submit after review.
* Investigated gdb.mi test suite failures most of them seems to be occuring
due to long delay. Will retest on chrome book and update.
* Received chrome book on Friday started configuration created a recovery
disk and SD card, facing a kernel panic for now.
* 1:1 with Matt
== Plan ==
* Complete chrome book configuration.
* Run arm test suite in different configurations on chrome book.
* Update the comparison sheet of gdb test suite results in different
configurations after running tests on chrome book.
* Public Holiday on 1st of May
== Progress ==
* AARCH64 - Gprof support.
Make GCC generate profile information (On-going).
Defined hook and macros in GCC to emit "mcount" instrumented calls.
Looked at ARM implementation and veener code in glibc which implements mcount.
Discussed with Matt, and decided to use generic "mcount"
implementation in glibc for aarch64.
The generic uses built_in_return_address. Looking at defining macros
and function which traverses
frames back and returns the desired frame address.
== Plan ==
* Continue gprof support work for Aarch64
Planned leaves:
1 May: Labor Day's holiday.
== Summary ==
- http://cards.linaro.org/browse/TCWG-14
- ran into space issues with chromebook and issues running spec2000
locally due to that. Finally reinstalled Ubuntu on 32GB card and set-up
everything.
- There is a potential issue with zero/sign extension based VRP.
- 254.gap goes into infinite loop. Investigating it.
- checked VRP for improvement of zero/sign extension (missing case
in CRC).
== Plan==
- http://cards.linaro.org/browse/TCWG-14
- Find the cause for 254.gap infinite loop and fix it.
- Find a solution to missing case in CRC
Summary:
* Enhance Linaro crosstool-ng.
Details:
1. Work with Bero to release 4.8 binary build.
2. Update Linaro crosstool-ng to use ISL/CLooG for 4.8 build (lp:1172595).
3. Rebase conditional compare experimental codes to lp:gcc-linaro/4.8.
Plan:
* Investigate the impact of conditional compare on optimizations.
Planned leaves:
* 29 April - 1 May: Labor Day's holiday.
Best Regards!
-Zhenqiang
== Issues ==
* None
== Progress ==
* Libunwind AArch64 support:
- Fixed signal frame issue.
- Sent patch upstream for review.
- Delivered patch to OE team for early testing.
* LRA on ARM and AArch64:
- Start to look at what is missing.
== Plan ==
* 3 days off next week
* Continue on LRA.
Hi,
I need following packages for ARMv8 (aarch64) target. Where can I find
these packages? Or do I have to download source code and compile those
using linaro-cross-compiler?
libqt4-dev libqt4-opengl-dev libphonon-dev libicu-dev libsqlite3-dev
libxext-dev libxrender-dev gperf libfontconfig1-dev libphonon-dev
libpng12-dev libjpeg62-dev
Thanks
Aparna
== Progress ==
* Benchmarks
- Running EEMBC on a Panda
- LLVM on par with GCC in code size and run time
* Release Planning
- Calxeda busted, delays, but got test-suite running on it
- Bootstrap and test-suite fail with atomic support, investigating
- Preparing a Beagleboard for conscience relief
- Coordinating with other parties on hardware/testing/roles
* EuroLLVM 2013
- Meetings, badges, preparations, final run
* Support
- Helping folks with test-suite, buildbots, reviewing patches, etc
== Issues ==
Broke my glasses on a place impossible to fix, had to resort to epoxy while
I wait for an eye test
== Plan ==
* EuroLLVM Mon~Tue
* Continue setting up release hardware/process, order some more boards
* Help Sylvestre/Galina setting up Jenkins/Buildbots for release
* Try to run a more substantial benchmark
* Fix my glasses
== Progress ==
* Disable-peeling: had to re-spawn benchmark jobs (both reference and
updated patch)
* Libsanitizer: updated patch running under cbuild before updating my
proposal upstream.
* Neon intrinsics:
- some progress on removing unnecessary moves around vuzp.
- there are still some around veor
* Bi-endian compiler: read article, attended call
* Internal support
== Next ==
Holidays next week
== Future ==
* Disable peeling: analyze results
* Revert-coalesce: same
* Libsanitizer: sent updated patch upstream if validation OK
* Neon intrinsics: continue improving crc with vuzp
== Progress ==
* Submitted binutils patch for testsuite failure on precise.
* Updated glibc memcpy patch based on feedback.
* Updated binutils IFUNC patch based on feedback.
* Started working on AArch64 IFUNC.
* Submitted a couple of cleanup patches for AArch64 binutils.
== Issues ==
* 2 cards blocked on upstream review, 1 blocked on Android team.
== Plan ==
* Should get binutils IFUNC patch committed Monday.
* Need to ping other patches again.
* More work on AArch64 IFUNC.
--
Will Newton
Toolchain Working Group, Linaro
Progress:
* office move
* VIRT-49:
** confirmed I can run KVM on the Arndale, started using it as
test platform for the migration work
** I have most of the code for cp15 register migration written
** in debug phase; there is a case I hadn't considered that needs a
little thought
Plans:
* keep pushing on with VIRT-49
* book travel/hotel for Connect Dublin
* office move unpacking
-- PMM
Hi.
First.
#include <Im-doing-something-somewhat-odd.h>
I'm trying to use a current clang/llvm (current as in git checkout
from just the other day) to build an opencl kernel and then link that
with some code which has been compiled with gcc/g++.
When the clang .o is linked to the gcc/gcc+, I'm getting
/home/tgall/opencl/SNU/tmp2/cl_temp_1.tkl uses VFP register arguments,
/home/tgall/opencl/SNU/tmp2/cl_temp_1.o does not
the cl_temp_1.o was produced with clang.
the cl_temp_1.tkl via gcc/g++.
Let's dive into details.
This is following in the footsteps of an open source framework called
SNU which implements OpenCL. Within SNU they had a fairly old version
of clang+llvm which wouldn't even build on ARM so step one has been to
figure out what SNU was doing with clang and replicate this using
latest clang.
So given the following minimal test kernel placed into cl_temp_1.cl
/* Header to make Clang compatible with OpenCL */
#define __global __attribute__((address_space(1)))
int get_global_id(int index);
/* Test kernel */
__kernel void test(__global float *in, __global float *out) {
int index = get_global_id(0);
out[index] = 3.14159f * in[index] + in[index];
}
then we following the following steps:
clang -mfloat-abi=hard -mfpu=neon -S -emit-llvm -x cl
-I/home/tgall/opencl/SNU/src/compiler/tools/clang/lib/Headers
-I/home/tgall/opencl/SNU/inc -include
/home/tgall/opencl/SNU/inc/comp/cl_kernel.h
/home/tgall/opencl/SNU/tmp2/cl_temp_1.cl -o
/home/tgall/opencl/SNU/tmp2/cl_temp_1.ll
with the resulting cl_temp_1.ll we:
llc /home/tgall/opencl/SNU/tmp2/cl_temp_1.ll
which results in cl_temp_1.s. Then:
clang -c -mfloat-abi=hard -mfpu=neon -o
/home/tgall/opencl/SNU/tmp2/cl_temp_1.o
/home/tgall/opencl/SNU/tmp2/cl_temp_1.s
so now in theory we should have a perflectly good cl_temp_1.o ready for linking.
But first let's get the bits ready that will be built by the
traditional gnu toolschain. We have:
gcc -shared -fPIC -O3 -o /home/tgall/opencl/SNU/tmp2/cl_temp_1_info.so
/home/tgall/opencl/SNU/tmp2/cl_temp_1_info.c
and
gcc -shared -fPIC -march=armv7-a -mtune=cortex-a9 -mfloat-abi=hard
-mfpu=neon -fsigned-char -DDEF_INCLUDE_ARM -I. -I
/home/tgall/opencl/SNU/src/runtime/hal/device/cpu -I
/home/tgall/opencl/SNU/src/runtime/include -I
/home/tgall/opencl/SNU/src/runtime/core -I
/home/tgall/opencl/SNU/src/runtime/core/device -I
/home/tgall/opencl/SNU/src/runtime/hal -I
/home/tgall/opencl/SNU/src/runtime/hal/device -DTARGET_MACH_CPU -O3 -c
/home/tgall/opencl/SNU/src/runtime/hal/device/cpu/hal.c -o
/home/tgall/opencl/SNU/tmp2/hal.o
And here we try to link it all together.
g++ -shared -fPIC -march=armv7-a -mtune=cortex-a9 -mfloat-abi=hard
-mfpu=neon -fsigned-char -DDEF_INCLUDE_ARM -O3 -o
/home/tgall/opencl/SNU/tmp2/cl_temp_1.tkl
/home/tgall/opencl/SNU/tmp2/hal.o
/home/tgall/opencl/SNU/tmp2/cl_temp_1.o
-L/home/tgall/opencl/SNU/lib/lnx_arm
-lsnusamsung_opencl_builtin_lnx_arm -lpthread -lm
and bang we're back to the error I first mentioned:
/usr/bin/ld: error: /home/tgall/opencl/SNU/tmp2/cl_temp_1.tkl uses VFP
register arguments, /home/tgall/opencl/SNU/tmp2/cl_temp_1.o does not
so first obvious question is -mfloat-abi=hard -mfpu=neon correct for clang?
tgall@miranda:~/opencl/SNU/tmp2$ clang --version
clang version 3.3
Target: armv7l-unknown-linux-gnueabihf
Thread model: posix
Thanks for any suggestions!
--
Regards,
Tom
"Where's the kaboom!? There was supposed to be an earth-shattering
kaboom!" Marvin Martian
Tech Lead, Graphics Working Group | Linaro.org │ Open source software
for ARM SoCs
w) tom.gall att linaro.org
h) tom_gall att mac.com
The Linaro Toolchain and Platform Working Groups are pleased to announce
the 2013.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.
This will likely be the last binary release based on gcc 4.7 -- it also
introduces the first gcc 4.8 based 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 2013.04 and Linaro GCC 4.8 2013.04
* Linaro GDB 7.5 2012.12
* 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:
* gcc is updated to 4.8 (in the 4.8 builds)
* rpc support in eglibc is re-enabled
* Version reported by ARMv7 and AArch64 cross toolchains has been unified
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/2013.04
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.
Summary:
* ARM internal training and R/M toolchain related work.
* Investigate Linaro toolchain 4.8 build issues.
Details:
1. Fix several linaro toolchain 4.8 binary build issues:
* nls patch need be updated to add (char *) when assigning the
result of xmalloc to a char*.
* gcc build pass-2 need build libbacktrace (get patch from
crosstool-ng upstream).
* gcc build pass-2 build with "-j4" fail. Seams build order issue. A
workaround is to remove "-j4".
* Mingw32 confiugre fail due to missing ISL. A workaround is to add
"--without-isl"
Plan:
* Work with Bero to release 4.8.
* Swith to ISL/CLooG for future release.
Best Regards!
-Zhenqiang
I couldn't find the arm-none-eabi- bare metal version of Linaro GCC 4.8. Please provide the link for prebuilt baremetal tool chain binaries?
-Sugumar
-- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
Paul,
I've been having some thoughts about CBuild and Lava and the TCWG
integration of them both. I wish to share them and open them up for general
discussion.
The background to this has been the flakiness of the Panda's (due to heat),
the Arndale (due to board 'set-up' issues), and getting a batch of Calxeda
nodes working.
The following discussion refers to building and testing only, *not*
benchmarking.
If you look at http://cbuild.validation.linaro.org/helpers/scheduler you
will see a bunch of calxeda01_* nodes have been added to CBuild. After a
week of sorting them out they provide builds twice as fast as the Panda
boards. However, during the setup of the boards I came to the conclusion
that we set build slaves up incorrectly, and that there is a better way.
The issues I encountered were:
* The Calxeda's run quantal - yet we want to build on precise.
* Its hard to get a machine running in hard-float to bootstrap a
soft-float compiler and vice-versa.
* My understanding of how the Lava integration works is that it runs the
cbuild install scripts each time, and so we can't necessarily reproduce a
build if the upstream packages have been changed.
Having thought about this a bit I came to the conclusion that the simple
solution is to use chroots (managed by schroot), and to change the
architecture a bit. The old architecture is everything is put into the main
file-system as one layer. The new architecture would be to split this into two:
1. Rootfs - Contains just enough to boot the system and knows how to
download an appropriate chroot and start it.
2. Chroots - these contain a setup build system that can be used for
particular builds.
The rootfs can be machine type specific (as necessary), and for builds can
be a stock linaro root filesystem. It will contain scripts to set the users
needed up, and then to download an appropriate chroot and run it.
The chroot will be set up for a particular type of build (soft-float vs
hard-float) and will be the same for all platforms. The advantage of this
is that I can then download a chroot to my ChromeBook and reproduce a build
locally in the same environment to diagnose issues.
The Calxeda nodes in cbuild use this type of infrastructure - the rootfs is
running quantal (and I have no idea how it is configured - it is what Steve
supplied me with). Each node then runs two chroots (precise armel and
precise armhf) which take it in turns to ask the cbuild scheduler whether
there is a job available.
So my first question is does any of the above make sense?
Next steps as I see it are:
1. Paul/Dave - what stage is getting the Pandaboards in the Lava farm
cooled at? One advantage of the above architecture is we could use a stock
Pandaboard kernel & rootfs that has thermal limiting turned on for builds,
so that things don't fall over all the time.
2. Paul - how hard would it be to try and fire up a Calxeda node into
Lava? We can use one of the ones assigned to me. I don't need any fancy
multinode stuff that Michael Hudson-Doyle is working on - each node can be
considered a separate board. I feel guilty that I put the nodes into CBuild
without looking at Lava - but it was easier to do and got me going - I think
correcting that is important
3. Generally - What's the state of the Arndale boards in Lava? Fathi has
got GCC building reliably, although I believe he is now facing networking
issues.
4. Paul - If Arndale boards are available in Lava - how much effort would
it be to make them available to CBuild?
One issue the above doesn't solve as far as I see it is being able to say to
Lava that we can do a build on any ARMv7-A CBuild compatible board. I don't
generally care whether the build happens on an Arndale, Panda, or Calxeda
board - I want the result in the shortest possible time.
A final note on benchmarking. I think the above scheme could work for
benchmarking targets all we need to do is build a kernel/rootfs that is
setup to provide a system that produces repeatable benchmarking results.
Comments welcome from all.
Thanks,
Matt
--
Matthew Gretton-Dann
Toolchain Working Group, Linaro
== Progress ==
* Disable-peeling: waiting for reference job results
* Libsanitizer:
- identified the reason for different behaviour on board and on simulator
- proposed a workaround on gcc-patches (qemu-user has a few
limitations, so it's desirable to skip some libsanitizer tests)
- in the mean time libsanitizer developers received similar concerns
from android, and are considering a runtime environment variable to
control use of stderr
* Neon intrinsics:
- resumed investigation on vuzp crc
* Internal support
== Next ==
* Peeling: analyze results when available
* Revert-coalesce: same
* Libsanitizer: reach agreement with upstream
* Neon intrinsics: continue with vuzp crc
== Progress ==
* Further work on glibc memcpy IFUNC patch based on review.
* Ported libdwarf to aarch64 and submitted upstream.
* Disabled gold build in binutils cbuild job and created a gold job.
* Investigated binutils testsuite failure on precise.
* On leave Friday.
== Issues ==
* None.
== Plan ==
* Submit a patch for binutils testsuite failure on precise.
* Complete work on glibc memcpy iFUNC patch.
* Follow up binutils IFUNC patch.
* AArch64 IFUNC next...
--
Will Newton
Toolchain Working Group, Linaro
== Progress ==
* Completed investigation of GDB dwarf test suite failures on ARM.
Almost all failures will be fixed with small updates to test cases
assembly language files.
* Checked-out GDB 7.6 branch and did comparison of dwarf test case failures
on arm. Some test cases have been updated already and dont need a patch.
* Started filtering GDB test suite results on ARM for possible failures due
to assembly language incompatibility.
* Tried some experimentation with cbuild, and ec2 instances only to find
out they are not connected with lab.
* Completed Ireland Visa process. Spent Friday and most part of Thursday
for the documents attestation, fee submission and postage stuff.
*** Still No blue-print available to log work in JIRA.
== Plan ==
* Filter all arm assembly language compatibility updates required to gdb
test suite and create a patch.
* Get an intro to gdb patch submission process for a possible fix to gdb
test suite for arm assembly compatibility.
* Start looking into gdb.mi test suite failures on arm.
* Fill up the arm native vs arm remote comparison sheet.
* Figure out a way to use hackbox for gdb testing on arm.
== Progress ==
Very short week, was doing some AMD internal tasks and attend local meetings.
* gprof support work for Aarch64.
Not much progress this week.
Working on GCC side to support gprof for Aarch64.
== Plan ==
* Continue gprof support work for Aarch64