diff options
Diffstat (limited to 'gcc/config/sh/t-linux')
-rw-r--r-- | gcc/config/sh/t-linux | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/config/sh/t-linux b/gcc/config/sh/t-linux index 2fc932cdc7f..3dd63fc7ea9 100644 --- a/gcc/config/sh/t-linux +++ b/gcc/config/sh/t-linux @@ -1,3 +1,6 @@ +# Don't run fixproto +STMP_FIXPROTO = + TARGET_LIBGCC2_CFLAGS = -fpic LIB1ASMFUNCS_CACHE = _ic_invalidate @@ -9,3 +12,30 @@ MULTILIB_MATCHES = MULTILIB_EXCEPTIONS= EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o + +# Override t-slibgcc-elf-ver to export some libgcc symbols with +# the symbol versions that glibc used. Also use sh specific +# libgcc-std.ver to avoid to export some lib1func routines which +# shoud not be called via PLT. +SHLIB_MAPFILES = $(srcdir)/config/sh/libgcc-std.ver \ + $(srcdir)/config/sh/libgcc-glibc.ver + +# Override SHLIB_LINK and SHLIB_INSTALL to use linker script +# libgcc_s.so. +SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ + -Wl,--soname=$(SHLIB_SONAME) \ + -Wl,--version-script=$(SHLIB_MAP) \ + -o $(SHLIB_NAME) @multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC) && \ + rm -f $(SHLIB_SOLINK) && \ + (echo "/* GNU ld script"; \ + echo " Use the shared library, but some functions are only in"; \ + echo " the static library. */"; \ + echo "GROUP ( $(SHLIB_SONAME) libgcc.a )" \ + ) > $(SHLIB_SOLINK) +SHLIB_INSTALL = \ + $$(SHELL) $$(srcdir)/mkinstalldirs $$(slibdir)$(SHLIB_SLIBDIR_QUAL); \ + $(INSTALL_DATA) $(SHLIB_NAME) \ + $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \ + rm -f $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \ + $(INSTALL_DATA) $(SHLIB_SOLINK) \ + $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK) |