Dear all,
we have an ARM Cortex-A8 board where we are running our application. I am in charge of maintaining the Linux on it and the toolchain/SDK setup. So far we've been running Poky/OpenEmbedded and using the cross compiler that came about during the compilation.
For easier maintenance, we are now switching to Linaro. The image is set up and I can compile, however I notice a peculiar fact: the binary distribution of Linaro's gcc (https://launchpad.net/linaro-toolchain-binaries/trunk/2012.10/+download/gcc…) has a significantly larger compilation speed than a version of arm-linux-gnueabihf-gcc that is shipping with Ubuntu. In our particular case, using Ubuntu's version it takes less than 6 minutes to compile our software, but 10 minutes when we use Linaro's version. The makefiles and source are exactly the same, only the compiler is different. I also tried an older version (4.6) of Linaro's gcc to match the Ubuntu one (tested the 12.04 shipped version), with no significant difference.
Compiler flags for the system are -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard
Running with -ftime-report, most of the additional time seems to be spent in the parser. Adding -fno-graphite-identity -fno-graphite for Linaro's gcc did not make a difference.
I believe I tried to use crosstool-ng to make my own version, but I don't remember the results as this was over 7 weeks ago. I also did not have a chance to compare performance of the binaries. I do notice a difference in compilation sizes (4.8 MB for Ubuntu's 4.6 version, 4.1 MB for Linaro's 4.7 versions - can't test anything other right now).
I would like to use Linaro's gcc as the crosscompiler for our project, as it is an easy setup. Repackaging Ubuntu's version is an option, though (some of the team do not use Ubuntu, plus I'd like everybody to use EXACTLY the same version of the crosscompiler). So there is no real "problem" for me, per se, but I am extremely curious as to what is going on here. It seems that Linaro's gcc has additional patches or maybe just different default settings that cause additional time to be spent in the parser. It would be interesting to know what exactly this is and whether/how it can be disabled in those cases where time of compilation is more important than e.g. performance gain.
TIA for replying.
Best
Frank
Dear All,
We have ARM cross compiler, and building our code. we got below error.
we have GCC Linaro 4.6.4.
arm-linux-gnueabi/bin/ld: DIV usage mismatch between
/home/Release/libasm.a(Blt32_Neon.o) and /home/Release/liblayer.so
arm-linux-gnueabi/bin/ld: failed to merge target specific data of file
/home/Release/libasm.a(Blt32_Neon.o)
is it related to below link ?
http://sourceware.org/ml/binutils/2012-03/msg00211.html
thanks
Hi,
here's some patches for gcc-linaro to make it work with
--host=arm-linux-androideabi
They're the quick and dirty thing to do and look like they could have
been written by Microsoft, needed something working in time for
Connect ;)
gcc-4.7-android-workarounds.patch: Workarounds for things that go
wrong, but where the true cause is yet to be determined (e.g. why
would configure think we have fread_unlocked and friends when we
don't?)
gcc-4.7-libitm-android.patch: Workaround for Bionic not knowing Elf32_auxv_t
gcc-4.7-no-unneeded-multilib.patch: Get the multilib config in sync
with regular Linux
gcc-4.7-stlport.patch: Use stlport instead of libstdc++ (yes, this
sucks - but it's what Android decided to do). Still needs to link
libstdc++ because Bionic contains a libstdc++.so (but it's more like a
libsupc++ - no STL there, but needed for stlport to work).
ttyl
bero
== Progress ==
* HOT/COLD partitioning for PGO
* Initial look at results
* Patch Tracking & Backporting
* Testing Doko's configury changes for arm-none-linux-gnueabihf support
* Connect Prep
* LRA Investigations
* Sign/zero extension II
== Next Week ==
* Linaro Connect
== Future ==
* Attend Connect
* HOT/COLD partitioning for PGO:
* Get two current patches accepted upstream
* Post question upstream about register allocation 'mistakes' I am seeing
--
Matthew Gretton-Dann
Linaro Toolchain Working Group
matthew.gretton-dann(a)linaro.org
Summary:
* Validate and release Linaro binary toolchain 2012.10
* Test
Details:
1. Release Linaro binary toolchain 2012.10
* Fix windows installer issue due to version format change.
* Validate and release Linaro binary toolchain 2012.10.
2. Identify the root cause of PR 54902 (lp:1065559), and Richard
Biener fixed it.
3. Enable SPEC2006 test. Testing is ongoing.
Planed Leaves:
* Nov. 5-7: Off site teambuilding event.
* Nov. 9, 12-13: Annual leaves
Plans:
* Performance test for shrink-wrap.
Best regards!
-Zhenqiang
== track-kvm-abi-changes ==
* updated qemu patches to match Christoffer's v13 tree, committed
all fixes suggested in previous round of code review, rebased
and sent RFC v3 of the QEMU KVM/ARM support patches
== other ==
* rebased qemu-linaro on master; found and fixed a bug which
meant that beagle models crashed when the kernel tried to touch
the USB-OHCI device
* submitted some minor QEMU cleanup patches (last lot of stuff
before softfreeze next week, I expect)
* usual upstream review/etc
* started to look at virtio-mmio patches
* prep for Linaro Connect next week
KVM blueprint progress tracker:
http://ex.seabright.co.nz/helpers/backlog?group_by=topic&colour_by=state&pr…
-- PMM
== Progress ==
* Aarch64 GDB support testing:
- Ran the GDB testsuite via gdbserver on x86
- Made a board file to run against the model
- Tried debugging a simple hello world via gdbserver:
It fails while loading the image, because of a mismatch between
kernel and GDB ptrace interface.
* Aarch64 GDB backport investigation:
- Backported to the Linaro GDB 7.5 release.
- Discussed with ARM people the ptrace issue.
== Next ==
* On vacation.
The Linaro Toolchain Working Group is pleased to announce the 2012.10
release of the Linaro Toolchain Binaries, a pre-built version of
Linaro GCC and Linaro GDB that runs on generic Linux or Windows and
targets the glibc Linaro Evaluation Build.
Uses include:
* Cross compiling ARM applications from your laptop
* Remote debugging
* Build the Linux kernel for your board
What's included:
* Linaro GCC 4.7 2012.10
* Linaro GDB 7.5 2012.09
* 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.
The Linux version is supported on Ubuntu 10.04.3 and 12.04, Debian
6.0.2, Fedora 16, openSUSE 12.1, Red Hat Enterprise Linux Workstation
5.7 and later, and should run on any Linux Standard Base 3.0
compatible distribution. Please see the README about running on
x86_64 hosts.
The Windows version is supported on Windows XP Pro SP3, Windows Vista
Business SP2, and Windows 7 Pro SP1.
The binaries and build scripts are available from:
https://launchpad.net/linaro-toolchain-binaries/trunk/2012.10
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 All,
I wanted to see the difference in objdump of an application where I can
make the difference between the VFPV3 and VFPV4 support. I tried enabling
the flag -mfpu=vfpv3 and -mfpu=vfpv4 for ARM Cortex A15 toolchain in my
test code but cannot see the difference in two objdumps.
According to my survey, the fused multiply and accumulate is the only
instruction that can create the difference in two. Can any one provide the
sample test code for the same? Precisely, I wish to see the difference in
performance for vfpv3 and vfpv4.
Looking forward to your reply.
Thanks and Regards,
Jubi