[short week, two days]
Progress:
* qemu maintenance
** arm-devs pull request (and associated code review, etc)
* VIRT-4 [Guest migration support for KVM]
** VIRT-49: implement cp15 sync with kernel
*** some forward motion, but partway through realised some work
I thought had been committed last year hadn't been, so:
** VIRT-73
*** new work item, covering updating the migration state for the
CPU itself to use VMState structures, by updating, testing
and tweaking some patches from Juan Quintela from last year
*** have done the 'update' part; tests and tweaks still todo
-- PMM
Summary:
* Investigate conditional compare.
Details:
1. Expand conditional compare as TRUTH_AND_EXPR/TRUTH_IOR_EXPR for tests.
2. Test tree-level changes for conditional compare.
* Fix/workaround most ICE issues in regression tests.
* Still some fails which expected VRP can optimize the cases.
3. Try to build Coremark and find that conditional compare does block
optimizations, which leads to worse performance.
Plan:
* Investigate VRP and other optimizations to handle conditional compare.
* Raise the propose for upstream discussion.
Planned leaves:
* April 4-8: Chinese Ching Ming Festival and annual leaves.
* April 12: Internal team event.
* April 16-17: Internal training.
Best Regards!
-Zhenqiang
== Progress ==
Started investigating gdb test cases that are failing on
arm-remote gdbserver configuration.
Completed investigation on all timeout gdb test cases failures in
arm-remote gdbserver configuration.
Setup a ubuntu test machine for gdb testing on x86_64 in
remote gdbserver configuration.
Initiated visa process for Ireland and sent requests for required documents
to Arwen.
*** No blue-print available to log work in JIRA.
== Plan ==
Complete investigation of all failure gdb test cases on arm-remote
gdbserver configuration.
Run gdb test suite in x86_64 remote gdbserver configuration and compare
with all other configurations already tested including arm remote to figure
out any similar failures while running test suite remotely on two different
machines.
Book travel to Ireland and complete visa process.
Summary:
* Investigate how to expand conditional compare.
Details:
1. Try to expand conditional compare to RTL
* It seams hard to expand conditional compare to just one cond_exec
insn during expand, since it has to know the cc (GT, LT, etc) set from
previous instruction and tell the later instruction which cc (GT, LT,
etc) it set.
* Try to add new RTL key-word and insn pattern.
2. Follow up Linaro toolchain binaries bug in Yocto build: 1159392,
1161348 and 1161351.
Plan:
* Generate asm for conditional compare.
Planned leaves:
* April 4-8: Chinese Ching Ming Festival and annual leaves.
* April 12: Internal team event.
* April 16-17: Internal training.
Best Regards!
-Zhenqiang
== Progress ==
- Very short work week. I was on leave last Wednesday and Thursday (27th
and 28th).
- Posted patch for gc-section tests for TLS and got related relocs.
- Discussing with Marcus on patch I wrote for gc section tests on PLT
related relocs.
== Plan ==
- Post patch for gc section tests for PLT relocs.
- Complete gc section tests for other generic cases.
- Understand and evaluate gprof support work for Aarch64
== Progress ==
working on http://cards.linaro.org/browse/TCWG-14
- All but 2 test cases are passing and extension elimination for the
simple cases are eliminated
- one of the test failure was due to bug with value range propagation
pass. Have to investigate this further.
- In one instance even though extensions are removed, 1 more instruction
is generated (for crc) - Need to investigate it
- Got the chromebook and Set up Ubuntu; boot strapping gcc now
== Plan ==
- Start with the benchmarking
- investigate the performance and VRP issue
- Also start with http://cards.linaro.org/browse/TCWG-13 in parallel
== Issues ==
* None
== Progress ==
* Libunwind AArch64 support:
- Most of the testsuite is now fine
- but some fixes still needed before upstream submission.
== Plan ==
* Libunwind AArch64 support:
- Fix and submit upstream.
== Progress ==
* Disable-peeling:
- benchmarked locally on snowball. Observed a few regressions in spec2k.
To be analyzed and confirmed with the results from cbuild.
- patched cbuild to work-around a bzr bug which prevented these jobs
from being spawned.
* Libsanitizer: sent patch upstream.
Discussion about interactions with qemu.
* Revert-coalesce: spawned thought-to-be reference jobs for benchmarking.
* Neon intrinsics codegen:
- First analysis of sample codecs seems to indicate that gcc
generates sequences of interdependent instructions where rvct manages
to insert some code in between.
- To be confirmed by dedicated benchmarking, probably in bare-machine mode.
* Neon intrinsics testsuite:
- Added support for polynomial variants (*_p8, *_p16)
- Identified wrong code generated by gcc-linaro-4.7; did not check with trunk.
- Transforming into a dejagnu forms will probably be a lot of work :-(
* Internal activities
== Next ==
* Disable-peeling:
- analyze bench results from cbuild when available
- compare with the results from my snowball
* Libsanitizer:
- resume investigation about isatty problem when ran under qemu.
* Turnoff 64bits ops In Neon:
- backport in linaro-4.8 once the process has been clarified.
* Revert-coalesce:
- check bench results
* Neon intrinsics codegen:
- perform dedicated benchmarking
== Progress ==
* Booked flight for LCE.
* Benchmarked and ran tests on new memcpy implementation.
* Attempted but failed to get new memcpy tested on big endian (still todo).
* Committed new memcpy implementation to cortex strings.
* Passed new memcpy to Android team for bionic.
* Submitted newlib patch for new memcpy.
* Committed binutils ld-elfvsb testsuite fixes, native testsuite now green!
* Further investigation of IFUNC in glibc.
== Issues ==
* Pandaboard ES still a bit flakey, Chromebook hopefully on its way to
replace it.
== Plan ==
* Iron out issues with native binutils make check in cbuild/LAVA.
* Get newlib memcpy patch committed.
* Investigate testing memcpy on big endian (qemu user, models?).
* IFUNC...
--
Will Newton
Toolchain Working Group, Linaro
Progress:
* qemu maintenance
** https://ci.linaro.org/jenkins/job/qemu-ltp/ now shows graphs
of LTP test results for linux-user mode
** rebased qemu-linaro and got it working again (omap3 display
code needed rework after upstream changes)
** investigated why Christoffer Dall's kernels weren't booting:
turns out to be that vexpress now requires CONFIG_REGULATOR
but doesn't force it to be set or set it in the vexpress_defconfig
** rebased/resent/pinged various in-flight patches
* VIRT-4 [Guest migration support for KVM]
** VIRT-49: implement cp15 sync with kernel
*** located my work on this from last year, refreshed my
memory on how far I'd got and what I was planning to do
-- PMM
== Progress ==
* Re-installed the panda buildbot, using USB drive as bot dir
* Reviewing lots of ARM patches (more than usual)
* Trying Arndale again, some errors, some passes, cooler might be
responsible
- Got one internal error, one build error and one pass with Ubuntu kernel
+ patch
- Trying Suse image:
- It has a broken serial driver (makes things much harder)
- sshd does not start by default (in conjunction with serial bug, it's a
killer)
- Now running on a precarious mode, hopefully enough for our needs
* sqlite3 error due to VMUL.f64 while on x86_64 "long double" is f128
- sqlite3 is the best example on what NEVER to do with floating point
values >:|
- Sent patch, working around TILE-Gx issues
== Issues ==
* Still a bit ill, productivity reduced
* Not having a wired network on my desk wastes a LOT of my time
== Plan ==
* Push the sqlite3 patch though
* Continue fixing the 4 remaining broken tests
* Continue with Arndale investigation with Christophe and Zhenqiang
Hi folks,
I'm trying again the bootstrap of GCC on Arndale and it goes pretty well
until it has to install libgcc that it just compiled.
When I build first time, I get an error while installing libgcc:
make[4]: Entering directory
`/home/linaro/devel/gcc/build/objs/armv7l-unknown-linux-gnueabihf/libgcc'
/bin/bash /home/linaro/devel/gcc/src/libgcc/../mkinstalldirs ../.././gcc
(...)
/bin/bash /home/linaro/devel/gcc/src/libgcc/../mkinstalldirs ../.././gcc;
/usr/bin/install -c -m 644 ./libgcc_s.so.1 ../.././gcc/libgcc_s.so.1; rm -f
../.././gcc/libgcc_s.so; /usr/bin/install -c -m 644 ./libgcc_s.so
../.././gcc/libgcc_s.so
Live child 0x01dec548 (install-shared) PID 4405
Reaping losing child 0x01dec548 PID 4405
make[4]: *** [install-shared] Error 1
Though, if I run that command by hand, it works...
I then re-ran make and the first point there is an error is on gmp:
This program built for arm-unknown-linux-gnueabihf
Reading makefiles...
Reading makefile `Makefile'...
Reaping losing child 0x01866320 PID 4784
make[3]: *** [config.h] Error 1
Removing child 0x01866320 PID 4784 from chain.
make[3]: Leaving directory `/home/linaro/devel/gcc/build/objs/gmp'
Need a job token; we have children
Duplicate the job FD
Live child 0x00ae17f8 (all-stage1-libiberty) PID 4755
Live child 0x00be3508 (all-stage1-gmp) PID 4736
Reaping losing child 0x00be3508 PID 4736
make[2]: *** [all-stage1-gmp] Error 2
Removing child 0x00be3508 PID 4736 from chain.
Released token for child 0x00be3508 (all-stage1-gmp).
make[2]: *** Waiting for unfinished jobs....
Live child 0x00ae17f8 (all-stage1-libiberty) PID 4755
I can't notice anything wrong on gmp (all objects are there), other than a
number of symlinks to a missing directory:
gmp-mparam.h -> /home/linaro/devel/gcc/src/gmp/mpn/generic/gmp-mparam.h
the directory "generic" doesn't exist, and lots of files in "mpn" also
point there. Could be a red herring, though.
Any ideas?
cheers,
--renato
PS: this doesn't look like an Arndale specific bug, so we might still be
able to use them for GCC bootstrapping...
Summary:
* Send out shrink-wrap related patches for review.
* Investigate how to add a new tree code.
Details:
1. Fix lp:1157050 and lp:1107659 for Linaro toolchain binaries.
2. Test shrink-wrap dwarf/unwind info and send out the patches for review.
3. Make progress on conditional compare support. With some hard-codes
in gcc, it can gimplify a small case to conditional compare on tree
and no assert until expand.
Plan:
* Investigate how to expand conditional compare GIMPLE to RTL and emit asm.
Planned leaves:
* March 31.
* April 4-8.
Best Regards!
-Zhenqiang
Hi all,
I'd like to run the binutils testsuite in a native configuration
regularly to find any regressions. Do we have any infrastructure for
doing this?
It looks like LAVA would be useful but it looks complex and I am not
sure if we use that already for running toolchain tests (I think there
was a Connect session about that?).
Thanks,
--
Will Newton
Toolchain Working Group, Linaro
== Progress ==
* Disable-peeling:
- benchmarking locally on snowball
- failed to build reference branch on cbuild, for an unknown reason
* Turnoff 64bits ops in Neon:
- committed upstream in 4.9 (now stage 1)
- benches of backport into Linaro-4.7 OK: no significant diff,
except +12.6% on spec2k's crafty)
- Filed merge request.
* Vectorizer cost model:
- benches of backport inot Linaro-4.7 OK (no significant diff, as expected).
- Filed merge request.
* Revert-coalesce:
- benches ran in cbuild, but no *-diff.txt file generated.
* Libsanitizer:
- testsuite results OK. All unsupported tests are normal.
* Neon intrinsics codegen:
- got internal feedback
* GDB reverse debug:
- filed 2 bug reports after internal requests.
* Misc:
- filed several bug reports against cbuild to track the problems I observed.
== Next ==
* Disable-peeling:
- analyze bench results
- understand/'fix what's wrong with cbuild
* Turnoff 64bits ops in Neon:
- backport to Linaro-4.8
* Revert-coalesce:
- manually compute bench differences if unable to have cbuild do it.
* Libsanitizer:
- propose patch upstream.
== Progress ==
Knocked out more GDB remote configuration failures that were failing due to
timeouts.
Had 1:1 with Matt for direction on GDB improvement plan.
Looked around for Ireland visa process and filled out visa application.
== Plan ==
Complete review of remote timeout based test case failures.
Start work on the GDB improvement blueprint in JIRA from this week.
Get remaining documentation for Ireland visa and complete application.
== Progress ==
- Looking at TLS relocs and coming up with test cases for garbage
collecting them.
- Patch for missedout testcases in gc section is up streamed. Thanks to Marcus.
== Plan ==
- Complete gc section test cases for TLS relocs.
- Understand and evaluate gprof support work for Aarch64
Misc
-----
Leave on Wednesday and Thursday (27th and 28th)
== Progress ==
- Worked on VRP based zero/sign extension elimination at tree level
- Some regression test cases are failing; investigating them
== Plan ==
- Analyse the reason for test case failure and fix them
- Extend the code to handle all the possible cases (currently
implemented for subset to get the framework working)
== Issues ==
* None
== Progress ==
* Libunwind AArch64 support:
- basic implementation for building lib and testsuite done
- but even a simple test case doesn't work for the moment
== Plan ==
* Libunwind AArch64 support:
- continue AArch64 specific implementation and informtation gathering
== Progress ==
* EuroLLVM paper review
* Disabled EH tests on ARM for now
* Fixed TSVC: NEON vs. VFP VMUL.f32 (and IEEE 754 correctness)
* Changed FeatureNEONForFP to false on EABI ARM targets unless unsafe-math
* Trying Arndale again, with u-boot patched, not good
* Broken Panda buildbots, trying to fix
== Issues ==
Got ill on Tuesday and only worked partially, if at all, the rest of the
week
Hopefully will be better next week...
== Plan ==
* Fix our panda buildbot, maybe add more
* Final try on Arndale GCC bootstrap before giving up
* Continue fixing test-suite failures (only 5 left)
Progress:
* VIRT-4 [Guest migration support for KVM]
** VIRT-51: vexpress migration:
** wrote and submitted patches for all the devices that need fixes
** tracked down a painful bug where the guest just hung on vmload
to a missing state-save for a timer device, submitted patch
** remaining work for this item is just responding to patch review
-- PMM
Hi folks,
I found an issue while fixing a test using the wrong VMUL.f32, and I'd like
to know what should be our choice on this topic that is slightly
controversial.
Basically, LLVM chooses to lower single-precision FMUL to NEON's VMUL.f32
instead of VFP's version because, on some cores (A8, A5 and Apple's Swift),
the VFP variant is really slow.
This is all cool and dandy, but NEON is not IEEE 754 compliant, so the
result is slightly different. So slightly that only one test, that was
really pushing the boundaries (ie. going below FLT_MIN) did catch it.
There are two ways we can go here:
1. Strict IEEE compatibility and *only* lower NEON's VMUL if unsafe-math is
on. This will make generic single-prec. code slower but you can always turn
unsafe-math on if you want more speed.
2. Continue using NEON for f32 by default and put a note somewhere that
people should turn this option (FeatureNEONForFP) off on A5/A8 if they
*really* care about maximum IEEE compliance.
Apple already said that for Darwin, 2 is still the option of choice. Do we
agree and ignore this issue? Or for GNU/EABI we want strict conformance by
default?
GCC uses fmuls...
cheers,
--renato
Hello,
I am having an issue with using the gcc toolchain for armv8. I am trying to
cross compile a simple program (helloworld.c) as suggested in the link :
https://wiki.linaro.org/HowTo/HelloAarch64.
But when I try executing the binary on the simulated armv8 (using
foundation model), I am getting error in GLIBC, specifically
"/lib/libc.so.6: version `GLIBC_2.16' not found" . Could you please help me
as to what could be wrong here?
Thanks,
Pavan