[libcxx-commits] [PATCH] D72543: [libcxxabi] Insert padding in __cxa_exception struct for compatibility

John McCall via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Mon Jan 13 12:46:51 PST 2020


rjmccall added a comment.

In D72543#1817753 <https://reviews.llvm.org/D72543#1817753>, @compnerd wrote:

> Do we need to worry about compatibility?  What happens if there is a mix between an old binary and a new binary?


To be clear, `libUnwind` accidentally introduced an ABI break by changing the alignment of `_Unwind_Exception` without making sure that layout didn't change in client code.  So there's actually *three* eras here: old, intermediate, and new.  The old and new ABIs agree in layout except about `sizeof cxa*exception`, which is not intended to be stable for code outside of the C++ runtime library, so the problem is just with code that might be have compiled with the intermediate code.

On Darwin, we happened to not have picked up a new `libUnwind` since the intermediate era began.  (And as soon as we did, we ran into the ABI compatibility problem.)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D72543/new/

https://reviews.llvm.org/D72543





More information about the libcxx-commits mailing list