| # Build a shared libgcc library for ELF with symbol versioning |
| # with the Solaris linker. |
| |
| SHLIB_LDFLAGS = -Wl,-h,$(SHLIB_SONAME) -Wl,-z,text -Wl,-z,defs \ |
| -Wl,-M,$(SHLIB_MAP) |
| |
| ifeq ($(enable_shared),yes) |
| |
| # Linker mapfile to enforce direct binding to libgcc_s unwinder |
| # (PR target/59788). |
| # Emit v2 mapfile syntax if possible, otherwise ld -z guidance complains |
| # every time the mapfile is used. |
| libgcc-unwind.map: libgcc-std.ver |
| ifeq ($(solaris_ld_v2_maps),yes) |
| @(echo '$$mapfile_version 2'; \ |
| echo "SYMBOL_SCOPE {"; \ |
| for f in `grep _Unwind_ $< | sort`; do \ |
| echo " $$f { FLAGS = EXTERN DIRECT };"; \ |
| done; \ |
| echo "};" ) > $@ |
| else |
| @(echo "{"; \ |
| for f in `grep _Unwind_ $< | sort`; do \ |
| echo " $$f = EXTERN DIRECT;"; \ |
| done; \ |
| echo "};" ) > $@ |
| endif |
| |
| # Copy libgcc-unwind.map to the place where gcc will look for it at build-time. |
| install-libgcc-unwind-map-forbuild: libgcc-unwind.map |
| dest=$(gcc_objdir)/tmp$$$$-$<; \ |
| cp $< $$dest; \ |
| chmod a+r $$dest; \ |
| sh $(srcdir)/../move-if-change $$dest $(gcc_objdir)/$< |
| |
| all: install-libgcc-unwind-map-forbuild |
| |
| install-libgcc-unwind-map: libgcc-unwind.map |
| $(INSTALL_DATA) $< $(DESTDIR)$(slibdir) |
| |
| install: install-libgcc-unwind-map |
| |
| endif |