Achievements:
Some progress on Range Thunks. [TCWG-614] - I have all the enabling patches that allow assignAddresses() to be run multiple times committed. - Need review for the actual range thunks implementation itself.
Compiler-rt [TCWG-1156] - Clang (as opposed to llvm) is assuming that all builtins for ARM are mandated to have a soft-float interface. I have a tentative patch but need to test it a bit more first. - Found out a bit more about the structure of how compiler-rt, and why it behaves differently when I use the default target and auto-detection of toolkit as opposed to supplying the target via options. -- There is quite a bit of hidden magic and hacks going on in the default case, some of it I don't think is quite right. For example Compiler-rt seems to conflate architecture with abi.
Set myself the task of getting compiler-rt tests running on v6-m with testing on qemu. - v6-m is the only auto-detected default target that I haven't been able to reproduce results on. - A review claimed that tests had been run on qemu, and I'm now trying to work out how to reproduce this with clang and an arm-none-eabi sysroot. -- Not having a lot of luck so far, latest qemu only supports emulation of 2 cortex-m3 dev-boards and I have yet to make a standalone program that works [*] -- I'm not looking forward to plumbing in the options to make the arm-none-eabi testing work.
[*] I thought I would try semi-hosting first, but it turns out the default semihosting startup code supplied with arm-none-eabi replaces my heap and stack locations with a semi-hosting call to get top of memory which qemu gives an inappropriate result for a dev-board emulation with non contiguous memory. Would like to see if I can get this working via a quick experiment to rewrite the start-up code, although for the full tests I may fall back to retargeting the IO via an emulated serial port.
Plans: - First priority is range thunks for lld - Second priority is getting a v6m test of compiler-rt to check for any latent problems - Submit clang patch when I know it works for all the supported platforms - Look into v7-m support, particularly v7-m + single precision floating point.