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).