== 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