This includes initial support for the (hopefully final) updated Objective-C ABI, developed here:
https://github.com/davidchisnall/clang-gnustep-abi-2
It also includes some cleanups and refactoring from older GNU ABIs.
This is not yet in a state that's ready to commit (for example, it's currently ELF-only, but doesn't include driver changes to downgrade to the 1.x ABI for non-ELF targets until other binary formats are supported), but it's probably in a state where it could benefit from review.
While we're here, is there value in storing the ivar size in layout as well, so that the runtime doesn't need to calculate it from the distance to the next ivar/end of the instance?