== Progress ==
* Validation
- more work on use of containers
* GCC
- reported a few failures upstream
- added a few missing poly64_t intrinsics (arm, aarch64)
* misc (conf-calls, meetings, emails, ....)
== Next ==
* ABE & Jenkins jobs patches reviews and bug fixes
== This Week ==
* gimple-fe (4/10)
a) Add support for abs_expr
b) Add support for fma_expr
* TCWG-1010 (4/10)
- Continue working on prototype, dealing with unexpected ICE's :(
* Misc (2/10)
- Reading up on gcc's inliner
- Meetings
== Next Week ==
- TCWG-1010, TCWG-1005, gimple-fe
- Benchmarking LTO using spec2xxx-utils on tx1/tk1
=== This Week ===
LLDB ARM/AArch64 hardware breakpoints [TCWG-717] [9/10]
-- Submitted AArch64 hardware breakpoint patch for review.
-- Updates after upstream comments.
-- Added Arm hardware breakpoint support code.
-- Testing and debugging of Arm code on android arm device.
Miscellaneous Activities [1/10]
-- Meetings, Emails etc.
=== Next Week ===
LLDB ARM/AArch64 hardware breakpoints [TCWG-717]
-- Write breakpoint command based test-cases.
-- Write RSP packets based test-cases.
-- Submit patch for review after edits and upgrades.
GDB Kernel Awareness
-- Background study and understand existing patches
== Progress ==
[TCWG-617] Upstreamed a patch to make copy relocations use synthetic
sections. This allows us to remove the output section relative dynamic
relocation which is important for range extension Thunks
Did some design work for range extension Thunks.
Did some refactoring to merge PLT and IFunc PLT at maintainers request
[BUD17]
Researched my forthcoming Connect presentation and wrote about 3/5 of the slides
== Plan ==
Finish Connect presentation early next week as I'll be on holiday the
week before Connect.
Start implementing range extension Thunks.
== Progress ==
* [ARM GlobalISel] Add support for fp arguments [TCWG-1029] [5/10]
- Committed support for single precision hard float and soft-fp ABIs
- Work in progress on supporting double precision
* Misc [5/10]
- Meetings, mailing lists, code reviews
- Reverted / fixed a few patches that broke the buildbots
- Tested and uploaded binaries for release candidate 2 on AArch64
== Plan ==
* More GlobalISel
Hi All,
I am working on log10/qsort benchmarks on ARM64 (ARMv8) processor,
I want to check if we have experience with these benchmarks.
Actually i am looking for a compiler version which gives best results with
these benchmarks and specific compiler optimization (in my case is see O3
gives best numbers) ?
I have tried GCC-4.9 and GCC-6.2 with log10 benchmark and my observations
are:
1) With gcc 4.9 - 140 us
2) With GCC 6.2 - 150 us
My compilation flags are "-O3 -ftree-vectorize -funroll-all-loops --param
max-inline-insns-auto=550 --param case-values-threshold=30
-falign-functions=32 -ftracer"
So it seems like gcc-6.2 is better, am i missing something, should i use
some better compiler flags?
Thanks
-Bharat
~ Progress ~
* AArch64 OpenOCD. [6/10]
Solder and desolder the JTAG joint on HiKey. Tried different JTAG
options, but still can't get OpenOCD working.
* Patches review. [3/10]
** ILP32 GDB. Help cavium to reduce fails from 500 to 70.
GDB patch is OK, but there are still some regressions on ilp32
vs. lp64 on aarch64. Steve is still investigating on them.
** SVE GDB. Remove MAX_REGISTER_SIZE. Look people tend to agree
the way removing MAX_REGISTER_SIZE. Looking forward to Alan's
patches :)
** Kernel awareness debugging. Reviewed the cover letter of IBM's
patches. Want to share the common kernel debugging part between
IBM and Linaro.
* Schengen visa. [1/10] Fill in more in application form. Document
preparation.
~ Plan ~
* Kernel awareness debugging. Continue reviewing IBM's patches, and
figure out how to share the code.
* Go to London for visa application on Friday.
--
Yao Qi
== Progress ==
o Linaro GCC/Validation (7/10)
* GCC 4.9 2017.01:
- prepared final release
* GCC 5.4 2017.01:
- sources and binaries ready to publish
* GCC 6.3 2017.02:
- Cherry-picked bug fix into release branch
- ready for RC2
* Lot of release notes iterations and discussions
* Backports reviews
* Tree reassociation: on-going
o Misc (3/10)
* Various meetings and discussions.
== Plan ==
o Releases...
o Tree reassociation
=== This Week ===
LLDB ARM/AArch64 hardware breakpoints [TCWG-717] [9/10]
-- Wrote multi-threaded implementation of hardware breakpoints.
-- Added thread specific handlers to create hardware breakpoints.
-- Basic multi-threaded test application works after some fixes and debugging.
-- Committed fix for LLDB AArch64 android gcc build failure
Miscellaneous Activities [1/10]
-- Meetings, Emails etc.
=== Next Week ===
LLDB ARM/AArch64 hardware breakpoints [TCWG-717]
-- Write LLDB testsuite test cases for hardware breakpoints
-- Code clean-up and first version patch submission
-- Start work on Arm register context changes for hardware breakpoints.
== This Week ==
* TCWG-1006 (2/10)
- Created prototype patch for propagating returns_nonnull along the
same lines as malloc.
* TCWG-1010 (2/10)
- Continuing to work on prototype for bitwise dce
* ICE with __builtin_abs with -fgimple (2/10)
- Posted patch upstream
* Sick leave (2/10)
* Misc (2/10)
- Setting up docker on tcwg-ex40-01
- Meetings
== Next Week ==
- TCWG-1010, TCWG-548
The Linaro Binary Toolchain
============================
The Linaro GCC 6.3-2017.02-rc1 Release-Candidate is now available.
The GCC 6 Release series has significant changes from the GCC 5
release series. For an explanation of the changes please see the
following website:
https://gcc.gnu.org/gcc-6/changes.html
For help in porting to GCC 6 please see the following explanation:
https://gcc.gnu.org/gcc-6/porting_to.html
Download release-candidate packages from:
http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.3-2017.02-rc1/http://snapshots.linaro.org/components/toolchain/binaries/6.3-2017.02-rc1/
Previous snapshots and release-candidates are at:
http://snapshots.linaro.org/components/toolchain/binaries/
Previous releases are at:
http://releases.linaro.org/components/toolchain/binaries/
Host Requirements
==================
Linaro officially supports the current and previous Ubuntu LTS
releases (as of the time of this release). This does not mean that
the toolchain will not work on other/older Linux distributions. See
the following for the life-time of Ubuntu LTS releases.
https://wiki.ubuntu.com/Releases
The host system upon which the cross-compiler will run requires a
minimum of glibc 2.14, because of API changes to glibc's memcpy API.
https://bugs.linaro.org/show_bug.cgi?id=1869
Package Versions
=================
Linaro GCC 6.3-2017.02-rc1
http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.3-2017.02-rc1/
Linaro glibc 2.23 (linaro/2.23/master)
https://lists.gnu.org/archive/html/info-gnu/2016-02/msg00009.html
Linaro newlib 2.4-2016.03 (linaro_2.4-branch)
https://sourceware.org/ml/newlib/2016/msg00370.html
Linaro binutils 2.27 (linaro_binutils-2_27-branch)
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob_plain;f=bin…
Linaro GDB 7.12 (gdb-7.12-branch)
https://lists.gnu.org/archive/html/info-gnu/2016-10/msg00007.html
Linaro toolchain package git branches are hosted at:
http://git.linaro.org/?a=project_list&s=toolchain%2F&btnS=Search
NEWS for GCC 6 (as of Linaro GCC 6.3-2017.02-rc1)
==================================================
* The mingw toolchains are now archived using the rsync -L option in
order to avoid problems with Windows extractors and symbolic links.
https://review.linaro.org/#/c/16415/
This resolves the following user bugs:
https://bugs.linaro.org/show_bug.cgi?id=2684https://bugs.linaro.org/show_bug.cgi?id=2192https://bugs.linaro.org/show_bug.cgi?id=2762
* The soft-float targeted toolchains have now been configured to
generate code using -mfloat-abi=soft.
This makes arm-linux-gnueabi and armeb-linux-gnueabi toolchains use
the "soft" FP ABI instead of "softfp".
Historically, TCWG's toolchains provided both "soft" and "softfp"
multilibs, but when switching from crosstool-ng to cbuildv2/abe (which
support a single multilib) "softfp" multilib was choosen. Using
"-mfloat-abi=soft" is a better choice for a gnueabi toolchain, since
it doesn't require cores to have a floating-point unit.
This change should not break compatibility for toolchain users since
the ABI will stay the same. The compiler and glibc libraries will not
refernce FP instructions.
* Removed .la files from binary toolchain archive as these files break
autotools builds.
https://bugs.linaro.org/show_bug.cgi?id=2764
* The Linaro GCC 6.3-2017.01 snapshot added further enablement for
ARMv8-M.
* The Linaro GCC 6.2-2016.12 snapshot added various AArch64 bugfixes and
optimizations.
* Backported glibc patch to simplify static malloc interposition [BZ
#20432] to correct user identified issue.
commit 058b5a41d56b9a8860dede14d97dd443792d064b
Author: Florian Weimer <fweimer(a)redhat.com>
Date: Fri Aug 26 22:40:27 2016 +0200
malloc: Simplify static malloc interposition [BZ #20432]
* Host binaries for x86_64 linux hosts now have symbols and debug
information stripped in order to reduce the size of the toolchain
binary archives. This reduces the archive size from 1.5G to 600M for
aarch64-linux-gnu target with the gcc-6-branch.
* The GDB version was upgraded from GDB 7.11 in the Linaro GCC
6.1-2016.08 release to GDB 7.12 in the Linaro GCC 6.2-2016.11 release.
* The Linaro GCC 6.2-2016.10 snapshot added AArch32 support for ARMv8.2
and ARMv8m, as well as some AArch64 fixes for ARMv8.2, and bug fixes
merged from FSF GCC 6.2. This is available in the binary toolchain as
of Linaro GCC 6.2-2016.11.
* Basic tuning support for the Qualcomm qdf24xx was added to the Linaro
GCC 6.2-2016.10 snapshot and is available in the binary toolchain as
of Linaro GCC 6.2-2016.11.
* IFUNC was disabled for baremetal targets, as it was causing test-suite
failures, and is presently a Linux only feature.
* The gold linker was added to this binary release.
* Backported malloc_lock fix into Linaro newlib 2.4.
commit 022bd2995640626d9efb6a839884c5e1c7c5e133
Author: Christophe Lyon <christophe.lyon(a)linaro.org>
Date: Wed Oct 19 14:11:50 2016 +0200
Re-enable malloc_lock for newlib-nano
* Backported rawmemchr patch into Linaro newlib 2.4.
commit 5357441171f2409fb759112bc6a00d3e672374d9
Author: Christophe Lyon <christophe.lyon(a)linaro.org>
Date: Wed Oct 19 14:09:51 2016 +0200
Add rawmemchr
* Backported strlen fix when using Thumb-2 and -Os -marm into Linaro
newlib 2.4.
commit f194ff4d5e1e304ac2a8d438d7abcbffd2dba757
Author: Christophe Lyon <christophe.lyon(a)linaro.org>
Date: Wed Oct 19 14:05:23 2016 +0200
Fix strlen using Thumb-2 with -Os -marm
* Backported fix for semihosting ARM when heapinfo not provided by
debugger into Linaro newlib 2.4.
commit bda499cb9d2b97075f74df9bfb38b23ff4d12ac2
Author: Christophe Lyon <christophe.lyon(a)linaro.org>
Date: Wed Oct 19 13:59:52 2016 +0200
Fixed semihosting for ARM when heapinfo not provided by debugger.
* Merged latest FSF glibc release/2.23/master into Linaro glibc 2.23.
* Backported __ASSUME_REQUEUE_PI check Linaro glibc 2.23 branch.
commit 2d20c3bf918cd94ebd4106693adb3a5c9272baba
Author: Adhemerval Zanella <adhemerval.zanella(a)linaro.org>
Date: Tue May 17 10:16:39 2016 -0300
Add runtime check for __ASSUME_REQUEUE_PI (BZ# 18463)
* Backported removal of __ASSUME_SET_ROBUST_LIST from Linaro glibc 2.23
branch.
commit bb8f09d72756186a3d82a1f7b2adcf8bc1fbaed1
Author: Adhemerval Zanella <adhemerval.zanella(a)linaro.org>
Date: Mon May 16 19:01:10 2016 -0300
Remove __ASSUME_SET_ROBUST_LIST
* Backported removal of __ASSUME_FUTEX_LOCK_PI from Linaro glibc 2.23
branch.
commit e48b4e7fed0de06dd7832ead48bea8ebc813a204
Author: Adhemerval Zanella <adhemerval.zanella(a)linaro.org>
Date: Mon May 16 10:35:25 2016 -0300
Remove __ASSUME_FUTEX_LOCK_PI
* Merged latest FSF binutils-2_27-branch into
linaro_binutils-2_27-branch.
* The libwinpthread DLL is now copied into the host bin directory to
satisfy mingw package dependencies.
* Backported GNU Linker fix.
commit fbc6c6763e70cb2376e2de990c7fc54c0ee44a59
Author: Nick Clifton <nickc(a)redhat.com>
Date: Tue Aug 23 09:45:11 2016 +0100
Fix seg-fault in ARM linker when trying to parse a binary file.
* Backported GNU Assembler fix for PR 20364
commit 5fe7ebe5ab43750abf8f490b785d99a1e598e7fd
Author: Nick Clifton <nickc(a)redhat.com>
Date: Fri Aug 5 10:37:57 2016 +0100
Fix the generation of alignment frags in code sections for AArch64.
https://sourceware.org/bugzilla/show_bug.cgi?id=20364
* Performance related backports from the following snapshots have been
included: Linaro GCC 6.1-2016.06, Linaro GCC 6.1-2016.07, Linaro GCC
6.1-2016.08, Linaro GCC 6.2-2016.09, Linaro GCC 6.2-2016.10, Linaro
GCC 6.2-2016.11, Linaro GCC 6.2-2016.12, and Linaro GCC 6.3-2017.01.
See the following Linaro GCC snapshots:
http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.1-2016.06/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.1-2016.07/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.1-2016.08/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.2-2016.09/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.2-2016.10/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.2-2016.11/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.2-2016.12/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.3-2017.01/
Contact Linaro
===============
File bugs at http://bugs.linaro.org
For Linaro member support see http://support.linaro.org
For Linaro community support email linaro-toolchain(a)lists.linaro.org
--
Ryan S. Arnold | Director - Linaro Core Technology and Tools
ryan.arnold(a)linaro.org | ryanarn on #linaro-tcwg @ freenode.irc.net
T: +1-612-424-1861
The Linaro Binary Toolchain
============================
The Linaro GCC 4.9-2017.01-rc1 Release-Candidate is now available.
This is a courtesy toolchain. The Linaro GCC 4.9 toolchain is officially
out of maintenance. This release is being provided in order to merge in
the last FSF GCC 4.9 branch changes into the Linaro GCC 4.9 release.
Notice: All Linaro GCC 4.9 series toolchain users should migrate to the
latest version of the Linaro GCC 4 toolchain in order to mitigate
potential security exposure to CVE-2015-7547. See the NEWS section
below for details.
Download release-candidate packages from:
http://snapshots.linaro.org/components/toolchain/gcc-linaro/4.9-2017.01-rc1/http://snapshots.linaro.org/components/toolchain/binaries/4.9-2017.01-rc1/
Previous snapshots and release-candidates are at:
http://snapshots.linaro.org/components/toolchain/binaries/
Previous releases are at:
http://releases.linaro.org/components/toolchain/binaries/
Host Requirements
==================
Linaro officially supports the current and previous Ubuntu LTS
releases (as of the time of this release). This does not mean that
the toolchain will not work on other/older Linux distributions. See
the following for the life-time of Ubuntu LTS releases.
https://wiki.ubuntu.com/Releases
The host system upon which the cross-compiler will run requires a
minimum of glibc 2.14, because of API changes to glibc's memcpy API.
https://bugs.linaro.org/show_bug.cgi?id=1869
Package Versions
=================
Linaro GCC 4.9-2017.01-rc1
FSF eglibc 2.19 (linaro_eglibc-2_19)
Linaro newlib 2.1.0-2014.09 (linaro_newlib-branch)
Linaro binutils 2.24 (linaro_binutils-2_24-branch)
FSF GDB 7.10 (gdb-7.10-branch)
Linaro toolchain package git branches are hosted at:
https://git.linaro.org/toolchain
NEWS for GCC 4.9 (as of Linaro GCC 4.9-2017.01-rc1)
==================================================
* The soft-float targeted toolchains have switched to -mfloat-abi=soft
from -mfloat-abi=softfp.
This makes arm-linux-gnueabi and armeb-linux-gnueabi toolchains use
“soft” FP ABI instead of “softfp”.
Historically, TCWG’s toolchains provided both “soft” and “softfp”
multilibs, but when switching from crosstool-ng to cbuildv2/abe (which
support a single multilib) “softfp” multilib was choosen. Using
“-mfloat-abi=soft” is a better choice for a gnueabi toolchain, since
it doesn’t require cores to have a floating-point unit.
This change should not break compatibility for toolchain users since
the ABI will stay the same. The compiler and glibc libraries will not
refernce FP instructions.
* Removed .la files from binary installation as these files break
autotools builds.
https://bugs.linaro.org/show_bug.cgi?id=2764
* Host binaries for x86_64 linux hosts now have symbols and debug
information stripped in order to reduce the size of the toolchain
binary archives. This reduces the archive size from 830M to 480M for
aarch64-linux-gnu target with the gcc-4.9-branch.
* The armv8l-linux-gnueabihf targetted toolchain is now built using
--with-mode=thumb (like all of the other cross toolchains) rather than
the default which is ARM mode.
* Applied fix for CVE-2015-7545 - A stack-based buffer overflow in
glibc's getaddrinfo() was corrected in glibc 2.23 and backported into
Linaro eglibc 2.19 (linaro_eglibc-2_19).
https://sourceware.org/ml/libc-alpha/2016-02/msg00416.html
* See the following Linaro GCC snapshot:
http://snapshots.linaro.org/components/toolchain/gcc-linaro/4.9-2015.10/
Contact Linaro
===============
File bugs at http://bugs.linaro.org
For Linaro member support see http://support.linaro.org
For Linaro community support email linaro-toolchain(a)lists.linaro.org
--
Ryan S. Arnold | Director - Linaro Core Technology and Tools
ryan.arnold(a)linaro.org | ryanarn on #linaro-tcwg @ freenode.irc.net
o Teaching activity (4/10)
== Progress ==
o Linaro GCC/Validation (5/10)
* GCC 4.9 2017.01:
- prepared source and binaries for RC1
- release notes to be finalized for publication
* GCC 5.4 2017.01
- Rebuilt binaries for the release
- Release notes almost completed
* Reviews
* Back to tree reassociation
o Misc (1/10)
* Various meetings and discussions.
== Plan ==
o GCC 4.9 release
o Backports review
o Tree reassociation
=== This Week ===
LLDB ARM/AArch64 hardware breakpoints [TCWG-717] [6/10]
-- Fixed hardware breakpoints routines in LLDB AArch64 register context.
-- Code tweaks in NativeProcessLinux/NativeThreadLinux/ProcessGDBRemote
-- Hardware breakpoint working with single threaded applications
-- Submitted a fix for LLDB AArch64 android gcc build failure
-- Wrote single and multi threaded test applications for test hardware
breakpoints.
Monitor LLDB buildbot for minimum down time. [TCWG-712] [2/10]
-- Investigate random test failures on Arm and add them to flakey tests.
-- Buildbot down due to UPS failure
-- Got UPS fixed. Restart builders and testers.
Miscellaneous Activities [2/10]
-- Meetings, Emails etc.
-- Hungary visa passport collection
-- Background study about GDB Linux Kernel awareness
=== Next Week ===
LLDB ARM/AArch64 hardware breakpoints [TCWG-717]
-- Continue work on hardware breakpoint register context routines Arm/AArch64
-- Find a way to install hardware breakpoints on multiple threads.
# Progress #
* TCWG-984, PR 20939, GDB aborts if there is an error in disassembly.
Done. All patches are committed to mainline. [3/10]
* Patch reviews, a lot, [5/10]
** Hold one of ILP32 BFD patch because it may affect aarch64 GDB,
Reviewed ILP32 GDB patch, and convince them not to add new target
descriptions for ILP32, to make our life easier in the future.
Otherwise, we need two copies of target description for each new
hardware feature, such as v8.3, SVE, etc.
** Try to hold one disassembler options patch, which affects ARM and
GDB. Gave some comments on the interface design, but looks I am
late.
** Finish the review on DW_OP_implicit_value. Met some grey area in
DWARF spec.
* Atomicity of concurrent modification on ptrace. [1/10]
It is unclear weather debugging can modify memory for one thread while
other threads are running. After the discussions with some kernel guy,
PTRACE_POKETEXT is atomic, but GDB use it in a non-atomic way when
writing 2-byte aligned 32-bit thumb-2 instruction. Suggested a
workaround upstreams.
* Misc, meeting [1/10]
# Plan #
* ILP32 patch review.
* Carefully read IBM's kernel debugging patches.
* Set up AArch64 bare debugging with GDB, OpenOCD, JTAG and
HiKey. Soldering is needed.
--
Yao Qi
[TCWG-614] Range extension thunks
- LLD now uses synthetic sections for Thunks.
ARM Thunks now have symbols and mapping symbols.
As a side-effect we can now create local symbols in synthetic sections
so I've added them to the ARM PLT sections.
[Misc]
- Wrote 3 lines of lld 4.0 release notes for ARM
- Some upstream patch review in rtdyld and ilp32 support in the assembler
- Presented my personal Linaro objectives to the TCWG leads.
Plans for next week:
- Complete Fosdem presentation, will be leaving early Friday to catch
the Eurostar
- Respond to any post commit review comments on Thunks
- Start work on range extension thunks, the previous commits to use
synthetic sections were pre-requisites to range extension thunks, but
added little new user-visible functionality.
Planned absences:
- Fosdem 2017 will need to leave early on Friday 4th Feb
- Holiday 21st Feb to 1st March
- Linaro Connect 6th to 10th March Euro LLVM 27-28 March (Linaro's
request and cost-code)
== Progress ==
* National holiday on Tuesday [2/10]
* [AArch64] Investigate PR30225 [TCWG-1021] [2/10]
- This was a bug related to the code alignment factor for the debug frame
- Decided it was not a correctness issue and the size savings for
using a different factor are probably not noticeable in practice, so I
closed the bug
* [ARM GlobalISel] Add support for integers < 32 bits wide [TCWG-980] [1/10]
- Committed all 3 patches upstream, reworked the third one a bit
* [ARM GlobalISel] Add support for pointers [TCWG-1028] [1/10]
- Started working on a patch
* Misc [4/10]
- Mailing list, code reviews, meetings
- Buildbots: reverted 2 sets of patches, noticed an issue with some
buildbots (which Renato ended up investigating)
- FOSDEM slides
== Plan ==
* [ARM GlobalISel] Add support for pointers [TCWG-1028]
=== This Week ===
Investigate LLDB testsuite failures on Pine64 target (AArch32 and
AArch64 modes) [TCWG-1012] [4/10]
-- Capture tests leaving behind runaway processes, found 3 so far.
-- Capture random failures and mark them flakey.
ARM/AArch64 hardware breakpoints [TCWG-717] [5/10]
-- Code review and prepared debug environment
-- Looked into Android Arm64 build failure with debug info.
Miscellaneous Activities [1/10]
-- Meetings, Emails etc.
=== Next Week ===
ARM/AArch64 hardware breakpoints [TCWG-717]
-- Fix hardware breakpoints routines in LLDB AArch64 register context.
Investigate LLDB testsuite failures on Pine64 target (AArch32 and
AArch64 modes) [TCWG-1012]
-- Keep and eye on tests marked flakey or any new random failures.
o Teaching activity (2/10)
== Progress ==
o Linaro GCC/Validation (5/10)
* GCC 4.9 snapshot:
- completed snapshot process
- waiting for linaro bug #1118 status before
releasing or re-spinning the snapshot.
https://bugs.linaro.org/show_bug.cgi?id=1118
* Made an published GCC 5.4 RC2, preparing the release
o Misc (3/10)
* Various meetings and discussions.
== Plan ==
o GCC 4.9 snapshot and binaries
o GCC 5.4 release
== This Week ==
* TCWG-1005 (malloc attr propagation) (4/10)
- Extended for pointer comparisons
- Patch review from Kugan
- Removed some cruft from the patch
* TCWG-1010 (bitwise dce propagation) (4/10)
- Started working on prototype
* Misc (2/10)
- Looked at Wheader-guard
- Building chromium with gcc
- Meetings
== Next Week ==
- TCWG-1005, TCWG-1010
~ Progress ~
* TCWG-984, PR 20939, GDB aborts if there is an error in disassembly. [3/10]
It is a blocker to 7.12.1 release. Fixed it in 7.12 branch.
Address comments and manage reviewer's expectations on the
patches for mainline.
* Approved two Alan's SVE GDB preparatory patches. [1/10]
* Reviewed Dave Martin's SVE user space VL control API. [1/10]
Can't figure out a case that debugger or debugger user wants to change VL.
* Review DWARF patch in big endian on DW_OP_implicit_value. [2/10]
Played with the patch, and use part of it in existing gdb tests.
Found other GDB bugs, and fixed them. Some readings on DWARF 5.
Will post my patches next week and continue reviewing the DWARF patch.
* Booked Hungary visa appointment.
* Training. [3/10]
~ Plan ~
* TCWG-984, GDB aborts if there is an error in disassembly.
* Carefully read IBM's kernel debugging patches.
* Set up AArch64 bare debugging with GDB, OpenOCD, JTAG and
HiKey. Soldering is needed.
--
Yao Qi
[TCWG-614] Range extension thunks
Started process of upstreaming the conversion of Thunks to SyntheticSections.
- Patch 1 of 3 committed, move Thunk Creation later in the link step.
- Patch 2 of 3 add support for local symbol creation in upstream review
- Patch 3 of 3 waiting for patch 2
Made a patch to output mapping symbols in PLT to test local symbol
creation. Not recommending this for inclusion in lld yet, but have
included as a way of testing 2.
Responded to comment on implementation and overall Thunks proposal.
Plans for next week:
Yet more range extension work, hope to get patches 2 and 3 above committed.
== Progress ==
* Out of office Mon-Wed [6/10]
* [ARM] Use AddDefaultPred everywhere [TCWG-987]
- Committed upstream
* LLVM AArch64 4.0.0 [ TCWG-1008] [1/10]
- Ran the tests for rc1, everything went smoothly
* [AArch64] Investigate PR30225 [TCWG-1021] [1/10]
- Someone noticed that llvm-mc is using a different code/data
alignment factor for the call frame information than gas, trying to
figure out if that would actually confuse a debugger
* Misc [2/10]
- Mailing lists, code reviews, meetings etc
=== This Week ===
Monitor LLDB buildbot for minimum down time. [TCWG-712] [1/10]
-- LLDB Arm build was broken and then fixed upstream but a buildbot script bug.
-- Fixed buildbot script to make sure not every type of build is
refreshed after a breakage.
Investigate LLDB testsuite failures on Pine64 target (AArch32 and
AArch64 modes) [TCWG-1012] [3/10]
-- Investigated and fixed TestRegisterVariables
(https://reviews.llvm.org/D28666)
-- Fixed a log issue which I initially thought was a bug.
(https://reviews.llvm.org/rL291889)
-- No further AArch64 failures except for one test timedout needs
further investigation.
-- Some tests fail randomly on AArch32 but pass when run individually.
More investigation needed.
LLDB Arm/AArch64 Investigate and fix testsuite crashes (Pine64
Crashes) [TCWG-792] [2/10]
-- There was some problem occuring when multiple versions of python
are installed on tester.
-- Also some tests are leaving behind runaway processes.
-- Cleaned up testers removed python issue ended up reducing test time
to 3 minutes.
-- Trying to track runaway processes.
Miscellaneous Activities [4/10]
-- Travel to Islamabad for Hungary visa interview (9th-10th Jan 2017).
-- Meetings, Emails etc.
=== Next Week ===
ARM/AArch64 hardware breakpoints [TCWG-717]
-- Investigate current status and create task breakdown.
Investigate LLDB testsuite failures on Pine64 target (AArch32 and
AArch64 modes) [TCWG-1012]
-- Further tracking on runaway processes when running AArch32 testsuite.
-- Investigation of timedout tests on AArch64.
o Teaching activity (4/10)
== Progress ==
o Linaro GCC/Validation (4/10)
* Merge FSF GCC 6 branch into Linaro one
* Backports reviews
* Delivered snapshot of 6.3-2017.01 source package
* Merge FSF 4.9 branch into Linaro one
o Misc (2/10)
* Various meetings and discussions.
== Plan ==
o Last GCC 4.9 snapshot
o GCC 5.4 release
[TCWG-614] Long branch thunks:
Implemented a prototype of the existing Thunk implementation using
Synthetic (Linker created sections) and moved it close to the area it
will need to go for Long Branch Thunk work.
Worked on this exclusively all week.
Plans for next week:
[TCWG-614] Long branch thunks:
Tidy up and refactor prototype to a point where I can post for
upstream review. This won't be long-branch thunk support but it will
be a significant intermediate step.
Do a draft plan of Connect submission and decide how long I need.
== Progress ==
* [ARM] Use AddDefaultPred everywhere [TCWG-987] [1/10]
- Proposed a refactoring first [TCWG-1015]
- Rebased initial patch after the refactoring, still waiting for review
* Refactor AddDefaultPred [TCWG-1015] [4/10]
- Initial implementation was a bit heavyweight, so I worked on a
simpler version based on people's suggestions
- Committed upstream
* Misc [5/10]
- Got up to speed after vacation
- Booked travel for Connect and EuroLLVM
- FOSDEM slides
- Upstream code reviews
- Reverted and ran pre-commit tests for some compiler-rt patches
that broke the buildbots
== Plan ==
* 3 days off (Mon-Wed)
* [ARM GlobalISel] Add support for integers < 32 bits wide [TCWG-980]
- I have 3 patches in upstream review, I will keep pinging them
- Putting GlobalISel work on hold until these patches go through
~ Progress ~
* TCWG-984 Handle exception/error in disassembly, [4/10]
Patches are posted and reviewed. Three patches to opcodes
are approved and committed. V2 is done to address comments
on C++ and unit tests. V2 are being tested.
* Patches review, [4/10]
** Review some preparatory SVE patches from Alan.
They are good to me, but I expect Joel or someone else to take a look
as well.
** Linux kernel awareness debugging.
Review the patch sent from linaro, but some one from IBM sends
a similar patch series. These two patch sets look similar, but are
different on some parts.
* Conversation with Paul (openocd maintainer) on irc. [1/10]
They really want me to look at some gdb+openocd issues. My Hikey
will arrive soon, but they give me some explanations on why cortex-m
board is better than cortex-a board in bare-metal, because of
simplicity. I explained to them why Linaro focused on cortex-a
devices so far.
* Linaro Connect. [1/10]
Register the connect, book flight and hotel.
~ Plan ~
* TCWG-984 and TCWG-333
* Carefully read Dave M's SVE user space VL control API.
* Carefully read IBM's kernel debugging patches.
--
Yao Qi
== This Week ==
* TCWG-1005 (malloc attr propagation) (6/10)
- Worked through bootstrap failures
- Patch found 35 functions that could have malloc attribute during gcc build
- The current analysis to find candidate functions is too restrictive, working
on improving that.
- Wrote few test-cases.
* TCWG-1006 (returns_nonnull attr propagation) (2/10)
- WIP prototype patch
* TCWG-1010 (bitwise-dce) (1/10)
- Going thru demanded-bits analysis
* Misc (1/10)
- Meetings
== Next Week ==
- Continue working on TCWG-1005, TCWG-1006 and TCWG-1010
== Progress ==
* Validation
- improvements and bug fixes:
ABE #2764. and make_docs problem for gcc-4.9 builds)
Enhanced abe validation to check builds of
gcc-4.9, 5 and 6.
make-and-test-release now works.
buildbench now works
* GCC
- Committed fix for pr78253
- discussions on releases (packaging, process improvements)
- a few backports for our 6.2-2017.01 snapshot
* misc (conf-calls, meetings, emails, ....)
- bugzilla followup
- moving from ex40-01 to dev-01
- Connect registration: on-going
== Next ==
* ABE & Jenkins jobs patches reviews and bug fixes
* GCC:
- bug fixing
Thanks guys, that was it.
I did not realize the build system was omitting the flags.
On Fri, Jan 13, 2017 at 2:23 AM, Pinski, Andrew
<Andrew.Pinski(a)cavium.com> wrote:
> Can you try -march=armv8+crypto ?
>
> -----Original Message-----
> From: linaro-toolchain [mailto:linaro-toolchain-bounces@lists.linaro.org] On Behalf Of Jeffrey Walton
> Sent: Thursday, January 12, 2017 10:56 PM
> To: Linaro Toolchain Mailman List <linaro-toolchain(a)lists.linaro.org>
> Subject: Does Linaro's GCC 4.9 include Crypto extensions and intrinsics?
>
> Please forgive my ignorance. I'm working on a Pine64 dev-board Pine64 supplies Linaro's GCC 4.9.2 toolchain.
>
> I am catching a compile error, and I am trying to determine why.
>
> Does Linaro's GCC 4.9 provide AES and SHA intrinsics?
Please forgive my ignorance. I'm working on a Pine64 dev-board Pine64
supplies Linaro's GCC 4.9.2 toolchain.
I am catching a compile error, and I am trying to determine why.
Does Linaro's GCC 4.9 provide AES and SHA intrinsics?
**********
$ uname -a
Linux pine64 3.10.102-2-pine64-longsleep #66 SMP PREEMPT Sat Jul 16
10:53:13 CEST 2016 aarch64 GNU/Linux
$ gcc --version
gcc (Debian/Linaro 4.9.2-10) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
**********
$ CFLAGS="-DMBEDTLS_HAVE_ARMV8A_CE=1" make DEBUG=1 V=1
CC aes_armv8a_ce.c
aes_armv8a_ce.c: In function 'mbedtls_armv8a_ce_aes_crypt_ecb':
aes_armv8a_ce.c:65:4: warning: implicit declaration of function
'vaeseq_u8' [-Wimplicit-function-declaration]
state_vec = vaeseq_u8( state_vec, roundkey_vec );
^
aes_armv8a_ce.c:65:14: error: incompatible types when assigning to
type 'uint8x16_t' from type 'int'
state_vec = vaeseq_u8( state_vec, roundkey_vec );
^
aes_armv8a_ce.c:67:4: warning: implicit declaration of function
'vaesmcq_u8' [-Wimplicit-function-declaration]
state_vec = vaesmcq_u8( state_vec );
^
aes_armv8a_ce.c:67:14: error: incompatible types when assigning to
type 'uint8x16_t' from type 'int'
state_vec = vaesmcq_u8( state_vec );
^
aes_armv8a_ce.c:74:13: error: incompatible types when assigning to
type 'uint8x16_t' from type 'int'
state_vec = vaeseq_u8( state_vec, roundkey_vec );
^
aes_armv8a_ce.c:84:4: warning: implicit declaration of function
'vaesdq_u8' [-Wimplicit-function-declaration]
state_vec = vaesdq_u8( state_vec, roundkey_vec );
^
aes_armv8a_ce.c:84:14: error: incompatible types when assigning to
type 'uint8x16_t' from type 'int'
state_vec = vaesdq_u8( state_vec, roundkey_vec );
^
aes_armv8a_ce.c:86:4: warning: implicit declaration of function
'vaesimcq_u8' [-Wimplicit-function-declaration]
state_vec = vaesimcq_u8( state_vec );
^
aes_armv8a_ce.c:86:14: error: incompatible types when assigning to
type 'uint8x16_t' from type 'int'
state_vec = vaesimcq_u8( state_vec );
^
aes_armv8a_ce.c:93:13: error: incompatible types when assigning to
type 'uint8x16_t' from type 'int'
state_vec = vaesdq_u8( state_vec, roundkey_vec );
^
aes_armv8a_ce.c: In function 'mbedtls_armv8a_ce_gcm_mult':
aes_armv8a_ce.c:138:2: warning: implicit declaration of function
'vmull_high_p64' [-Wimplicit-function-declaration]
r1 = (uint8x16_t)vmull_high_p64( (poly64x2_t)a_p, (poly64x2_t)b_p );
^
aes_armv8a_ce.c:138:2: error: can't convert between vector values of
different size
aes_armv8a_ce.c:141:2: error: can't convert between vector values of
different size
t0 = (uint8x16_t)vmull_high_p64( (poly64x2_t)a_p, (poly64x2_t)t0 );
^
aes_armv8a_ce.c:150:2: error: can't convert between vector values of
different size
t0 = (uint8x16_t)vmull_high_p64( (poly64x2_t)r1, (poly64x2_t)p );
^
Makefile:170: recipe for target 'aes_armv8a_ce.o' failed
make[1]: *** [aes_armv8a_ce.o] Error 1
Makefile:17: recipe for target 'lib' failed
make: *** [lib] Error 2
**********
CC sha1_armv8a_ce.c
sha1_armv8a_ce.c: In function 'mbedtls_armv8a_ce_sha1_process':
sha1_armv8a_ce.c:99:2: warning: implicit declaration of function
'vsha1h_u32' [-Wimplicit-function-declaration]
e1 = vsha1h_u32( a );
^
sha1_armv8a_ce.c:100:2: warning: implicit declaration of function
'vsha1cq_u32' [-Wimplicit-function-declaration]
abcd = vsha1cq_u32( abcd, e, wk0 ); /* 0 */
^
sha1_armv8a_ce.c:100:7: error: incompatible types when assigning to
type 'uint32x4_t' from type 'int'
abcd = vsha1cq_u32( abcd, e, wk0 ); /* 0 */
^
sha1_armv8a_ce.c:102:2: warning: implicit declaration of function
'vsha1su0q_u32' [-Wimplicit-function-declaration]
w0 = vsha1su0q_u32( w0, w1, w2 );
^
sha1_armv8a_ce.c:102:5: error: incompatible types when assigning to
type 'uint32x4_t' from type 'int'
w0 = vsha1su0q_u32( w0, w1, w2 );
^
sha1_armv8a_ce.c:106:7: error: incompatible types when assigning to
type 'uint32x4_t' from type 'int'
abcd = vsha1cq_u32( abcd, e1, wk1 ); /* 1 */
^
sha1_armv8a_ce.c:108:2: warning: implicit declaration of function
'vsha1su1q_u32' [-Wimplicit-function-declaration]
w0 = vsha1su1q_u32( w0, w3 );
^
sha1_armv8a_ce.c:108:5: error: incompatible types when assigning to
type 'uint32x4_t' from type 'int'
w0 = vsha1su1q_u32( w0, w3 );
^
sha1_armv8a_ce.c:109:5: error: incompatible types when assigning to
type 'uint32x4_t' from type 'int'
w1 = vsha1su0q_u32( w1, w2, w3 );
^
...
**********
$ grep -IR vaeseq_u8 /usr/include
/usr/include/clang/3.5.0/include/arm_neon.h:__ai uint8x16_t
vaeseq_u8(uint8x16_t __p0, uint8x16_t __p1) {
/usr/include/clang/3.5.0/include/arm_neon.h:__ai uint8x16_t
vaeseq_u8(uint8x16_t __p0, uint8x16_t __p1) {
/usr/include/clang/3.5/include/arm_neon.h:__ai uint8x16_t
vaeseq_u8(uint8x16_t __p0, uint8x16_t __p1) {
/usr/include/clang/3.5/include/arm_neon.h:__ai uint8x16_t
vaeseq_u8(uint8x16_t __p0, uint8x16_t __p1) {
$
The Linaro Toolchain Working Group (TCWG) is pleased to announce the
2017.01 snapshot of the Linaro GCC 6 source package.
This monthly snapshot[1] is based on FSF GCC 6.3+svn244220 and
includes performance improvements and bug fixes backported from
mainline GCC. This snapshot contents will be part of the 2017.02
stable[2] quarterly release.
This snapshot tarball is available on:
http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.3-2017.01/
Interesting changes in this GCC source package snapshot include:
* Updates to GCC 6.3+svn244220
* Backport of [Bugfix] Fix PR77673: bswap loads passed end of object
* Backport of [ARMv8-M] [AArch32] 1/7 Move memory model declarations
in memmodel.h
* Backport of [ARMv8-M] [AArch32] 2/7 Adapt atomic and exclusive load
and store to ARMv8-M Baseline
* Backport of [ARMv8-M] [AArch32] 3/7 Refactor atomic compare_and_swap
to make it fit for ARMv8-M Baseline
* Backport of [ARMv8-M] [AArch32] 4/7 Adapt atomic compare and swap to
ARMv8-M Baseline
* Backport of [ARMv8-M] [AArch32] 5/7 Adapt other atomic operations to
ARMv8-M Baseline
* Backport of [ARMv8-M] [AArch32] 7/7 Enable ARMv8-M atomic and
synchronization support for ARMv8-M Baseline
* Backport of [ARMv8-M] [AArch32] Added support for ARMV8-M Security
Extension cmse_nonsecure_caller intrinsic
* Backport of [ARMv8-M] [AArch32] Add multilib mapping for Cortex-M23
& Cortex-M33
* Backport of [ARMv8-M] [AArch32] Add support for ARM Cortex-M23 processor
* Backport of [ARMv8-M] [AArch32] Add support for ARM Cortex-M33 processor
* Backport of [ARMv8-M] [AArch32] Add support for ARMv8-M's Secure
Extensions flag and intrinsics
* Backport of [ARMv8-M] [AArch32] ARMv8-M Security Extension's
cmse_nonsecure_call: use __gnu_cmse_nonsecure_call
* Backport of [ARMv8-M] [AArch32] ARMv8-M Security Extension's
cmse_nonsecure_entry: __acle_se label and bxns return
* Backport of [ARMv8-M] [AArch32] ARMv8-M Security Extension's
cmse_nonsecure_entry: clear registers
* Backport of [ARMv8-M] [AArch32] Fix various arm failures with config-list.mk
* Backport of [ARMv8-M] [AArch32] Force soft float in ARMv6-M and
ARMv8-M Baseline options
* Backport of [ARMv8-M] [AArch32] Handling ARMv8-M Security
Extension's cmse_nonsecure_call attribute
* Backport of [ARMv8-M] [AArch32] Handling ARMv8-M Security
Extension's cmse_nonsecure_entry attribute
* Backport of [ARMv8-M] [AArch32] Make arm_feature_set agree with type
of FL_* macros
* Backport of [ARMv8-M] [AArch32] Optional -mthumb for Thumb only targets
* Backport of [AArch64] 1/3 Add missing Poly64_t intrinsics to GCC
* Backport of [AArch64] 2/3 Add missing Poly64_t intrinsics to GCC
* Backport of [AArch64] 3/3 Add tests for missing Poly64_t intrinsics to GCC
* Backport of [AArch64] Add more Poly64_t intrinsics to GCC
* Backport of [AArch64] more poly64 intrinsics
* Backport of [Testsuite] [AArch64] Fix failing poly64 tests on ARM
* Backport of [Testsuite] [AArch64] Lower iterator count on
gcc.dg/atomic/c11-atomic-exec-5.c for AARCH64
* Backport of [Cleanup] Improve comment for struct symbolic_number in bswap pass
Subscribe to the important Linaro mailing lists and join our IRC
channels to stay on top of Linaro development.
** Linaro Toolchain Development "mailing list":
http://lists.linaro.org/mailman/listinfo/linaro-toolchain
** Linaro Toolchain IRC channel on irc.freenode.net at @#linaro-tcwg@
* Bug reports should be filed in bugzilla against GCC product:
http://bugs.linaro.org/enter_bug.cgi?product=GCC
* Interested in commercial support? inquire at "Linaro support":
mailto:support@linaro.org
[1]. Source package snapshots are defined when the compiler is only
put through unit-testing and full validation is not performed.
[2]. Stable source package releases are defined as releases where the
full Linaro Toolchain validation plan is executed.
o 1 day off (2/10)
o Teaching activity (4/10)
== Progress ==
o Linaro GCC/Validation (2/10)
* 5.4-2017.01-rc1 release notes and publication
* Some infra bugfixes and reviews
o Misc (1/10)
* Various meetings and discussions.
* Plan for 2017
== Plan ==
o GCC 6 branch merge and snapshot
== Activity ==
- [PR64946] abs vectorization fails for char/short types
* Trying to tackle this with ABSU_EXPR
* Experimented with implemented in FE vs in gimplification
* Hope to get a working prototype this week
- Misc
* gcc-patches/bug list
* Plan for 2017
== Plans for next week ==
- PR64946
- Catch up on pending patches
=== This Week ===
Back from month long holiday had a surgery during this period.
Add Pine64 as tester to LLDB buildbot [TCWG-1011] [3/10]
-- Configure Pine64 with Ubuntu 16.04 image
-- Configure network on Pine64 to be used with LLDB buildbot
-- Configure Pine64 for AArch32 mode execution
-- Configure LLDB buildbot to include Pine64 as tester in both AArch32
and AArch64 modes.
-- Run buildbot with Pine64 and monitor stability
Monitor LLDB buildbot for minimum down time. [TCWG-712]
-- Return from break reset buildbot and testers.
Investigate LLDB testsuite failures on Pine64 target (AArch32 and
AArch64 modes) [TCWG-1012] [2/10]
-- Some tests pass when run individually.
-- Some tests fail only when run in testsuite, similar steps pass when
run using LLDB commandline.
LLDB Arm/AArch64 Investigate and fix testsuite crashes (Pine64
Crashes) [TCWG-792] [1/10]
-- LLDB crashing unexpectedly on Pine64 as well.
-- Initial investigation suggests test run fine individually and in
single thread mode.
Meetings and other Miscellaneous Activities [1/10]
-- Browse through email backlog.
-- Prepared a future ToDo list.
BUD17 Travel - Schengen visa application for Budapest, Hungary. [3/10]
-- Information gathering and correspondance.
-- Form filling and preparation supporting documentation.
-- Application submission.
-- Interview date is on 10th Jan 2017.
=== Next Week ===
Investigate LLDB testsuite failures on Pine64 target (AArch32 and
AArch64 modes) [TCWG-1012]
-- Continue to investigate, possible fix trivial issues and mark rest
as xfail with appropriate bug reports.
LLDB Arm/AArch64 Investigate and fix testsuite crashes (Pine64
Crashes) [TCWG-792]
-- Find a reliable reason to the issue as this hampers our buildbot work.
BUD17 Travel - Schengen visa application for Budapest, Hungary.
-- Budapest visa interview travelling to Islamabad 9 - 10 Jan 2017.
== Activity ==
TCWG-919 Thunks to undefined symbols
Now committed upstream
TCWG-614 Long branch thunks
Sent RFC to llvm-dev
Have a good idea about how to proceed.
First step is to rewrite existing implementation using synthetic sections.
Currently thinking about the best way to do this.
Wrote first draft of Fosdem 2017 presentation
Booked travel for Fosdem
Registered for Linaro Connect
== Plans for next week ==
Linaro TCWG-614 Long branch thunks
Aim to get a patch out for review for thunks as synthetic sections
== Progress ==
* Out of office [2/10]
* [ARM GlobalISel] Use CC support for lowering args/return [TCWG-946] [1/10]
- Brushed up and committed upstream
* [ARM] Use AddDefaultPred everywhere [TCWG-987] [3/10]
- Patches in upstream review
* Misc [4/10]
- Mailing lists, meetings, 2017 objectives
- Code reviews
- FOSDEM slides
- Investigated buildbot failures and reverted some patches (and ran
a precommit on the next version)
== Plan ==
* Vacation until January 9th, 2017
~ Progress ~
* Fix foreign frame problem in C++ exception unwinding. PR 20939. [2/10]
Being discussed. We agreed on the approach fixing the bug. Need a
patch.
Find other issues during the investigation, and fixed them. PR 20953,
PR 20954, and PR 20955 are fixed.
* GDB exception handling is broken on i686-w64-mingw32. PR 20977. [3/10]
In short, we can't use longjmp in SJLJ exception handling. Need post
an RFC.
* Upstream patches review. [5/10]
** SVE GDB patches review.
Carefully read the patches line by line for the first time. Find some
issues on target descriptions, and post my comments upstreams. Hack
GDBserver to get SVE on normal juno board. Need more time to think
about how to move on.
** Review sparc target descriptions.
** 7.12.1 release discussion.
~ Plan ~
* PR 20939, PR 20977.
* On Holiday from Wed.
--
Yao Qi
== Progress ==
o Linaro GCC/Validation (7/10)
* Completed backports
* Merged FSF branches (5 and 6)
* Released 2016.12 source snapshots (5 and 6)
* Closed bugzillas #1925, #2575 and #1963
o Misc (3/10)
* Various meetings and discussions.
== Plan ==
o Finish on-going tasks before holiday (Tuesday evening).
Progress:
TCWG-985 PIE on ARM broken
- Now fixed
TCWG-911 Eglibc requires a .ARM.attributes section for dlopen
- Worked around this with a simple hack to retain the first build
attribute section seen. This should suffice for the majority of
use-cases on a host platform using the default compiler. More work is
needed later. Now upstreamed.
TCWG-919 Thunks to undefined symbols
- In upstream review, as expected got some push back, I had hoped to
have resolved this on Thursday and committed today, but no response
last night.
PR31332 X86 pic plt sequences broken
- Worked out a fix, but haven't sent upstream due to needing to spend
quite a bit of time writing tests.
Other:
About 3/4 way of writing up AArch64 Ifunc for possible inclusion in
some public facing documentation.
Got a new blank machine from IT with permission to install linux
myself. Have now built myself a 16.04 machine and got my environment
set up.
Planned absences:
- on holiday for two weeks, back on Tuesday 3rd December
Next year:
- Top priority is long range thunks in lld, followed by an ARM lld build bot.
== Progress ==
* [ARM GlobalISel] Add support for integers < 32 bits wide [TCWG-980] [4/10]
- A number of patches in upstream review
* [ARM] Refactor AddrMode3 [TCWG-989] [1/10]
- Did some preliminary investigations / tinkering for removing a
hack in the representation of LDRH
* Rewrite llvm-projs in Python [TCWG-833] [2/10]
- More refactoring etc
- It is finally done, yay
* Misc [3/10]
- Address review comments on outstanding patches (committed
TCWG-925, still waiting for TCWG-946)
- AArch64 3.9.1 release [TCWG-886]
- Meetings, mailing lists, code reviews
== Plan ==
* [ARM] Refactor AddrMode3 [TCWG-989]
* FOSDEM slides
* Vacation between December 24th and January 9th.
The Linaro Toolchain Working Group (TCWG) is pleased to announce the
2016.12 snapshot of both Linaro GCC 5 and Linaro GCC 6 source
packages.
Linaro GCC 6 monthly snapshot[1] is based on FSF GCC 6.2+svn243594 and
includes performance improvements and bug fixes backported from
mainline GCC. This snapshot contents will be part of the 2017.02
stable[2] quarterly release.
This snapshot tarball is available on:
http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.2-2016.12/
Interesting changes in this GCC source package snapshot include:
* Updates to GCC 6.2+svn243594
* Linaro BZ #2575: backport from trunk r239561, r242555.
* Backport of [Bugfix] [AArch32] PR target/78041
* Backport of [Bugfix] Fix test names for trad.exp tests PR testsuite/78136
* Backport of [Bugfix] PR middle-end/78201
* Backport of [Bugfix] PR tree-optimization/71636
* Backport of [AArch32] Implementing vmaxnmQ_ST and vminnmQ_ST intrinsincs
* Backport of [AArch64] aarch64-*-freebsd* support for gcc
* Backport of [AArch64] Add a SHA1H pattern
* Backport of [AArch64] Align FP callee-saves
* Backport of [AArch64] Improve stack adjustment
* Backport of [AArch64] Improve stack adjustment: add testcase
* Backport of [Cleanup] Fix typo in name
* Backport of [Cleanup] Remove all uses of
TARGET_FLT_EVAL_METHOD_NON_DEFAULT and poison it
* Backport of [Cleanup] Remove redundant TARGET_VFP
* Backport of [Misc] Optimize strchr to strlen (1/2)
* Backport of [Misc] Optimize strchr to strlen (2/2)
* Backport of [Testsuite] [AArch32] Fix failing vminnm/vmaxnm test on ARM
* Backport of [Testsuite] [AArch32] FP16 ARM Alternative format
variants of AAPCS tests
* Backport of [Testsuite] Fix traditional cpp test failure
* Backport of [Testsuite] Report DejaGnu ERROR messages in compare_tests
* Backport of [Testsuite] Report DejaGnu ERROR messages in dg-extract-results
* Backport of [Cleanup] [AArch32] Remove redundant model field from
FPU descriptions
* Backport of [Cleanup] [AArch32] Use VAR_P
* Backport of [Cleanup] [AArch64] aarch64-c.o should depend on TARGET_H
* Backport of [Cleanup] [AArch64] Add a comment before each set of cores
* Backport of [Cleanup] [AArch64] Add function comments to some
prologue/epilogue helpers
* Backport of [Cleanup] [AArch64] Cleanup add expander
Linaro GCC 5 monthly snapshot[1] is based on FSF GCC 5.4+svn243604 and
includes performance improvements and bug fixes backported from
mainline GCC. This snapshot contents will be part of the next
maintenance release.
This snapshot tarball is available on:
http://snapshots.linaro.org/components/toolchain/gcc-linaro/5.4-2016.12/
Interesting changes in this GCC source package snapshot include:
* Updates to GCC 5.4+svn243604
* Linaro BZ #2575: backport from trunk r232812.
Subscribe to the important Linaro mailing lists and join our IRC
channels to stay on top of Linaro development.
** Linaro Toolchain Development "mailing list":
http://lists.linaro.org/mailman/listinfo/linaro-toolchain
** Linaro Toolchain IRC channel on irc.freenode.net at @#linaro-tcwg@
* Bug reports should be filed in bugzilla against GCC product:
http://bugs.linaro.org/enter_bug.cgi?product=GCC
* Interested in commercial support? inquire at "Linaro support":
mailto:support@linaro.org
Progress:
TCWG-829 Ifunc support
- Refactored implementation using synthetic sections upstreamed. Found
out that x86 ifunc was broken and probably hadn't ever worked so I
fixed that while I was there.
PR31332 x86 pic plt sequences broken
- Found out that x86 pic and pie is broken in lld, the implementation
assumes that .got is immediately followed by .got.plt with no gap. As
lld makes no such guarantees it is easy to break with a trivial
example. Raised PR31332 after investigating the root cause. Spent
quite a bit of time on this, even though it is x86 specific, I wanted
to make sure I hadn't broken it.
Fosdem-2017
- Submitted a llvm-devroom talk on lld to Fosdem (post deadline, but
probably still up for consideration)
Plans for this week:
TCWG-985 PIE on ARM broken
- I have a simple fix that should be simple to upstream
TCWG-919 Thunks to undefined symbols
- I have a downstream patch, but there is risk I'll be asked to refactor
TCWG-911 Eglibc requires a .ARM.attributes section for dlopen
- There is a trivial hack to make this work; just use the first ARM
attributes section and throw away the rest. A proper solution to
support ARM attributes merging will take some time.
PR31332 x86 pic plt sequences broken
- I think I can fix this fairly cheaply which while not directly
relevant to ARM, it does give me another easily accessible target to
test on my desk top and has some community benefits.
Ifuncs
- LLD doesn't support taking the address of ifuncs for any
architecture. I don't think that this is common practice, but it is a
latent problem that it might be good to fix now when ifunc is in my
head.
Planned holidays:
19th December till end of the year, back on Tuesday 3rd January
* TCWG-971 (6/10)
- Resolved ICE's in couple of cases.
- Got stuck on the case when split_point->entry_bb has phi whose one
of the arguments is defined
outside split region. This caused ICE for isl_schedule_node.c. For
now, the patch refuses to split
in this case, which "fixes" the ICE. Need to think more about this case.
- Working through other failures with bootstrap :/
* GCC bugs (3/10)
- TCWG-701: Patch iteration based on upstream reviews by Jakub.
* Misc (1/10)
- Meetings
== This Week ==
- TCWG-701
- Holidays till 2nd Jan 2017.
== Progress ==
* [ARM GlobalISel] Use CC support for lowering args/return [TCWG-946] [2/10]
- Committed patch extracting target-independent functionality from
AArch64 GlobalISel
- Submitted patch using that functionality to lower any number of
i32 arguments
- Refactored [ARM GlobalISel] Select add instructions [TCWG-925] to
also use the extracted functionality
* [ARM GlobalISel] Add support for integers < 32 bits wide [TCWG-980] [4/10]
- Support for lowering i8 and i16 arguments / returns through
registers is ready, including the ABI signext / zeroext
- Currently brushing up i1
* Rewrite llvm-projs in Python [TCWG-833] [2/10]
- Refactored patch a bit based on feedback from reviews, still have
some refactoring left to do
- Fixed a bug related to worktree detection
* Misc [2/10]
- Meetings, mailing lists, code reviews
== Plan ==
* Ping / rebase upstream patches
* [ARM GlobalISel] Add support for integers < 32 bits wide [TCWG-980]
- Finish i1 through registers
- Implement i1, i8, i16 through the stack
* Rewrite llvm-projs in Python [TCWG-833]
- Finish refactoring
~ Progress ~
* TCWG-979, Use code cache in prologue analyzer. [3/10]. Done.
Prologue analyser improvement patches are pushed in. Performance
improvement is measured on both ARM and AArch64 with and without
-fstack-protector. Wall time is reduced from 34s to 10s in one case!
* TCWG-984, Handle exception/error in disassembly. [5/10]
Need to fixed it before 7.12.1 release (Jan 2017).
Find other issues during the investigation, and fixed them. PR 20953,
PR 20954, PR 20955. Two opcodes patches are posted to binutils.
Write a unit test for disassembly on memory error. Exposes some
issues in opcodes. Whether upstream needs this unit test depends
on the decision on how to fix foreign frame problem in disassembly.
* TCWG-333, Fix gdb.base/func-ptrs.exp fails in thumb mode. No progress.
* upstream patches review. [1/10]
* Misc, meeting, [1/10]
~ Plan ~
* TCWG-984, Post the RFC and list three approaches fixing this problem.
* TCWG-333
--
Yao Qi
-- Progress --
TCWG-829 IFunc support
I have a downstream implementation of ifunc using synthetic sections
that handles x86_64, ARM and AArch64. I think it may be a bit too
complex to upstream in its current form but I think it is illustrative
enough to post upstream for comment.
TCWG-828 Static TLS support
Implemented using new GOT structure and successfully upstreamed.
Took up an opportunity to get involved with progressing some AArch64
documentation back at ARM.
-- Plans --
Will post current state of TCWG-829 (ifunc) for feedback on whether
the design is right.
- Write more tests for TCWG-829.
- Work on TCWG-911 eglibc insists on .ARM.attributes section for
dlopen to work and TCWG-919 Thunks to undefined symbols for shared
libraries that call back to the application.
- Spend some time reviewing and updating AArch64 documents back at ARM.
== Progress ==
o Linaro GCC/Validation (7/10)
* [TCWG-936] Regression detection:
- a bit of work on the job and discussing improvement.
* [TCWG-955] Re-association:
- learning middle-end internals
- some testing and debug
o Misc (3/10)
* Various meetings and discussions.
== Plan ==
same as last week:
o Improve regression detection job
o Improve linaro gcc integration validation
o Continue re-association learning
== Progress ==
* Validation
- patches & reviews (jenkins jobs, abe)
- improving abe validation
- abe cleanup
- looking at abe bug 757: add support to run newlib's make check
* GCC
- reported a few regressions on trunk
- bug #78253: new patch sent upstream
* misc (conf-calls, meetings, emails, ....)
- updated arm-neon-tests repo: add the possibility to avoid that the
compiler computes the results of some of the intrinsics (clang/llvm
does some optimisations, but does not model the Neon Q flag)
== Next ==
* ABE & Jenkins jobs patches reviews and bug fixes
* GCC bug #78253
== This Week ==
* TCWG-971 (4/10)
- Prototype patch can handle simple cases
* GCC bugs (5/10)
a) PR78529 - Cannot reproduce after several tries :(
b) PR78599 - Submitted patch upstream to bail out of bits prop if
param type is not integral or pointer type, but a better fix
would be to obtain type from jump_function. I can use that approach
once
Kugan's patch to add param_type to jump_function gets committed.
c) TCWG-963 - Patch iteration based on upstream feedback.
d) PR78629 - Committed fix r243125 to trunk.
* Misc (1/10)
- GCC ubsan builds
- Meetings
== Next Week ==
- TCWG-971
- GCC bugs
- Single vs Balanced partition benchmarking
~ Progress ~
* TCWG-965, Investigate doing unit tests in GDB. [3/10] Done.
The first unit test to AArch64 prologue analyser is pushed. The unit
test is running on GDB buildbot on different hosts (x86, s390, etc).
The patch review takes a while because it is my first patch written in
C++11. Need some unit tests to ARM prologue analyser too.
* TCWG-416, Improve GDB performance in remote debugging. [4/10]
Use code cache in AAarch64 prologue analysis, and it is improved from
10s to 3s!
* TCWG-333, Fix gdb.base/func-ptrs.exp fails in thumb mode. [1/10]
Preparatory patches are committed. Think about the next step. I have
to change expression evaluation in GDB.
* Misc, [2/10]
** Upstream patches review. Reviewed OpenRISC and FreeBSD/mips
patches.
** GDB linux kernel awareness discussion.
GDB is unable to access kernel memory when program stops in user
space (by ctrl-c). Discussed some ways to avoid teaching GDB setting
MMU.
** Some input and discussion on SVE.
~ Plan ~
* TCWG-964, more unit tests on ARM prologue analyser,
* TCWG-416, measure performance improvement with -fstack-protector
on ARM (with both -marm and -mthumb).
* TCWG-333,
--
Yao Qi
== Progress ==
- Posted a revised patch for PR78365
- Fixed ICE and Spec2006 benchmarked type promotion pass
* There are couple of mis-compares that needs fixing
- Setup perf in r1-a12 and analyzing for type promotion and lto
- Documented tasks within reassoc
== Plan ==
- Perf analysis of LTO
- Type promotion pass
- Work on upstream bugs
== Progress ==
o Linaro GCC/Validation (6/10)
* Created regression detection job [TCWG-936]
* Fought with infrastructure / jenkins plugins issues
* Start to look at re-association [TCWG-955]
o Misc (4/10)
* Various meetings and discussions.
== Plan ==
o Improve regression detection job
o Improve linaro gcc integration validation
o Continue re-association learning
# Progress #
* TCWG-923, Use regcache instead of frame in software_single_step. [1/20]
Patches are pushed in. Done.
* TCWG-333, Fix gdb.base/func-ptrs.exp fails in thumb mode. [3/10]
Another three preparatory patches are approved. Ongoing.
* TCWG-416 Improve GDB performance in remote debugging. [3/10]
Prologue analysis performance on arm-linux is improved a lot (from
39s to 12s in one case), but no change on aarch64-linux. Looks GDB
doesn't recognise "str x19, [sp, #-48]!" as part of the prologue.
* TCWG-965 Unit test in GDB. [2/10]
Investigate how to do unit test to prologue analysis in GDB, to
address the bug above. We can embed some test code in GDB, and invoke
them by a special command. It is a little big ugly, but better than
nothing. Need some refactor to aarch64 backend for unit test.
* Patches review, [1/10]
** Reviewed two new GDB ports, RISC-V and OpenRISC.
** Chat with Antoine on ptrace atomicity, and insist that he should
refactor 'struct tracepoint' before add arm-linux tracepoint
support.
# Plan #
* TCWG-333
* TCWG-416
* TCWG-965
--
Yao Qi
== This Week ==
* GCC bugs (6/10)
a) PR78154: Fix committed to trunk.
b) PR78153: Fix committed to trunk.
c) PR78501: Committed to trunk, which fixes ada bootstrap but didn't
fix profiledbootstrap.
d) TCWG-957: Submitted patch upstream, Richard rejected the transform
to be done in copyprop.
Looking at handling this in VRP instead.
e) TCWG-963: Submitted patch upstream, reviews by Richard and Jeff.
* GCC cleanup patches (1/10)
- Committed r242888 to move initialization of ptrdiff_type_node to middle-end.
* TCWG-971 (2/10)
- Working on prototype patch to re-materialize local variables in the
split function that were derived
from arguments.
* Misc (1/10)
- Meetings
== Next Week ==
- ipa-bits-propagation: save types in jump fn instead
- TCWG-971
- GCC bugs
The Linaro Binary Toolchain
============================
The Linaro GCC 6.2-2016.11 Release is now available.
The GCC 6 Release series has significant changes from the GCC 5
release series. For an explanation of the changes please see the
following website:
https://gcc.gnu.org/gcc-6/changes.html
For help in porting to GCC 6 please see the following explanation:
https://gcc.gnu.org/gcc-6/porting_to.html
Download release packages from:
http://releases.linaro.org/components/toolchain/gcc-linaro/6.2-2016.11/http://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/
Previous snapshots and release-candidates are at:
http://snapshots.linaro.org/components/toolchain/binaries/
Previous releases are at:
http://releases.linaro.org/components/toolchain/binaries/
Host Requirements
==================
Linaro officially supports the current and previous Ubuntu LTS
releases (as of the time of this release). This does not mean that
the toolchain will not work on other/older Linux distributions. See
the following for the life-time of Ubuntu LTS releases.
https://wiki.ubuntu.com/Releases
The host system upon which the cross-compiler will run requires a
minimum of glibc 2.14, because of API changes to glibc's memcpy API.
https://bugs.linaro.org/show_bug.cgi?id=1869
Package Versions
=================
Linaro GCC 6.2-2016.11
Linaro glibc 2.23 (linaro/2.23/master)
https://www.sourceware.org/ml/libc-alpha/2016-08/msg00212.html
Linaro newlib 2.4-2016.03 (linaro_2.4-branch)
Linaro binutils 2.27 (linaro_binutils-2_27-branch)
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob_plain;f=bin…
Linaro GDB 7.12 (gdb-7.12-branch)
https://lists.gnu.org/archive/html/info-gnu/2016-10/msg00007.html
Linaro toolchain package git branches are hosted at:
http://git.linaro.org/?a=project_list&s=toolchain%2F&btnS=Search
NEWS for Linaro GCC 6.2-2016.11
================================
* Host binaries for x86_64 linux hosts now have symbols and debug
information stripped in order to reduce the size of the toolchain
binary archives. This reduces the archive size from 1.5G to 600M for
aarch64-linux-gnu target with the gcc-6-branch.
* Removed GCC patch for revision 239561 as it was causing an upstream
regression
commit 03850689f4c165e88cec81696d9d722e76a86c85
Author: Yvan Roux <yvan.roux(a)linaro.org>
Date: Wed Nov 9 21:56:21 2016 +0100
Revert backport from trunk r239561.
This reverts commit 11879870dc041028bcb8d078d9ddbd7e400dd03f.
* The GDB version was upgraded from GDB 7.11 in the 6.1-2016.08 release
to GDB 7.12 in 6.2-2016.11.
* The Linaro GCC 6.2-2016.10 snapshot added AArch32 support for ARMv8.2
and ARMv8m, as well as some AArch64 fixes for ARMv8.2, and bug fixes
merged from FSF GCC 6.2.
* Basic tuning support for the Qualcomm qdf24xx was added to the Linaro
GCC 6.2-2016.10 snapshot and will appear in this release.
* IFUNC was disabled for baremetal targets, as it was causing test-suite
failures, and is presently a Linux only feature.
* The gold linker was added to this binary release.
* Backported malloc_lock fix into Linaro newlib 2.4.
commit 022bd2995640626d9efb6a839884c5e1c7c5e133
Author: Christophe Lyon <christophe.lyon(a)linaro.org>
Date: Wed Oct 19 14:11:50 2016 +0200
Re-enable malloc_lock for newlib-nano
* Backported rawmemchr patch into Linaro newlib 2.4.
commit 5357441171f2409fb759112bc6a00d3e672374d9
Author: Christophe Lyon <christophe.lyon(a)linaro.org>
Date: Wed Oct 19 14:09:51 2016 +0200
Add rawmemchr
* Backported strlen fix when using Thumb-2 and -Os -marm into Linaro
newlib 2.4.
commit f194ff4d5e1e304ac2a8d438d7abcbffd2dba757
Author: Christophe Lyon <christophe.lyon(a)linaro.org>
Date: Wed Oct 19 14:05:23 2016 +0200
Fix strlen using Thumb-2 with -Os -marm
* Backported fix for semihosting ARM when heapinfo not provided by
debugger into Linaro newlib 2.4.
commit bda499cb9d2b97075f74df9bfb38b23ff4d12ac2
Author: Christophe Lyon <christophe.lyon(a)linaro.org>
Date: Wed Oct 19 13:59:52 2016 +0200
Fixed semihosting for ARM when heapinfo not provided by debugger.
* Merged latest FSF glibc release/2.23/master into Linaro glibc 2.23.
* Backported __ASSUME_REQUEUE_PI check Linaro glibc 2.23 branch.
commit 2d20c3bf918cd94ebd4106693adb3a5c9272baba
Author: Adhemerval Zanella <adhemerval.zanella(a)linaro.org>
Date: Tue May 17 10:16:39 2016 -0300
Add runtime check for __ASSUME_REQUEUE_PI (BZ# 18463)
* Backported removal of __ASSUME_SET_ROBUST_LIST from Linaro glibc 2.23
branch.
commit bb8f09d72756186a3d82a1f7b2adcf8bc1fbaed1
Author: Adhemerval Zanella <adhemerval.zanella(a)linaro.org>
Date: Mon May 16 19:01:10 2016 -0300
Remove __ASSUME_SET_ROBUST_LIST
* Backported removal of __ASSUME_FUTEX_LOCK_PI from Linaro glibc 2.23
branch.
commit e48b4e7fed0de06dd7832ead48bea8ebc813a204
Author: Adhemerval Zanella <adhemerval.zanella(a)linaro.org>
Date: Mon May 16 10:35:25 2016 -0300
Remove __ASSUME_FUTEX_LOCK_PI
* Merged latest FSF binutils-2_27-branch into
linaro_binutils-2_27-branch.
* The libwinpthread DLL is now copied into the host bin directory to
satisfy mingw package dependencies.
* Backported GNU Linker fix.
commit fbc6c6763e70cb2376e2de990c7fc54c0ee44a59
Author: Nick Clifton <nickc(a)redhat.com>
Date: Tue Aug 23 09:45:11 2016 +0100
Fix seg-fault in ARM linker when trying to parse a binary file.
* Backported GNU Assembler fix for PR 20364
commit 5fe7ebe5ab43750abf8f490b785d99a1e598e7fd
Author: Nick Clifton <nickc(a)redhat.com>
Date: Fri Aug 5 10:37:57 2016 +0100
Fix the generation of alignment frags in code sections for AArch64.
https://sourceware.org/bugzilla/show_bug.cgi?id=20364
* Performance related backports from Linaro GCC 6.1-2016.06, Linaro GCC
6.1-2016.07, Linaro GCC 6.1-2016.08, Linaro GCC 6.2-2016.09, and
Linaro GCC 6.2-2016.10 have been included.
See the following Linaro GCC snapshots:
http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.1-2016.06/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.1-2016.07/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.1-2016.08/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.2-2016.09/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.2-2016.10/
Contact Linaro
===============
File bugs at http://bugs.linaro.org
For Linaro member support see http://support.linaro.org
For Linaro community support email linaro-toolchain(a)lists.linaro.org
--
Ryan S. Arnold | Linaro Toolchain Engineering Manager
ryan.arnold(a)linaro.org | ryanarn on #linaro-tcwg @ freenode.irc.net
== Progress ==
* [ARM GlobalISel] Use CC support for lowering args/return [TCWG-946] [5/10]
- Sent a patch upstream for extracting some target-independent
functionality from the AArch64 GlobalISel
- Working on lowering i32 args for non-vararg functions (most of the
functionality is ready, currently adding more tests)
* Rewrite llvm-projs in Python [TCWG-833] [2/10]
- Added more tests, brushed it up and sent it for review
* Misc [3/10]
- Meetings, mailing lists
- Rebasing [ARM GlobalISel] Select add instructions [TCWG-925]
- OOO on Monday
== Plan ==
* OOO on Wednesday through Friday
* [ARM GlobalISel] Use CC support for lowering args/return [TCWG-946]
- Brush up patch for more complex lowering of i32 args (vararg)
* Follow up on TCWG-925 and TCWG-833 if necessary
Progress:
[TCWG-940] LLD test failures on libcxx and libcxxabi
- Reported bug upstream. Upstreamed a patch to LLD to add a sentinel
value. This will mean that lld linked executables won't trigger the
bug.
[TCWG-901] Investigate LLD as a system linker on ARM
- All the llvm and lld test failures were down to me forgetting to
initialise a single bitfield member that I'd added. I can now
confidently say lld can link itself and the other llvm executables
from a clean build.
- Closed out the investigation to concentrate on upstreaming my changes.
[TCWG-829] Ifunc support
- ARM does ifunc differently to all the other Targets (uses .got and
.rel.dyn instead of .got.plt and .rel.plt) I have an old downstream
patch that is essentially if (ARM) do this else do that; which is far
too messy.
- LLD has now been refactored a bit to make its linker generated
sections more flexible. I'm currently trying to rework the design to
use these. Not yet found an approach I'm happy with.
Plans:
Upstreaming priority:
[TCWG-829] Ifunc support
[TCWG-828] Static TLS support
I've got downstream patches for these but I need to extend lld and
rewrite them in a more general way to get them accepted upstream.
[TCWG-919] Thunks to undefined symbols, such as when a Shared Object
is dlopened and calls back to the executable (not yet posted
upstream).
Progress:
[TCWG-940] LLD test failures on libcxx and libcxxabi
I think this is a latent bug in libunwind's .ARM.exidx table entry
search that happens to be exposed by lld. Will try and make a
reproducer using ld.bfd and report upstream if I'm correct.
[TCWG-901] Investigate LLD as a system linker on ARM
- Found 6 test failures in libcxxabi and 41 test failures in libcxx
tests. I think these are likely to be all related to TCWG-940
- I cannot build working llvm tools from clean using LLD as the
linker. Everything links but the resulting binaries are unstable,
llvm-tablegen is the first to fall over, giving incorrect results.
Other tools segfault when run on certain inputs.
Much rebasing of downstream patches to account for refactoring.
Refactoring will soon be at a point that I can start rewriting the
downstream patches.
Wrote a python script that can glue together the output of
llvm-objdump, llvm-readobj to give me a better view of the plt, got
and exception tables.
Plans for next week:
- Close out TCWG-940, find out what is wrong that is preventing lld
from linking the llvm-tools.
- Rewrite some of my downstream patches using the refactored framework.
== Progress ==
o Linaro GCC/Validation (4/10)
* Merged FSF GCC 6 branch into Linaro one
* BZ #2575: Revert offending backport
(fix committed in trunk, will re-backport the 2 commits)
* Released Linaro 2016.11 GCC sources
* Deal with validation/infra issues.
o Misc (6/10)
* Lot of meetings and discussions this week.
== Plan ==
o Focus on validation regression plan.
== Progress ==
* Validation
- patches & reviews (jenkins jobs, abe)
- improving abe validation
- abe cleanup
* GCC
- reported a few regressions on trunk
- looked at "fixing" libstdc++ failure reports on arm-none-eabi by
using CXXFLAGS_FOR_TARGET=-fno-threadsafe-statics, works well enough,
but 2 testcases need fixing (wip).
- now using binutils-2.27
* misc (conf-calls, meetings, emails, ....)
== Next ==
* ABE & Jenkins jobs patches reviews and bug fixes
* GCC bug #78253
The Linaro Toolchain Working Group (TCWG) is pleased to announce the
2016.11 snapshot of the Linaro GCC 6 source package.
This monthly snapshot[1] is based on FSF GCC 6.2+svn242371 and
includes performance improvements and bug fixes backported from
mainline GCC. This snapshot contents will be part of the 2017.02
stable[2] quarterly release.
This snapshot tarball is available on:
http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.2-2016.11/
Interesting changes in this GCC source package snapshot include:
* Updates to GCC 6.2+svn242371
* Linaro BZ #2575: Revert backport from trunk r239561.
Subscribe to the important Linaro mailing lists and join our IRC
channels to stay on top of Linaro development.
** Linaro Toolchain Development "mailing list":
http://lists.linaro.org/mailman/listinfo/linaro-toolchain
** Linaro Toolchain IRC channel on irc.freenode.net at @#linaro-tcwg@
* Bug reports should be filed in bugzilla against GCC product:
http://bugs.linaro.org/enter_bug.cgi?product=GCC
* Interested in commercial support? inquire at "Linaro support":
mailto:support@linaro.org
[1]. Source package snapshots are defined when the compiler is only
put through unit-testing and full validation is not performed.
[2]. Stable source package releases are defined as releases where the
full Linaro Toolchain validation plan is executed.
== This Week ==
* PR78319 (2/10)
- After some investigation, it seems issue is with uninit pass rather
than r241915.
- Committed patch to XFAIL the offending test on arm-none-eabi,
after approval from Richard
* PR78154 (2/10)
- Patch iterations based on upstream review.
* PR78153 (2/10)
- Created patch
- Investigating regression for strlenopt-3.c.
* LTO bootstrap error (1/10)
- Trying to reproduce miscompare, but bootstrap fails for me in stage-2 :(
* Public Holiday (2/10)
* Misc (1/10)
- Meetings
== Next Week ==
- Investigate LTO bootstrap issue
- Benchmark single-partition vs balanced partition LTO for section-anchors
- GCC bugs
- ipa-split pass
== Progress ==
* Rewrite llvm-projs in Python [TCWG-833] [2/10]
- Reorganized the repo and sent a draft for review to get early feedback
* [ARM GlobalISel] Select add instructions [TCWG-925] [3/10]
- Patch in upstream review
* [ARM GlobalISel] Use CC support for lowering args/return [TCWG-946] [2/10]
- Started investigating the existing support for lowering arguments
and return values for various calling conventions
* Misc [3/10]
- Meetings, mailing lists, buildbot monitoring
- Provided some backtraces and other info for PR30735 (tests hanging
on Xenial)
- Another round of review on TCWG-783 (worktree support in tcwg-release-tools)
== Plan ==
* [ARM GlobalISel] Use CC support for lowering args/return [TCWG-946]
* [ARM GlobalISel] Select add instructions [TCWG-925]
* Rewrite llvm-projs in Python [TCWG-833]
The Linaro Binary Toolchain
============================
The Linaro GCC 6.2-2016.11-rc2 Release-Candidate is now available.
The GCC 6 Release series has significant changes from the GCC 5
release series. For an explanation of the changes please see the
following website:
https://gcc.gnu.org/gcc-6/changes.html
For help in porting to GCC 6 please see the following explanation:
https://gcc.gnu.org/gcc-6/porting_to.html
Download release-candidate packages from:
http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.2-2016.11-rc2/http://snapshots.linaro.org/components/toolchain/binaries/6.2-2016.11-rc2/
Previous snapshots and release-candidates are at:
http://snapshots.linaro.org/components/toolchain/binaries/
Previous releases are at:
http://releases.linaro.org/components/toolchain/binaries/
Host Requirements
==================
Linaro officially supports the current and previous Ubuntu LTS
releases (as of the time of this release). This does not mean that
the toolchain will not work on other/older Linux distributions. See
the following for the life-time of Ubuntu LTS releases.
https://wiki.ubuntu.com/Releases
The host system upon which the cross-compiler will run requires a
minimum of glibc 2.14, because of API changes to glibc's memcpy API.
https://bugs.linaro.org/show_bug.cgi?id=1869
Package Versions
=================
Linaro GCC 6.2-2016.11-rc2
Linaro glibc 2.23 (linaro/2.23/master)
https://www.sourceware.org/ml/libc-alpha/2016-08/msg00212.html
Linaro newlib 2.4-2016.03 (linaro_2.4-branch)
Linaro binutils 2.27 (linaro_binutils-2_27-branch)
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob_plain;f=bin…
Linaro GDB 7.12 (gdb-7.12-branch)
https://lists.gnu.org/archive/html/info-gnu/2016-10/msg00007.html
Linaro toolchain package git branches are hosted at:
http://git.linaro.org/?a=project_list&s=toolchain%2F&btnS=Search
NEWS for Linaro GCC 6.2-2016.11-rc2
====================================
* Host binaries for x86_64 linux hosts now have symbols and debug
information stripped in order to reduce the size of the toolchain
binary archives. This reduces the archive size from 1.5G to 600M for
aarch64-linux-gnu target with the gcc-6-branch.
https://review.linaro.org/#/c/15504/
* Removed GCC patch for revision 239561 as it was causing an upstream
regression
commit 03850689f4c165e88cec81696d9d722e76a86c85
Author: Yvan Roux <yvan.roux(a)linaro.org>
Date: Wed Nov 9 21:56:21 2016 +0100
Revert backport from trunk r239561.
This reverts commit 11879870dc041028bcb8d078d9ddbd7e400dd03f.
* Updated GDB from GDB 7.11 to GDB 7.12.
* The Linaro GCC 6.2-2016.10 snapshot added AArch32 support for ARMv8.2
and ARMv8m, as well as some AArch64 fixes for ARMv8.2, and bug fixes
merged from FSF GCC 6.2.
* Basic tuning support for the Qualcomm qdf24xx was added to the Linaro
GCC 6.2-2016.10 snapshot and will appear in this release.
* IFUNC was disabled for baremetal targets, as it was causing test-suite
failures, and is presently a Linux only feature.
* The gold linker was added to this binary release.
* Backported malloc_lock fix into Linaro newlib 2.4.
commit 022bd2995640626d9efb6a839884c5e1c7c5e133
Author: Christophe Lyon <christophe.lyon(a)linaro.org>
Date: Wed Oct 19 14:11:50 2016 +0200
Re-enable malloc_lock for newlib-nano
* Backported rawmemchr patch into Linaro newlib 2.4.
commit 5357441171f2409fb759112bc6a00d3e672374d9
Author: Christophe Lyon <christophe.lyon(a)linaro.org>
Date: Wed Oct 19 14:09:51 2016 +0200
Add rawmemchr
* Backported strlen fix when using Thumb-2 and -Os -marm into Linaro
newlib 2.4.
commit f194ff4d5e1e304ac2a8d438d7abcbffd2dba757
Author: Christophe Lyon <christophe.lyon(a)linaro.org>
Date: Wed Oct 19 14:05:23 2016 +0200
Fix strlen using Thumb-2 with -Os -marm
* Backported fix for semihosting ARM when heapinfo not provided by
debugger into Linaro newlib 2.4.
commit bda499cb9d2b97075f74df9bfb38b23ff4d12ac2
Author: Christophe Lyon <christophe.lyon(a)linaro.org>
Date: Wed Oct 19 13:59:52 2016 +0200
Fixed semihosting for ARM when heapinfo not provided by debugger.
* Merged latest FSF glibc release/2.23/master into Linaro glibc 2.23.
* Backported __ASSUME_REQUEUE_PI check Linaro glibc 2.23 branch.
commit 2d20c3bf918cd94ebd4106693adb3a5c9272baba
Author: Adhemerval Zanella <adhemerval.zanella(a)linaro.org>
Date: Tue May 17 10:16:39 2016 -0300
Add runtime check for __ASSUME_REQUEUE_PI (BZ# 18463)
* Backported removal of __ASSUME_SET_ROBUST_LIST from Linaro glibc 2.23
branch.
commit bb8f09d72756186a3d82a1f7b2adcf8bc1fbaed1
Author: Adhemerval Zanella <adhemerval.zanella(a)linaro.org>
Date: Mon May 16 19:01:10 2016 -0300
Remove __ASSUME_SET_ROBUST_LIST
* Backported removal of __ASSUME_FUTEX_LOCK_PI from Linaro glibc 2.23
branch.
commit e48b4e7fed0de06dd7832ead48bea8ebc813a204
Author: Adhemerval Zanella <adhemerval.zanella(a)linaro.org>
Date: Mon May 16 10:35:25 2016 -0300
Remove __ASSUME_FUTEX_LOCK_PI
* Merged latest FSF binutils-2_27-branch into
linaro_binutils-2_27-branch.
* Copy the libwinpthread DLL into the bin directories so it gets into
the tmp directory before tar is run.
* Backported GNU Linker fix.
commit fbc6c6763e70cb2376e2de990c7fc54c0ee44a59
Author: Nick Clifton <nickc(a)redhat.com>
Date: Tue Aug 23 09:45:11 2016 +0100
Fix seg-fault in ARM linker when trying to parse a binary file.
https://review.linaro.org/#/c/13723/
* Backported GNU Assembler fix for PR 20364
commit 5fe7ebe5ab43750abf8f490b785d99a1e598e7fd
Author: Nick Clifton <nickc(a)redhat.com>
Date: Fri Aug 5 10:37:57 2016 +0100
Fix the generation of alignment frags in code sections for AArch64.
https://sourceware.org/bugzilla/show_bug.cgi?id=20364
* Performance related backports from Linaro GCC 6.1-2016.06, Linaro GCC
6.1-2016.07, Linaro GCC 6.1-2016.08, Linaro GCC 6.2-2016.09, and
Linaro GCC 6.2-2016.10 have been included.
See the following Linaro GCC snapshots:
http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.1-2016.06/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.1-2016.07/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.1-2016.08/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.2-2016.09/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.2-2016.10/
Contact Linaro
===============
File bugs at http://bugs.linaro.org
For Linaro member support see http://support.linaro.org
For Linaro community support email linaro-toolchain(a)lists.linaro.org
--
Ryan S. Arnold | Linaro Toolchain Engineering Manager
ryan.arnold(a)linaro.org | ryanarn on #linaro-tcwg @ freenode.irc.net
o 1 day off (2/10)
== Progress ==
o Linaro GCC/Validation (4/10)
* ABE and validation jobs reviews
* Binary tarballs size reduction:
- more tests and investigation (mingw in particular)
- investigating compressed debug sections
* BZ #2575:
- Bugfix proposed upstream by Jakub
- Validate it
o Misc (4/10)
* Various meetings and discussions.
* office network issues
== Plan ==
o Branch merge and snaphsot release
o release binaries size reduction
== This Week ==
* PR35691 (2/10)
- Fix committed to trunk for case when LOGICAL_OP_NON_SHORT_CIRCUIT is true.
- Fixed PR78256, caused by the commit.
* PR78335 (2/10)
- Created patch
* PR35503 (1/10)
- Rebased and committed to trunk after validation
* PR78139 (1/10)
- Caused due to r241915 which fixes PR35691
- Perhaps this is a latent issue in uninit pass triggered by the
commit, but I need to investigate
further to confirm that.
* ipa-split pass (2/10)
- Working on patch to pass variables defined in header block to split
function via arguments.
* Misc (2/10)
- GCC Bugzilla list
- Meetings
== Next Week ==
- Benchmark LTO for section-anchors
- GCC bugs: PR78154, PR78139, PR78335
- ipa-split pass
TCWG-901 Investigate lld as a system linker
- Installed lld as the system linker on my Chromebook and attempted to
build and run things to see what breaks
- Only one unknown concrete problem found so far, thunks to undefined
symbols with PLT entries don't work. This seems to be common in python
C extensions that are dlopened from python, and call back to the
interpreter.
-- I have a downstream fix (TCWG-919), with this fixed the test-suite
can run with lld as the linker through the pip install (SQLAlchemy has
C extensions).
- As thought previously, clang is too big to link without thunks.
- Attempted to make a simple add thunks to all branches to see if I
could get clang to link. Sadly this won't work as lld only permits one
thunk per symbol and this might be out of range of the caller as well.
- Some thoughts and experiments on how much of llvm, compiler-rt,
clang and libc++ can be linked with lld. I'm currently thinking of
altering my lld driver to automatically switch to ld.bfd after a
relocation out of range link error. I want to try and get a lld linked
clang + compiler-rt +libc++ system running.
TCWG-683 lld support for branches to unresolved weak references
- Now upstream
Also:
- A lot of rebasing of downstream patches as some refactoring is going
on to make lld more flexible.
- Some inconclusive investigation into weak reference behaviour in GNU
ld. The ARM and AArch64 ld.bfd linkers will put a dynamic relocation
on a got slot generated by for an unresolved weak reference. The x86
linkers do not, they statically resolve the got slot to 0.
- Some inconclusive investigations into trying to work out what
packages to build to test lld. With the exception of very large
programs ld seems to successfully complete the link for all programs.
Whether it has done so correctly or not is another matter.
-- Currently thinking about whether I can build a BSD make world on a
raspberry pi.
Plans for next week:
- Bring TCWG-901 to a close and work out what to work on next.
== Progress ==
* Rewrite llvm-projs in Python [TCWG-833] [2/10]
- Investigated clitest for testing the scripts
- It seems to be a bit unwieldy for our purposes, so in the end it's
probably a better idea to abuse Python's unittest module even for higher
level tests (they'll be in a different directory though)
* [ARM GlobalISel] Select add instructions [TCWG-925] [6/10]
- Committed a patch upstream with all the plumbing necessary for enabling
GlobalISel for ARM
- Working towards selecting an add instruction on i32 types - currently
have some naive support for lowering arguments and selecting return and
copy instructions
* Misc [2/10]
- Meetings, mailing lists, buildbot monitoring
- Python trainings
== Plan ==
* [ARM GlobalISel] Select add instructions [TCWG-925]
- Brush it up and send it upstream
* Rewrite llvm-projs in Python [TCWG-833]
- Start a discussion on the interface / repo layout etc
# Progress #
* TCWG-547. Change software_single_step interface to return a vector of address
Patches are pushed in. Done. [1/10]
* TCWG-923, Use regcache instead of frame in software_single_step. [3/10]
Patches are finished. Tests are needed.
* TCWG-333, Fix gdb.base/func-ptrs.exp fails in thumb mode. [4/10]
Clean up val_print, remove one redundant parameter. Patches are
committed.
Deep diving in the gdb value objects. Much cleanup work should be
done first. Ongoing.
* More patches review, [2/10]
** C++ 11 patches, and learn C++ 11 in parallel,
** Review arm tracepoint patches. Insist that they (Ericsson) have to
fix underlining bugs (intermittent fails) before getting patches
in,
** Discuss on MIPS reconfigurable FP registers. Proposed two ways in
public gdb mail list, MIPS people think the first one is a little
better
** Hold Intel's fortran patch until a bug we found in gfortran is
confirmed.
# Plan #
* TCWG-923,
* Training from Tue to Friday.
--
Yao Qi
o 1 day off (2/10)
== Progress ==
o Linaro GCC/Validation (3/10)
* ABE and validation jobs reviews
* Binary tarballs size reduction:
- testing patch
* BZ #2575:
- Investigate and open bug upstream (PR78201)
- Testing current fix and investigating bugzilla feedbacks
o Misc (3/10)
* Various meetings and discussions.
== Plan ==
o Continue on tarball size reduction and BZ
== This Week ==
* ipa mod/ref analysis (2/10)
- Prototype patch now detects modifications to reference parameters
- Working on mod/ref analysis of global variables.
* PR35691 (2/10)
- Patch iterations based on upstream review
* PR35503 (2/10)
- Patch approved by Jason
- Building kernel with patch resulted in two warnings.
* Public Holidays (4/10)
== Next Week ==
- IPA mod/ref prototype
- Bugs
-- Activity --
[TCWG-683] Branch to undefined weak on aarch64 and arm
Fix in upstream review, looks pretty close to being accepted.
[TCWG-828] TLS support for static linking
In upstream review but no comments as yet
[TCWG-829] IFunc support
In upstream review, but will probably need to be rewritten after some
upstream refactoring has finished
[TCWG-911] eglibc requires a SHT_ARM_ATTRIBUTES section for dlopen to work
I have a quick hack to work round this on my Chromebook but a full fix
will take some time as lld doesn't understand build attributes right
now.
[TCWG-901] Investigate lld as a system linker
With downstream fixes, using lld as the system linker on a Chromebook I can :
- Build llvm, lld and run the regression tests successfully
- Use lld as the linker in the lnt tests successfully
- Using lld to build the shared objects used by lnt's python C
extensions was less successful. I have some interesting debugging to
do.
-- Plan --
Debug the python extension problems
Respond to upstream review comments
More use of lld as system linker
== Progress ==
* [ARM] Investigate switching from itineraries to schedule models
[TCWG-824] [4/10]
- Looked at the sched model as well as the old instruction itinerary
interfaces
- There aren't many tests that are specifically testing the scheduler,
but lots of tests break if you make enough changes to it (it's unclear
which of these are breaking intentionally and which are just poorly written)
- First step is probably to try and complete the sched model (TCWG-543),
then hunt down any differences between what we get using itineraries and
what we get with the new model
* Rewrite llvm-projs in Python [TCWG-833] [3/10]
- Reorganized the repo so we can have a separate tests directory
- Added support for parsing command line options
- Almost ready for review
* Misc [2/10]
- Catching up after vacation
- LLVM GitHub move survey
== Plan ==
* Wrap up TCWG-833
* Migrate scripts to Python 3 (TCWG-896)
* Maybe start TCWG-543 as the first step in TCWG-824
# Progress #
* TCWG-547, Change software_single_step interface to return a vector
of address. [3/10]
Patches are reviewed. V2 are posted and committed. Follow-up
patches are being tested.
* TCWG-333, Fix gdb.base/func-ptrs.exp fails in thumb mode. [3/10]
Clean up val_print, remove one redundant parameter. Patches are
being tested.
* Maintain upstream GDB, patches review, [2/10]
* OpenOCD. [2/10] Various IRC chats with maintainer about
** multi-thread support in RTOS, and multi-thread debugging,
** Release 0.10.0 and aarch64 patches merging,
** Understand aarch64 OpenOCD reads DSPSR (32-bit), so don't have to
update GDB target description now.
* Short chat with Peter Griffin on thread ids in linux-kthread.
# Plan #
TCWG-547, TCWG-333.
--
Yao Qi
# Progress #
* Fix GDBserver build on aarch64_be. [1/10]
Done. Patch is pushed in to master and 7.12 branch.
* TCWG-333, Fix gdb.base/func-ptrs.exp fails in thumb mode. [4/10]
Get anther patch and fix all regressions. In the discussion
with ppc64 and mips people on my approach.
* TCWG-518, Range stepping in arm-linux. Done. [1/10]
After pending for several months, patches are approved. Pushed
them in!
* Reproduce the GCC dwarf generation regression. [1/10]
Reported to GCC and Jakub fixed it.
* Sort out the license issue of new OCaml debugging support in gdb.
Help to clarify a little bit. [1/10]
* Discuss with OpenOCD people on supporting thread awareness for
RTOS. [1/10]
* Misc, meeting. [1/10]
# Plan #
* TCWG-333, TCWG-547
* Add new aarch64 target description for 64-bit xPSR.
--
Yao Qi
o 2 days off (4/10)
== Progress ==
o Linaro GCC/Validation (4/10)
* ABE and validation jobs reviews
* Investigating binary tarballs size reduction
o Misc (2/10)
* Various meetings and discussions.
== Plan ==
o Continue on validation
o Complete 4.9 branch merge
* TCWG-72 (2/10)
- Committed to trunk finally!
* ipa mod/ref analysis (6/10)
- Prototype in progress based on Muchnik's text
* Misc (2/10)
- Committed a trivial patch to use VAR_P in arm.c.
- Background reading on paper about virtual-ssa.
- Meetings
== Next Week ==
- Continue with mod/ref analysis
- TCWG-319
- Ping patch for GCC PR35503.
# Progress #
TCWG-845 Static linking missing linker defined symbols
- Now upstream
TCWG-829 Support for ifunc
- Patch sent upstream for review, no feedback yet. This is a bit messy
as ARM is different to other architectures so I expect this to need
reworking several times.
TCWG-828 Static linking and TLS
- Downstream patch implemented and tested, will send upstream after ifunc
TCWG-683 Support for branches to undefined weak references
- Downstream patch implemented and tested
Other:
- Downloaded and built Mozilla and Chromium so I can use them as
performance tests for lld (initially for x86_64).
- Wrote some scripts to make using lld in place of gnu ld a bit more convenient.
# Plan #
- Upstream static linking changes
- Work some infrastructure to test lld more widely on ARM.
o 2 days off (4/10)
== Progress ==
o Linaro GCC/Validation (4/10)
* Completed GCC 5 and 6 branch merges
* Released source 2016.10 snapshots
o Upstream GCC (1/10)
* Investigate PR #78020 (vzip, vuzp implementation).
o Misc (1/10)
* Various meetings and discussions.
== Plan ==
o Two more days off
o Back on 4.9 branch merge and validation.
The Linaro Binary Toolchain
============================
The Linaro GCC 6.2-2016.11-rc1 Release-Candidate is now available.
The GCC 6 Release series has significant changes from the GCC 5
release series. For an explanation of the changes please see the
following website:
https://gcc.gnu.org/gcc-6/changes.html
For help in porting to GCC 6 please see the following explanation:
https://gcc.gnu.org/gcc-6/porting_to.html
Download release-candidate packages from:
http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.2-2016.11-rc1/http://snapshots.linaro.org/components/toolchain/binaries/6.2-2016.11-rc1/
Previous snapshots and release-candidates are at:
http://snapshots.linaro.org/components/toolchain/binaries/
Previous releases are at:
http://releases.linaro.org/components/toolchain/binaries/
Host Requirements
==================
Linaro officially supports the current and previous Ubuntu LTS
releases (as of the time of this release). This does not mean that
the toolchain will not work on other/older Linux distributions. See
the following for the life-time of Ubuntu LTS releases.
https://wiki.ubuntu.com/Releases
The host system upon which the cross-compiler will run requires a
minimum of glibc 2.14, because of API changes to glibc's memcpy API.
https://bugs.linaro.org/show_bug.cgi?id=1869
Package Versions
=================
Linaro GCC 6.2-2016.11-rc1
Linaro glibc 2.23 (linaro/2.23/master)
https://www.sourceware.org/ml/libc-alpha/2016-08/msg00212.html
Linaro newlib 2.4-2016.03 (linaro_2.4-branch)
Linaro binutils 2.27 (linaro_binutils-2_27-branch)
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob_plain;f=bin…
Linaro GDB 7.12 (gdb-7.12-branch)
https://sourceware.org/ml/gdb/2016-08/msg00000.html
Linaro toolchain package git branches are hosted at:
http://git.linaro.org/?a=project_list&s=toolchain%2F&btnS=Search
NEWS for Linaro GCC 6.2-2016.11-rc1
====================================
* The Linaro GCC 6.2-2016.10 snapshot added AArch32 support for ARMv8.2
and ARMv8m, as well as some AArch64 fixes for ARMv8.2, and bug fixes
merged from FSF GCC 6.2.
* Basic tuning support for the Qualcomm qdf24xx was added to the Linaro
GCC 6.2-2016.10 snapshot and will appear in this release.
* IFUNC was disabled for baremetal targets, as it was causing test-suite
failures, and is presently a Linux only feature.
* The gold linker was also added to this binary releases (for linux
targets).
* Backported malloc_lock fix into Linaro newlib 2.4.
commit 022bd2995640626d9efb6a839884c5e1c7c5e133
Author: Christophe Lyon <christophe.lyon(a)linaro.org>
Date: Wed Oct 19 14:11:50 2016 +0200
Re-enable malloc_lock for newlib-nano
* Backported rawmemchr patch into Linaro newlib 2.4.
commit 5357441171f2409fb759112bc6a00d3e672374d9
Author: Christophe Lyon <christophe.lyon(a)linaro.org>
Date: Wed Oct 19 14:09:51 2016 +0200
Add rawmemchr
* Backported strlen fix when using Thumb-2 and -Os -marm into Linaro
newlib 2.4.
commit f194ff4d5e1e304ac2a8d438d7abcbffd2dba757
Author: Christophe Lyon <christophe.lyon(a)linaro.org>
Date: Wed Oct 19 14:05:23 2016 +0200
Fix strlen using Thumb-2 with -Os -marm
* Backported fix for semihosting ARM when heapinfo not provided by
debugger into Linaro newlib 2.4.
commit bda499cb9d2b97075f74df9bfb38b23ff4d12ac2
Author: Christophe Lyon <christophe.lyon(a)linaro.org>
Date: Wed Oct 19 13:59:52 2016 +0200
Fixed semihosting for ARM when heapinfo not provided by debugger.
* Merged latest FSF glibc release/2.23/master into Linaro glibc 2.23.
* Added __ASSUME_REQUEUE_PI support to Linaro glibc 2.23 branch.
commit 2d20c3bf918cd94ebd4106693adb3a5c9272baba
Author: Adhemerval Zanella <adhemerval.zanella(a)linaro.org>
Date: Tue May 17 10:16:39 2016 -0300
Add runtime check for __ASSUME_REQUEUE_PI (BZ# 18463)
* Added __ASSUME_SET_ROBUST_LIST support to Linaro glibc 2.23 branch.
commit bb8f09d72756186a3d82a1f7b2adcf8bc1fbaed1
Author: Adhemerval Zanella <adhemerval.zanella(a)linaro.org>
Date: Mon May 16 19:01:10 2016 -0300
Remove __ASSUME_SET_ROBUST_LIST
* Added __ASSUME_FUTEX_LOCK_PI support to Linaro glibc 2.23 branch.
commit e48b4e7fed0de06dd7832ead48bea8ebc813a204
Author: Adhemerval Zanella <adhemerval.zanella(a)linaro.org>
Date: Mon May 16 10:35:25 2016 -0300
Remove __ASSUME_FUTEX_LOCK_PI
* Merged latest FSF binutils-2_27-branch into
linaro_binutils-2_27-branch.
* Include GNU Linker fix.
commit fbc6c6763e70cb2376e2de990c7fc54c0ee44a59
Author: Nick Clifton <nickc(a)redhat.com>
Date: Tue Aug 23 09:45:11 2016 +0100
Fix seg-fault in ARM linker when trying to parse a binary file.
* Copy the libwinpthread DLL into the bin directories so it gets into
the tmp directory before tar is run.
https://review.linaro.org/#/c/13723/
* Include GNU Assembler fix for PR 20364
commit 5fe7ebe5ab43750abf8f490b785d99a1e598e7fd
Author: Nick Clifton <nickc(a)redhat.com>
Date: Fri Aug 5 10:37:57 2016 +0100
Fix the generation of alignment frags in code sections for AArch64.
https://sourceware.org/bugzilla/show_bug.cgi?id=20364
* Performance related backports from Linaro GCC 6.1-2016.06, Linaro GCC
6.1-2016.07, Linaro GCC 6.1-2016.08, Linaro GCC 6.2-2016.09, and
Linaro GCC 6.2-2016.10 have been included.
See the following Linaro GCC snapshots:
http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.1-2016.06/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.1-2016.07/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.1-2016.08/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.2-2016.09/http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.2-2016.10/
Contact Linaro
===============
File bugs at http://bugs.linaro.org
For Linaro member support see http://support.linaro.org
--
Ryan S. Arnold | Linaro Toolchain Engineering Manager
ryan.arnold(a)linaro.org | ryanarn on #linaro-tcwg @ freenode.irc.net
== Progress ==
LTO/IPA
- Committed propagation of nonnull attribute and optimizations
- Committed patch to infer noonull from ADDR_EXPR
- Working on a patch to improve ipa-cp unary expressions pass
through jump-function
* LTO bootstrap is failing in streaming but normal bootstrap working
* Looking into it
== Next ==
- Commit pending patches
- Start LTO benchmarking and analysis
== This Week ==
* TCWG-72 (2/10)
- Updated patch based on Jeff's suggestions.
* Folding optimizations (2/10)
a) PR53979 - fix committed to trunk
b) PR71636 - fix committed to trunk
* TCWG-665 (2/10)
- Rebased patch and done few modifications
- Trying to look for a better solution to workaround a memory leak
issue with patch
with -ffat-lto-objects
* PR35503 (1/10)
- Rebased patch on top of Marek's changes to c-common.c and pinged upstream.
* Validation (1/10)
- Added spec2k and spec2k6 to tcwg-buildapp
- Fixed abe bug 1439
* Misc (2/10)
- Reading up on mod/ref analysis.
- Meetings
== Next Week ==
- TCWG-72, TCWG-665, TCWG-125
- Look into changing user to "benchmark" for tcwg-buildapp job.
== Progress ==
TCWG-610 ARM Exceptions support
Now fully committed upstream. We should now have support for
exceptions in Shared Objects and Executables.
I've diagnosed problems when static linking after staring at a
disassembly for most of a day. With some hacks I've managed to get a
static link working using a recent Linaro sysroot. Next task is to
resolve these in a more principled way.
TCWG-845 Static linking missing linker defined symbols
- lld doesn't use a built in linker script so we need to add in
symbols that libc.a is expecting the default linker script to
generate.
- lld is defining __tls_get_addr as it expects all TLS to be relaxed,
this isn't the case for ARM or Mips so we need to not define it.
TCWG-829 Support for ifunc
For some annoying reason that I can't work out why, ARM requires the
R_ARM_IRELATIVE relocations to be in the .rel.dyn and not .rel.plt
like all the other targets that lld supports including AArch64
TCWG-828 Static linking and TLS
When static linking the TLS dynamic relocations in the .got must be
resolved statically.
- The other architectures that lld supports have the thread control
block (tcb) after the data so the initial-exec relocations don't need
to add the tcb size to the value put into the .got.
- The module index dynamic relocation needs to be 1 and not 0 (LLD
assumes general dynamic is relaxed away at static link-time).
TCWG-683 Support for branches to undefined weak references
LLD doesn't resolve these to the next instruction so they just hang at runtime.
Some feedback and review for Linaro LLVM team processes.
== Plans ==
Work out a proper solution for TCWG-828 then start upstreaming.
TCWG-683 can be worked around by providing an empty definition of the
function, all the others need to be fixed to get a static libc to
link.
# Progress #
* TCWG-333, Fix gdb.base/func-ptrs.exp fails in thumb mode. [4/10]
Get review comments and suggestions. Tried to do what they suggested,
but it doesn't work well due to some reasons. Preparing the the reply to
address their comments.
* TCWG-416, Improve GDB performance in remote debugging. [2/10]
Patches for ARM and AArch64 are ready. Need to measure the
performance improvement.
* OpenOCD. [2/10]
Chat with people working on AArch64 support on irc. Help him
understanding GDB and GDB remote protocol. Patches are there, but
need to figure out how to help to get these patches merged.
* Misc, [2/10]
Meeting, and various discussions.
# Plan #
* Continue all above.
--
Yao Qi