aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorKaz Kojima <kkojima@gcc.gnu.org>2007-01-09 10:50:23 +0000
committerKaz Kojima <kkojima@gcc.gnu.org>2007-01-09 10:50:23 +0000
commit19d335c98256959bff2baac4096c0a1dd29ce6ff (patch)
tree229ae6c189cf97a363f5928df5510ac67a6e5098 /libgcc
parentf337592be3ff5d03c4623a1cf9462be51c08fc14 (diff)
gcc/
* config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete. (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise. libgcc/ * config/sh/t-linux: New. * config.host (sh*-*-linux*): Set tmake_file. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@120619 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/ChangeLog5
-rw-r--r--libgcc/config.host5
-rw-r--r--libgcc/config/sh/t-linux37
3 files changed, 47 insertions, 0 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 7020915b952..a1f3b931071 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-01-09 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * config/sh/t-linux: New.
+ * config.host (sh*-*-linux*): Set tmake_file.
+
2007-01-05 Daniel Jacobowitz <dan@codesourcery.com>
* Makefile.in (install): Handle multilibs.
diff --git a/libgcc/config.host b/libgcc/config.host
index ac18f04a0a4..a6e6a101480 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -548,6 +548,11 @@ sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
sh-*-linux* | sh[346lbe]*-*-linux* | \
sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
sh64-*-netbsd* | sh64l*-*-netbsd*)
+ case ${host} in
+ sh*-*-linux*)
+ tmake_file="${tmake_file} sh/t-linux"
+ ;;
+ esac
;;
sh-*-rtemscoff*)
;;
diff --git a/libgcc/config/sh/t-linux b/libgcc/config/sh/t-linux
new file mode 100644
index 00000000000..be0b1282431
--- /dev/null
+++ b/libgcc/config/sh/t-linux
@@ -0,0 +1,37 @@
+HOST_LIBGCC2_CFLAGS = -fpic -DNO_FPSCR_VALUES
+
+# Override t-slibgcc-elf-ver to export some libgcc symbols with
+# the symbol versions that glibc used, and hide some lib1func
+# routines which should not be called via PLT. We have to create
+# the list from scratch.
+SHLIB_MAPFILES = \
+ $(gcc_srcdir)/libgcc-std.ver \
+ $(gcc_srcdir)/config/sh/libgcc-excl.ver \
+ $(gcc_srcdir)/config/sh/libgcc-glibc.ver
+
+# Override SHLIB_LINK and SHLIB_INSTALL to use linker script
+# libgcc_s.so.
+SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
+ -Wl,--soname=@shlib_base_name@.so.1 \
+ -Wl,--version-script=@shlib_map_file@ \
+ -o @multilib_dir@/@shlib_base_name@.so.1.tmp @multilib_flags@ \
+ @shlib_objs@ -lc && \
+ rm -f @multilib_dir@/@shlib_base_name@.so && \
+ if [ -f @multilib_dir@/@shlib_base_name@.so.1 ]; then \
+ mv -f @multilib_dir@/@shlib_base_name@.so.1 \
+ @multilib_dir@/@shlib_base_name@.so.1.backup; \
+ else true; fi && \
+ mv @multilib_dir@/@shlib_base_name@.so.1.tmp \
+ @multilib_dir@/@shlib_base_name@.so.1 && \
+ (echo "/* GNU ld script"; \
+ echo " Use the shared library, but some functions are only in"; \
+ echo " the static library. */"; \
+ echo "GROUP ( @shlib_base_name@.so.1 libgcc.a )" \
+ ) > @multilib_dir@/@shlib_base_name@.so
+SHLIB_INSTALL = \
+ $(mkinstalldirs) $(DESTDIR)$(slibdir)@shlib_slibdir_qual@; \
+ $(INSTALL_DATA) @multilib_dir@/@shlib_base_name@.so.1 \
+ $(DESTDIR)$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so.1; \
+ rm -f $(DESTDIR)$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so; \
+ $(INSTALL_DATA) @multilib_dir@/@shlib_base_name@.so \
+ $(DESTDIR)$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so