From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1698) id 889CC384AB7E; Fri, 19 Apr 2024 13:16:00 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 889CC384AB7E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1713532560; bh=yU6Y3WWEF/FEpEo4kNKvzis9k1H2adNFwtn/5YKJVD0=; h=From:To:Subject:Date:From; b=fT8NbhTsodpq6Co8yto6f8E/b6QATvXpUlw6JprP68qdtz+cGsAxazAzDcrL+Jlip g6uRjGeMBF6WXEFFyGw9J1qpaCXgbR93kq8a/rk++KX7G2QtgbLu3D7ghWbajEUznq K0Kz+UkIgqRL3sP4cSRz+CWR/9uvi6C2gzElHvlg= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Iain D Sandoe To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-10351] Darwin: Correct handling of weak crts. X-Act-Checkin: gcc X-Git-Author: Iain Sandoe X-Git-Refname: refs/heads/releases/gcc-12 X-Git-Oldrev: 877d87416656cbd8bf21676e6f54865583aa03c8 X-Git-Newrev: f1ef7143fba7e09ec10a60227ebb46eb5d6553f9 Message-Id: <20240419131600.889CC384AB7E@sourceware.org> Date: Fri, 19 Apr 2024 13:16:00 +0000 (GMT) List-Id: https://gcc.gnu.org/g:f1ef7143fba7e09ec10a60227ebb46eb5d6553f9 commit r12-10351-gf1ef7143fba7e09ec10a60227ebb46eb5d6553f9 Author: Iain Sandoe Date: Thu Mar 21 14:34:44 2024 +0000 Darwin: Correct handling of weak crts. Backport part of 506e74f53a5 from trunk. We need the weak crts to be considered ahead of GCC target libraries (except libgcc_s) to avoid spurious dependencies on otherwise unused libs. gcc/ChangeLog: * config/darwin.h (LINK_COMMAND_SPEC_A): Handle weak crts before other objects. (REAL_LIBGCC_SPEC): Remove weak crts from here. (DARWIN_WEAK_CRTS): New. Signed-off-by: Iain Sandoe Diff: --- gcc/config/darwin.h | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index 0f17932440f..6b124601274 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -367,7 +367,9 @@ extern GTY(()) int darwin_ms_struct; %{e*} %{r} \ %{o*}%{!o:-o a.out} \ %{!r:%{!nostdlib:%{!nostartfiles:%S}}} \ - %{L*} %(link_libgcc) %o \ + %{L*} %(link_libgcc) \ + %{!r:%{!nostdlib:%{!nodefaultlibs: " DARWIN_WEAK_CRTS "}}} \ + %o \ %{!r:%{!nostdlib:%{!nodefaultlibs:\ %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} \ %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1): \ @@ -381,15 +383,15 @@ extern GTY(()) int darwin_ms_struct; %(link_ssp) \ %:version-compare(>< 10.6 10.7 mmacosx-version-min= -ld10-uwfef) \ %(link_gcc_c_sequence) \ - %{!nodefaultexport:%{dylib|dynamiclib|bundle: \ - %:version-compare(>= 10.11 asm_macosx_version_min= -U) \ - %:version-compare(>= 10.11 asm_macosx_version_min= ___emutls_get_address) \ - %:version-compare(>= 10.11 asm_macosx_version_min= -exported_symbol) \ - %:version-compare(>= 10.11 asm_macosx_version_min= ___emutls_get_address) \ - %:version-compare(>= 10.11 asm_macosx_version_min= -U) \ - %:version-compare(>= 10.11 asm_macosx_version_min= ___emutls_register_common) \ - %:version-compare(>= 10.11 asm_macosx_version_min= -exported_symbol) \ - %:version-compare(>= 10.11 asm_macosx_version_min= ___emutls_register_common) \ + %{!nodefaultexport: \ + %{%:version-compare(>= 10.11 asm_macosx_version_min= -U): \ + ___emutls_get_address -exported_symbol ___emutls_get_address \ + -U ___emutls_register_common \ + -exported_symbol ___emutls_register_common \ + -U ___gcc_nested_func_ptr_created \ + -exported_symbol ___gcc_nested_func_ptr_created \ + -U ___gcc_nested_func_ptr_deleted \ + -exported_symbol ___gcc_nested_func_ptr_deleted \ }} \ }}}\ %{!r:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} %{F*} "\ @@ -515,17 +517,22 @@ extern GTY(()) int darwin_ms_struct; #undef REAL_LIBGCC_SPEC #define REAL_LIBGCC_SPEC \ "%{static-libgcc|static: \ - %:version-compare(!> 10.6 mmacosx-version-min= -lgcc_eh) \ - %:version-compare(>= 10.6 mmacosx-version-min= -lemutls_w); \ + %:version-compare(!> 10.6 mmacosx-version-min= -lgcc_eh); \ shared-libgcc|fexceptions|fobjc-exceptions|fgnu-runtime: \ %:version-compare(!> 10.11 mmacosx-version-min= -lgcc_s.1.1) \ - %:version-compare(>= 10.11 mmacosx-version-min= -lemutls_w) \ %:version-compare(!> 10.3.9 mmacosx-version-min= -lgcc_eh) \ %:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \ - %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5); \ - : -lemutls_w \ + %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ } -lgcc " +#define DARWIN_WEAK_CRTS \ +"%{static-libgcc|static: \ + %:version-compare(>= 10.6 mmacosx-version-min= -lemutls_w) ; \ + shared-libgcc|fexceptions|fobjc-exceptions|fgnu-runtime: \ + %:version-compare(>= 10.11 mmacosx-version-min= -lemutls_w) ; \ + : -lemutls_w \ + }" + /* We specify crt0.o as -lcrt0.o so that ld will search the library path. */ #undef STARTFILE_SPEC