https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116021
Bug ID: 116021 Summary: Ada build on Darwin: gen_il-main: Symbol not found: ___builtin_nested_func_ptr_created Product: gcc Version: 15.0 Status: UNCONFIRMED Keywords: build Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: egallager at gcc dot gnu.org CC: iains at gcc dot gnu.org Target Milestone: --- I was trying to figure this out with Iain on IRC the other day, but we never managed to solve it, so I'm putting it here so it doesn't get lost: Lately (as of r15-1899-g2b3027bea3f218) when I've been trying to build GCC with Ada, I've been getting errors like the following: mkdir -p ada/gen_il cd ada/gen_il; gnatmake -q -g -gnata -gnat2012 -gnatw.g -gnatyg -gnatU -I/Users/ericgallager/gcc_newgit/gcc/ada gen_il-main # Ignore errors to work around finalization issues in older compilers cd ada/gen_il; ./gen_il-main dyld: lazy symbol binding failed: Symbol not found: ___builtin_nested_func_ptr_created Referenced from: /Users/ericgallager/gcc_newgit/abcdefghijklmnopqrstuvwxyz_01234567890.build/gcc/ada/gen_il/./gen_il-main Expected in: /Users/ericgallager/gcc_newgit/abcdefghijklmnopqrstuvwxyz_01234567890.build/./prev-gcc/libgcc_s.1.1.dylib dyld: Symbol not found: ___builtin_nested_func_ptr_created Referenced from: /Users/ericgallager/gcc_newgit/abcdefghijklmnopqrstuvwxyz_01234567890.build/gcc/ada/gen_il/./gen_il-main Expected in: /Users/ericgallager/gcc_newgit/abcdefghijklmnopqrstuvwxyz_01234567890.build/./prev-gcc/libgcc_s.1.1.dylib raised PROGRAM_ERROR : unhandled signal make[3]: [ada/stamp-gen_il] Error 1 (ignored) /Users/ericgallager/gcc_newgit/gcc/../move-if-change ada/gen_il/seinfo_tables.ads ada/seinfo_tables.ads mv: rename ada/gen_il/seinfo_tables.ads to ada/seinfo_tables.ads: No such file or directory make[3]: *** [ada/stamp-gen_il] Error 1 make[2]: *** [all-stage2-gcc] Error 2 make[1]: *** [stage2-bubble] Error 2 make: *** [all] Error 2 Apparently __builtin_nested_func_ptr_created has been renamed to __gcc_nested_func_ptr_created in recent revisions, so I don't get why the build process is still looking for the old name? Here's what shows up when I search the repo for the common part shared between those strings: $ git grep _nested_func_ptr_created gcc/ChangeLog: rename the library fallbacks to __gcc_nested_func_ptr_created and gcc/ChangeLog: * doc/invoke.texi: Rename these to __gcc_nested_func_ptr_created gcc/builtins.def:DEF_EXT_LIB_BUILTIN (BUILT_IN_GCC_NESTED_PTR_CREATED, "__gcc_nested_func_ptr_created", BT_FN_VOID_PTR_PTR_PTR, ATTR_NOTHROW_LIST) gcc/config/darwin.h: -U ___gcc_nested_func_ptr_created \ gcc/config/darwin.h: -exported_symbol ___gcc_nested_func_ptr_created \ gcc/doc/invoke.texi:@code{__gcc_nested_func_ptr_created} and gcc/tree.cc: local_define_builtin ("__builtin___gcc_nested_func_ptr_created", ftype, gcc/tree.cc: "__gcc_nested_func_ptr_created", ECF_NOTHROW); libgcc/ChangeLog: (__gcc_nested_func_ptr_created): Implement a basic trampoline libgcc/ChangeLog: * libgcc2.h (__gcc_nested_func_ptr_created): Change type of last libgcc/ChangeLog: * config/i386/heap-trampoline.c (__gcc_nested_func_ptr_created): libgcc/ChangeLog: * config/aarch64/heap-trampoline.c (__gcc_nested_func_ptr_created): libgcc/ChangeLog: (__gcc_nested_func_ptr_created): Likewise. libgcc/ChangeLog: (__gcc_nested_func_ptr_created): Likewise. libgcc/ChangeLog: __builtin_nested_func_ptr_created to __gcc_nested_func_ptr_created and libgcc/ChangeLog: __gcc_nested_func_ptr_created and libgcc/ChangeLog: * libgcc2.h (__builtin_nested_func_ptr_created): Declare. libgcc/config/aarch64/heap-trampoline.c:void __gcc_nested_func_ptr_created (void *chain, void *func, void *dst); libgcc/config/aarch64/heap-trampoline.c:__gcc_nested_func_ptr_created (void *chain, void *func, void *dst) libgcc/config/i386/heap-trampoline.c:void __gcc_nested_func_ptr_created (void *chain, void *func, void *dst); libgcc/config/i386/heap-trampoline.c:__gcc_nested_func_ptr_created (void *chain, void *func, void *dst) libgcc/libgcc-std.ver.in: __gcc_nested_func_ptr_created libgcc/libgcc2.h:extern void __gcc_nested_func_ptr_created (void *, void *, void *); $ So, none of the Ada source files used to build gen_il-main contain references to it... I'm wondering if it might be due to the version of gnatmake I'm using to bootstrap? Here's its version info: $ /usr/local/bin/gnatmake --version GNATMAKE 14.0.0 20231204 (experimental) [master 2fde54ad7be] Copyright (C) 1995-2023, Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ (and yes, I've already tried seeing if this might be due to a configure flag I was using, but it happens no matter the combination of configure flags that I try...) Perhaps related to bug 106487? Except I'm on x86_64...