Progress
- Long range thunks Made some more progress on the refactoring needed to merge the representations for the script and non-script cases. Close to getting the .ARM.exidx sections converted. - Some thoughts on https://reviews.llvm.org/D33436 to do with ARM/Thumb interworking in the assembler. -- Discovered that gold and lld get the case of a relocation to a Thumb non STT_FUNC symbol with bit 0 clear wrong. Both linkers attempt to interwork (they shouldn't as the symbol is not STT_FUNC) but identify the symbol as ARM due to bit 0 being clear. Luckily these are corner cases only brought up by hand-written assembler.
- Investigation into https://bugs.llvm.org/show_bug.cgi?id=33136 libc++ failing ~100 tests with std::bad_cast exception when built in release mode (clean upstream build uses debug). -- Reduced failing test to std::cout << std::endl; the std::bad_cast comes from an out of range index into a vector of available locales. -- Current thought is that this could be a codegen bug as I can only reproduce in Release (-O3) and not RelWithDebInfo (-O2).
Plans for next week: - Long range thunks Make more progress on refactoring. Should get .ARM.exidx patches upstream, next step to convert long range thunks themselves. - Work on diagnosing PR33136.