[pushed] Darwin, crts: Build Darwin10 unwinder shim as a library.

Message ID 650CB810-C7A1-47A5-A9F4-2372CC98CEB7@sandoe.co.uk
State Committed
Headers
Series [pushed] Darwin, crts: Build Darwin10 unwinder shim as a library. |

Commit Message

Iain Sandoe Sept. 19, 2021, 6:37 p.m. UTC
  Hi,

We have a small unwinder shim that is only used for Darwin10
(and only then in quite specific cases).  To avoid linking
this code for every executable or DSO, we can present the crt
as a convenience library (rather than a .o file).

tested on x86_64-darwin10,18, x86_64-linux-gnu
pushed to master, thanks
Iain

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

gcc/ChangeLog:

	* config/darwin.h (LINK_COMMAND_SPEC_A): Use Darwin10
	unwinder shim as a convenience library.

libgcc/ChangeLog:

	* config.host: Use convenience library for Darwin10
	unwinder shim.
	* config/t-darwin: Build Darwin10 unwinder shim as a
	convenience library.
---
 gcc/config/darwin.h    | 2 +-
 libgcc/config.host     | 2 +-
 libgcc/config/t-darwin | 6 ++++++
 3 files changed, 8 insertions(+), 2 deletions(-)

--
  

Patch

diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index 6396586c138..50524a51511 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -231,7 +231,7 @@  extern GTY(()) int darwin_ms_struct;
       %{%:sanitize(address): -lasan } \
       %{%:sanitize(undefined): -lubsan } \
       %(link_ssp) \
-      %:version-compare(>< 10.6 10.7 mmacosx-version-min= -ld10-uwfef.o) \
+      %:version-compare(>< 10.6 10.7 mmacosx-version-min= -ld10-uwfef) \
       %(link_gcc_c_sequence) \
     }}}\
     %{!nostdlib:%{!r:%{!nostartfiles:%E}}} %{T*} %{F*} "\
diff --git a/libgcc/config.host b/libgcc/config.host
index 432a3e1e38e..6c34b13d611 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -215,7 +215,7 @@  case ${host} in
 *-*-darwin*)
   asm_hidden_op=.private_extern
   tmake_file="$tmake_file t-darwin ${cpu_type}/t-darwin t-libgcc-pic t-slibgcc-darwin"
-  extra_parts="crt3.o d10-uwfef.o crttms.o crttme.o"
+  extra_parts="crt3.o libd10-uwfef.a crttms.o crttme.o"
   ;;
 *-*-dragonfly*)
   tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip"
diff --git a/libgcc/config/t-darwin b/libgcc/config/t-darwin
index 3b5e3428958..4b6317b5d85 100644
--- a/libgcc/config/t-darwin
+++ b/libgcc/config/t-darwin
@@ -18,3 +18,9 @@  LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/config/unwind-dw2-fde-darwin.c \
 # Patch to __Unwind_Find_Enclosing_Function for Darwin10.
 d10-uwfef.o: $(srcdir)/config/darwin10-unwind-find-enc-func.c
 	$(crt_compile) -mmacosx-version-min=10.6 -c $<
+
+# Using this crt as a library means that it will not be added to an exe
+# (or module) unless needed.
+libd10-uwfef.a: d10-uwfef.o
+	$(AR_CREATE_FOR_TARGET) $@ d10-uwfef.o
+	$(RANLIB_FOR_TARGET) $@