110d565efSmrg# Build a shared libgcc library for ELF with symbol versioning
210d565efSmrg# with the Solaris linker.
310d565efSmrg
410d565efSmrgSHLIB_LDFLAGS = -Wl,-h,$(SHLIB_SONAME) -Wl,-z,text -Wl,-z,defs \
510d565efSmrg	-Wl,-M,$(SHLIB_MAP)
610d565efSmrg
710d565efSmrgifeq ($(enable_shared),yes)
810d565efSmrg
910d565efSmrg# Linker mapfile to enforce direct binding to libgcc_s unwinder
1010d565efSmrg# (PR target/59788).
11*0fc04c29Smrg# Emit v2 mapfile syntax if possible, otherwise ld -z guidance complains
12*0fc04c29Smrg# every time the mapfile is used.
1310d565efSmrglibgcc-unwind.map: libgcc-std.ver
14*0fc04c29Smrgifeq ($(solaris_ld_v2_maps),yes)
15*0fc04c29Smrg	@(echo '$$mapfile_version 2';		\
16*0fc04c29Smrg	echo "SYMBOL_SCOPE {";			\
17*0fc04c29Smrg	for f in `grep _Unwind_ $< | sort`; do	\
18*0fc04c29Smrg	  echo "	$$f { FLAGS = EXTERN DIRECT };"; \
19*0fc04c29Smrg	done;					\
20*0fc04c29Smrg	echo "};" ) > $@
21*0fc04c29Smrgelse
2210d565efSmrg	@(echo "{";				\
2310d565efSmrg	for f in `grep _Unwind_ $< | sort`; do	\
2410d565efSmrg	  echo "	$$f = EXTERN DIRECT;";	\
2510d565efSmrg	done;					\
2610d565efSmrg	echo "};" ) > $@
27*0fc04c29Smrgendif
2810d565efSmrg
2910d565efSmrg# Copy libgcc-unwind.map to the place where gcc will look for it at build-time.
3010d565efSmrginstall-libgcc-unwind-map-forbuild: libgcc-unwind.map
3110d565efSmrg	dest=$(gcc_objdir)/tmp$$$$-$<; \
3210d565efSmrg	cp $< $$dest; \
3310d565efSmrg	chmod a+r $$dest; \
3410d565efSmrg	sh $(srcdir)/../move-if-change $$dest $(gcc_objdir)/$<
3510d565efSmrg
3610d565efSmrgall: install-libgcc-unwind-map-forbuild
3710d565efSmrg
3810d565efSmrginstall-libgcc-unwind-map: libgcc-unwind.map
3910d565efSmrg	$(INSTALL_DATA) $< $(DESTDIR)$(slibdir)
4010d565efSmrg
4110d565efSmrginstall: install-libgcc-unwind-map
4210d565efSmrg
4310d565efSmrgendif
44