diff options
author | Joshua Conner <joshconner@google.com> | 2017-05-06 00:22:38 +0000 |
---|---|---|
committer | Josh Conner <jconner@gcc.gnu.org> | 2017-05-06 00:22:38 +0000 |
commit | 7ab8766a8e316026c592a2fdbcb342fef7bb887b (patch) | |
tree | c6f8bc937644178a124618d76081674b3c657601 /libgcc | |
parent | 08dd548e8db027bd4e26fa3df8f130cf47a54213 (diff) | |
download | gcc-7ab8766a8e316026c592a2fdbcb342fef7bb887b.zip gcc-7ab8766a8e316026c592a2fdbcb342fef7bb887b.tar.gz gcc-7ab8766a8e316026c592a2fdbcb342fef7bb887b.tar.bz2 |
Add fuchsia support to libgcc
* 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
Diffstat (limited to 'libgcc')
-rw-r--r-- | libgcc/ChangeLog | 8 | ||||
-rw-r--r-- | libgcc/config.host | 17 | ||||
-rw-r--r-- | libgcc/config/arm/unwind-arm.h | 2 | ||||
-rw-r--r-- | libgcc/config/t-slibgcc-fuchsia | 44 |
4 files changed, 70 insertions, 1 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 272c829..2e0f7fc 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -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 diff --git a/libgcc/config.host b/libgcc/config.host index b279a64..1426b04 100644 --- a/libgcc/config.host +++ b/libgcc/config.host @@ -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 diff --git a/libgcc/config/arm/unwind-arm.h b/libgcc/config/arm/unwind-arm.h index 9fb854f..9ceec54 100644 --- a/libgcc/config/arm/unwind-arm.h +++ b/libgcc/config/arm/unwind-arm.h @@ -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 index 0000000..a171283 --- /dev/null +++ b/libgcc/config/t-slibgcc-fuchsia @@ -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) |