Linaro QEMU 2011.09 released
The Linaro Toolchain Working Group is pleased to announce the release of Linaro QEMU 2011.09. Linaro QEMU 2011.09 is the latest monthly release of qemu-linaro. Based off upstream (trunk) QEMU, it includes a number of ARM-focused bug fixes and enhancements. New in this month's release: - linux-user mode now supports the 64 bit cmpxchg kernel helpers (only needed for applications compiled for ARMv6 or lower) - PL111 display controller now supported; this fixes a problem where BGR was interpreted as RGB on recent versatilepb kernels Plus a few other minor bug fixes and the usual round of upstream fixes and improvements. Known issues: - The beagle and beaglexm models still do not support USB networking; we intend to fix this for the 2011.10 release - There may be some problems with running multithreaded programs in linux-user mode (LP:823902) The source tarball is available at: https://launchpad.net/qemu-linaro/+milestone/2011.09 Binary builds of this qemu-linaro release are being prepared and will be available shortly for users of Ubuntu. Packages will be in the linaro-maintainers tools ppa: https://launchpad.net/~linaro-maintainers/+archive/tools/ More information on Linaro QEMU is available at: https://launchpad.net/qemu-linaro ___ linaro-toolchain mailing list linaro-toolchain@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-toolchain
[ACTIVITY] September 11-15
Hi, * testing widen-shifts patch on ARM * SLP improvements: - submitted a patch to allow not simple ivs in SLP - committed a patch to allow read-after-read dependencies in SLP Ira ___ linaro-toolchain mailing list linaro-toolchain@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-toolchain
[ACTIVITY] weekly status
Hi, * put the sources of the libunwind android port, the patches for debuggerd and the Android test app online * documented things at: https://wiki.linaro.org/WorkingGroups/ToolChain/Outputs/LibunwindDebuggerd * noticed differences between the old (debuggerd) and the new (debuggerd+libunwind) backtraces * I'm still not sure what's going on (maybe they are adding offsets or something) * however, the backtrace that libunwind does looks sane to me Note: I'll be on vacation till October 7th. Regards Ken ___ linaro-toolchain mailing list linaro-toolchain@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-toolchain
eglibc and fun with config.sub
As mentioned on the standup call this morning, I've been trying to get my head around the way different parts of the toolchain using the config scripts and the triplets. I'd appreciate some thoughts on what the right thing to do is, especially since there was some unease at some of the ideas. My aim here is to add an armv7 specific set of routines to the eglibc ports and get this picked up only when eglibc is built for armv7; but it's getting a bit tricky. eglibc shares with gcc and binutils a script called config.sub (that lives in a separate repository) which munges the triplet into a $basic_machine and validates it for a set of known triplets. So for example it has the (shell) pattern: arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] to recognise triplets of the form arm- armbe- armle- armel- armbe- armv5- armv5l- or armv5b- It also knows more obscure things such as if you're configuring for a netwinder it's an armv4l- system running linux - but frankly most of that type of thing are a decade or two out of date. Note it doesn't yet know about armv6 or armv7. eglibc builds a search path that at the moment includes a path under the 'ports' directory of the form arm/eabi/$machine where $machine is typically the first part of your triplet; however at the moment eglibc doesn't have any ARM version specific subdirectories. If I just added an ports/sysdeps/arm/eabi/armv7 directory it wouldn't use it because it searches in arm/eabi/arm if configured with the triplet arm-linux-gnueabi or --with-cpu sets $submachine (NOT $machine) - so if you pass --with-cpu=armv7 it ends up searching arm/eabi/arm/armv7 if you used the triplet arm-linux-gnueabi. If you had a triplet like armel then I think it would be searching arm/eabi/armel/armv7 So my original patch ( http://old.nabble.com/-ARM--architecture-specific-subdirectories,-optimised-memchr-and-some-questions-td32070289.html ) did the following: * Modified the paths searched to be arm/eabi (rather than arm/eabi/$machine) * If $submachine hadn't been set by --with-cpu then autodetect it from gcc's #defines which meant that it ignored the start of the triplet and let you specify --with-cpu=armv7 After some discussion with Joseph Myers, he's convinced me that isn't what eglibc is expecting (see later in the thread linked above); what it should be doing is that $machine should be armv7 and $submachine should be used if we wanted say a cortex-a8 or cortext-a9 specific version. My current patch: * adds armv6 and armv7 to config.sub * adds arm/eabi/armv7 and arm/eabi/armv6t2 and one assembler routine in there. * If $machine is just 'arm' then it autodetects from gcc's #defines * else if $machine is armv then that's still $machine So if you use: a triplet like arm-linux-gnueabi it looks at gcc and if that's configured for armv7-a it searches arm/eabi/armv7 a triplet like armv7-linux-gnueabi then it searches arm/eabi/armv7 irrespective of what gcc was configured for a triplet like armv7-linux-gnueabi and --with-cpu=cortex-a9 then it searches arm/eabi/armv7/cortex-a9 then arm/eabi/armv7 As far as I can tell gcc ignores the first part of the triplet, other than noting it's arm and spotting if it ends with b for big endian; (i.e. configuring gcc with armv4-linux-gnueabi and armv7-linux-gnueabi ends up with the same compiler). binutils also mostly ignores the 1st part of the triple - although is a bit of a mess with different parts parsing it differently (it seems to spot arm9e for some odd reason); as far as I can tell gold will accept armbe* for big endian where as ld takes arm*b ! If you're still reading, then the questions are: 1) Does the approach I've suggested make sense - in particular that the machine directory chosen is based either on the triplet or where the triplet doesn't specify the configuration of gcc; that's my interpretation of what Joseph is suggesting. 2) Doing (1) would seem to suggest I should give config.sub armv6t2 and some of the other complex names. Dave ___ linaro-toolchain mailing list linaro-toolchain@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-toolchain
Re: [Linaro-toolchain-benchmarks] Using u-boot for perf measurements.
(bouncing to linaro-dev as it's generally interesting) On Fri, Sep 16, 2011 at 8:17 AM, Ramana Radhakrishnan wrote: > Hi, > > I've been looking at some of the perf regressions we've been seeing > these days in an attempt to understand what's going on in these cases. > While I can use perf and get more statistics and do other things to > figure out why there are perf regressions between 2 binaries along > with perf record and report, I wonder if it is possible to use u-boot > to accurately measure what's going on. I would like to try and get the > values of the performance counters between 2 program points . > > I am aware that there are patches that are floating around that allow > users to set and reset the PMU counters by allowing user level access > to it in the kernel : while that maybe useful to some I'm not sure if > I want to take a chance with some other process getting scheduled that > ends up getting scheduled. Even if there are parts of the kernel that > save and restore PMU counters associated per process with across > context switches . I'm looking for as accurate measurements as > possible in this case and I wonder if u-boot is the best bet for this > ( in the absence of any dedicated hardware debug / trace unit) given > not all of us have one. > > > At the minimum to do this I believe we require u-boot or some start-up code > to: > > * Turn on i-cache and d-cache. ( The current u-boot for panda that I > get from the linaro-uboot git repo > git://git.linaro.org/boot/u-boot-linaro-stable.git says "Warning > Caches turned off" when starting up ). Googling around I find a few > patches floating around that turn on the d-cache in August from Aneesh > at TI . We should consider getting these in at some point. > > * Looking in $(UBOOT_TOP)/examples/api I see that there are simple > printf routines and simple stand-alone applications that exist which > could be used for this purpose. The one problem with this is the fact > that u-boot appears to require use of -ffixed-r8 for it's purposes > which *might* mean we need these if we were to use API calls into > standard u-boot functions . I wonder if R8 is used in the current ARM version? There's no reason we can't cherry pick parts such as the serial I/O out into a library and make the app completely self contained. Skip all of the initialisation stuff and assume the boot loader has done it for you. > * Turn on / off speculative prefetching - I believe the kernel does > this already for a few boards, but could this be done in u-boot just > before it launches a test application ? > > * Turn on the VFP and Neon units. > > * Turn on unaligned access so that unaligned accesses are allowed in > the test applications. GCC will now move towards generating unaligned > accesses on versions of the architecture that support it, the patches > upstream have now been approved. > > * Memory map / linker scripts to make sure we are putting things in > the right places (sigh, has to be per-board). But everything goes in RAM so you have one generic linker script and a per board MEMORY definition. Similar to: http://bazaar.launchpad.net/~stm32f-dev/stm32f-dev/stm32f-startup/view/head:/src/stm32f103xb.ld ...but even lighter. > We then write a set of library functions that could then look at what > performance counters are of interest to us and track them by resetting > them to 0 and making sure they haven't overflown. > > Has anyone else in the group played with u-boot before or has any > thoughts in this direction ? I am not suggesting that we do this work > right now but it sounds like an interesting thought of where we can > get to with this. My worry is that we miss turning on a feature and get results that aren't representative. That should be easy enough to check by baselineing against a Linux hosted run. We can use NFS or kermit to load the programs. u-boot has a network console which is nice when you don't have serial. This combined with an expect script (or LAVA? Paul?) should automate the whole process. -- Michael ___ linaro-toolchain mailing list linaro-toolchain@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-toolchain
Linaro GCC 4.6 and 4.5 2011.09 released
The Linaro Toolchain Working Group is pleased to announce the 2011.09 release of both Linaro GCC 4.6 and Linaro GCC 4.5. Linaro GCC 4.6 2011.09-1 is the seventh release in the 4.6 series. Based off the latest GCC 4.6.1+svn178681, it contains a range of vectoriser and core performance improvements as well as fixing a number of bugs. Interesting changes include: * Updates to 4.6.1+svn178681 * Improves performance by making better use of conditional compares * Improves performance by properly scheduling widening multiplies * Improves size and speed by improving constant generation in Thumb-2 * Implements support for widening multiples in toe core * Improves vectorised code by reducing the over-promotion of intermediates * Improves performance by reducing redundant moves between VFP and ARM * Finishes off supporting the Android team in integrating Linaro GCC Fixes: * LP: #823548 Can't use -flto with skia * LP: #823711 libvirt version 0.9.2-4ubuntu8 failed to build on armel * LP: #827990 internal compiler error: in decode_addr_const, at varasm.c:2632 * LP: #836401 ICE on a | (b << negative-constant) * LP: #838994 ICE building perl w/ -marm * LP: #843775 ICE optimizing widening multiply-and-accumulate Linaro GCC 4.5 2011.09 is the fourteenth release in the 4.5 series. Based off the latest GCC 4.5.3+svn178560, this is a maintenance focused release. Interesting changes in 4.5 include: * Updates to 4.5.3+svn178560 Fixes: * LP: #823711 libvirt version 0.9.2-4ubuntu8 failed to build on armel The source tarballs are available from: https://launchpad.net/gcc-linaro/+milestone/4.6-2011.09 https://launchpad.net/gcc-linaro/+milestone/4.5-2011.09 Downloads are available from the Linaro GCC page on Launchpad: https://launchpad.net/gcc-linaro More information on the features and issues are available from the release page: https://launchpad.net/gcc-linaro/4.6/4.6-2011.09 https://launchpad.net/gcc-linaro/4.5/4.5-2011.09 Mailing list: http://lists.linaro.org/mailman/listinfo/linaro-toolchain Bugs: https://bugs.launchpad.net/gcc-linaro/ Questions? https://ask.linaro.org/ Interested in commercial support? inquire at supp...@linaro.org -- Michael ___ linaro-toolchain mailing list linaro-toolchain@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-toolchain