On Sun, Jan 28, 2024 at 02:07:33PM +0000, Iain Sandoe wrote: > In order to handle system security constraints during GCC build > and test and that most platform versions cannot link to libgcc_eh > since the unwinder there is incompatible with the system one. > > 1. We make the support functions weak definitions. > 2. We include them as a CRT for platform conditions that do not > allow libgcc_eh. > 3. We ensure that the weak symbols are exported from DSOs (which > includes exes on Darwin) so that the dynamic linker will > pick one instance (which avoids duplication of trampoline > caches). > > PR libgcc/113403 > > gcc/ChangeLog: > > * config/darwin.h (DARWIN_SHARED_WEAK_ADDS, DARWIN_WEAK_CRTS): New. > (REAL_LIBGCC_SPEC): Move weak CRT handling to separate spec. > * config/i386/darwin.h (DARWIN_HEAP_T_LIB): New. > * config/i386/darwin32-biarch.h (DARWIN_HEAP_T_LIB): New. > * config/i386/darwin64-biarch.h (DARWIN_HEAP_T_LIB): New. > * config/rs6000/darwin.h (DARWIN_HEAP_T_LIB): New. > > libgcc/ChangeLog: > > * config.host: Build libheap_t.a for i686/x86_64 Darwin. > * config/aarch64/heap-trampoline.c (HEAP_T_ATTR): New. > (allocate_tramp_ctrl): Allow a target to build this as a weak def. > (__gcc_nested_func_ptr_created): Likewise. > * config/i386/heap-trampoline.c (HEAP_T_ATTR): New. > (allocate_tramp_ctrl): Allow a target to build this as a weak def. > (__gcc_nested_func_ptr_created): Likewise. > * config/t-darwin: Build libheap_t.a (a CRT with heap trampoline > support).
The non-darwin parts here (config.host, heap-trampoline.c) here are ok, I don't know anything about Darwin to judge the rest and you're the maintainer... Jakub