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

Reply via email to