Every C++ module had its own exception tag (from the C++ archives), so
an exception thrown in a library was a different one in the program and
went uncaught, and a program with a try block did not link against a
C++ library at all: the library's exported landing-pad context is
thread-local only in its own module.
The tag is now libc.so's, imported by every shared module like setjmp's
(a static program links it from libgexcc_eh.a), and libunwind comes
ahead of the side modules so each module's landing pads use its own
context.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_40f26e8988a74ea098d8bc80ff68287c