[Activity]
[TCWG-1384] - Implemented missing TLS LE relocations in LLD - Found out while testing that LLVM had the range check in locally resoloved fixups for Thumb2 BL wrong, and was not range checking B.w or Bcc.W at all. Patches submitted for review.
[LLD] - Submitted extra test cases to improve code-coverage - Arm LLD 2 stage build-bot including test suite now configured (thanks Maxim!), will be active upstream soon. - Started to think about how ICF could be implemented in clang -- Should be able to make a prototype using clang libtooling
[TCWG-1236] - Added aarch64 emulation used by Android to LLD - Tried and failed to get Android to boot when using LLD, narrowed down the number of modules that could be problematic but I think that the main symptom is dlopen failing on some modules. - Found that Google have added LLD support to the Android build system with a very slightly tweaked version of LLD. This will successfully boot Android. The main differences are: -- Google's LLD is a few weeks behind trunk. -- They have reverted a couple of patches that add undefined symbols from Shared Objects and allow these to resolve against static libraries. These patches are correct and I think it is just exposing some library dependency problems in Android. -- They are setting -zmax-page-size to 4K on AArch64, LLD defaults to 64K. --- Android dynamic linker does use 4K page size, but Gold still seems to use a 64K max page size and I can't see why overaligning would cause problems. -- A handful of modules have LLD disabled.
[Plans] - Investigate differences in trunk and Google Android LLD to see if I can pinpoint why trunk is failing to boot Android. - Start to build a prototype with libtooling that records when the address of a function/member-function/lambda is taken.
linaro-toolchain@lists.linaro.org