From 7ab8766a8e316026c592a2fdbcb342fef7bb887b Mon Sep 17 00:00:00 2001 From: Joshua Conner Date: Sat, 6 May 2017 00:22:38 +0000 Subject: [PATCH] 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 --- libgcc/ChangeLog | 8 ++++++++ libgcc/config.host | 17 ++++++++++++++++ libgcc/config/arm/unwind-arm.h | 2 +- libgcc/config/t-slibgcc-fuchsia | 44 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 libgcc/config/t-slibgcc-fuchsia 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 + + * 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 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 +# . + +# 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 +# . + +# Fuchsia-specific shared library overrides. + +SHLIB_LDFLAGS = -Wl,--soname=$(SHLIB_SONAME) \ + $(LDFLAGS) -- 2.7.4