Add fuchsia support to libgcc
authorJoshua Conner <joshconner@google.com>
Sat, 6 May 2017 00:22:38 +0000 (00:22 +0000)
committerJosh Conner <jconner@gcc.gnu.org>
Sat, 6 May 2017 00:22:38 +0000 (00:22 +0000)
* config/arm/unwind-arm.h (_Unwind_decode_typeinfo_ptr): Use
pc-relative indirect handling for fuchsia.
* config/t-slibgcc-fuchsia: New file.
* config.host (*-*-fuchsia*, aarch64*-*-fuchsia*, arm*-*-fuchsia*,
x86_64-*-fuchsia*): Add definitions.

From-SVN: r247710

libgcc/ChangeLog
libgcc/config.host
libgcc/config/arm/unwind-arm.h
libgcc/config/t-slibgcc-fuchsia [new file with mode: 0644]

index 272c829..2e0f7fc 100644 (file)
@@ -1,3 +1,11 @@
+2017-05-05  Joshua Conner  <joshconner@google.com>
+
+       * config/arm/unwind-arm.h (_Unwind_decode_typeinfo_ptr): Use
+       pc-relative indirect handling for fuchsia.
+       * config/t-slibgcc-fuchsia: New file.
+       * config.host (*-*-fuchsia*, aarch64*-*-fuchsia*, arm*-*-fuchsia*,
+       x86_64-*-fuchsia*): Add definitions. 
+
 2017-04-19  Martin Liska  <mliska@suse.cz>
 
        PR gcov-profile/80435
index b279a64..1426b04 100644 (file)
@@ -231,6 +231,10 @@ case ${host} in
       ;;
   esac
   ;;
+*-*-fuchsia*)
+  tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-fuchsia"
+  extra_parts="crtbegin.o crtend.o"
+  ;;
 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
   tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux"
   extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
@@ -342,6 +346,10 @@ aarch64*-*-freebsd*)
        tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
        md_unwind_header=aarch64/freebsd-unwind.h
        ;;
+aarch64*-*-fuchsia*)
+       tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
+       tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp"
+       ;;
 aarch64*-*-linux*)
        extra_parts="$extra_parts crtfastmath.o"
        md_unwind_header=aarch64/linux-unwind.h
@@ -394,6 +402,12 @@ arm*-*-freebsd*)                # ARM FreeBSD EABI
        unwind_header=config/arm/unwind-arm.h
        tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
        ;;
+arm*-*-fuchsia*)
+       tmake_file="${tmake_file} arm/t-arm arm/t-elf arm/t-bpabi"
+       tmake_file="${tmake_file} arm/tsoftfp t-softfp"
+       tm_file="${tm_file} arm/bpabi-lib.h"
+       unwind_header=config/arm/unwind-arm.h
+       ;;
 arm*-*-netbsdelf*)
        tmake_file="$tmake_file arm/t-arm arm/t-netbsd t-slibgcc-gld-nover"
        ;;
@@ -588,6 +602,9 @@ i[34567]86-*-elf*)
 x86_64-*-elf* | x86_64-*-rtems*)
        tmake_file="$tmake_file i386/t-crtstuff t-crtstuff-pic t-libgcc-pic"
        ;;
+x86_64-*-fuchsia*)
+       tmake_file="$tmake_file t-libgcc-pic"
+       ;;
 i[34567]86-*-dragonfly*)
        tmake_file="${tmake_file} i386/t-dragonfly i386/t-crtstuff"
        md_unwind_header=i386/dragonfly-unwind.h
index 9fb854f..9ceec54 100644 (file)
@@ -49,7 +49,7 @@ extern "C" {
        return 0;
 
 #if (defined(linux) && !defined(__uClinux__)) || defined(__NetBSD__) \
-    || defined(__FreeBSD__)
+    || defined(__FreeBSD__) || defined(__fuchsia__)
       /* Pc-relative indirect.  */
 #define _GLIBCXX_OVERRIDE_TTYPE_ENCODING (DW_EH_PE_pcrel | DW_EH_PE_indirect)
       tmp += ptr;
diff --git a/libgcc/config/t-slibgcc-fuchsia b/libgcc/config/t-slibgcc-fuchsia
new file mode 100644 (file)
index 0000000..a171283
--- /dev/null
@@ -0,0 +1,44 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# Fuchsia-specific shared library overrides.
+
+SHLIB_LDFLAGS = -Wl,--soname=$(SHLIB_SONAME) \
+                $(LDFLAGS)
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# Fuchsia-specific shared library overrides.
+
+SHLIB_LDFLAGS = -Wl,--soname=$(SHLIB_SONAME) \
+                $(LDFLAGS)