Is it ok for trunk? If possible, If possible, please merge it also to GCC-6 and GCC-5 branches.
2016-06-15 Jakub Sejdak <jakub.sej...@phoesys.com> * config.gcc: Add support for arm*-*-phoenix* targets. * config/arm/t-phoenix: New. * config/phoenix.h: New. --- gcc/ChangeLog | 6 ++++++ gcc/config.gcc | 11 +++++++++++ gcc/config/arm/t-phoenix | 29 +++++++++++++++++++++++++++++ gcc/config/phoenix.h | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 gcc/config/arm/t-phoenix create mode 100644 gcc/config/phoenix.h diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 907bb06..26807d2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-06-15 Jakub Sejdak <jakub.sej...@phoesys.com> + + * config.gcc: Add support for arm*-*-phoenix* targets. + * config/arm/t-phoenix: New. + * config/phoenix.h: New. + 2016-06-14 David Malcolm <dmalc...@redhat.com> * spellcheck-tree.c: Include spellcheck-tree.h rather than diff --git a/gcc/config.gcc b/gcc/config.gcc index e47535b..8c46798 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -815,6 +815,11 @@ case ${target} in ;; esac ;; +*-*-phoenix*) + gas=yes + gnu_ld=yes + default_use_cxa_atexit=yes + ;; *-*-rtems*) case ${enable_threads} in "" | yes | rtems) thread_file='rtems' ;; @@ -1097,6 +1102,12 @@ arm*-*-uclinux*eabi*) # ARM ucLinux # The EABI requires the use of __cxa_atexit. default_use_cxa_atexit=yes ;; +arm*-*-phoenix*) + tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h" + tm_file="${tm_file} newlib-stdint.h phoenix.h" + tm_file="${tm_file} arm/aout.h arm/arm.h" + tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix" + ;; arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*) case ${target} in arm*eb-*-eabi*) diff --git a/gcc/config/arm/t-phoenix b/gcc/config/arm/t-phoenix new file mode 100644 index 0000000..d881884 --- /dev/null +++ b/gcc/config/arm/t-phoenix @@ -0,0 +1,29 @@ +# Copyright (C) 2016 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/>. + +MULTILIB_OPTIONS = marm/mthumb +MULTILIB_DIRNAMES = arm thumb +MULTILIB_EXCEPTIONS = +MULTILIB_MATCHES = + +MULTILIB_OPTIONS += mfloat-abi=hard +MULTILIB_DIRNAMES += fpu +MULTILIB_MATCHES += mfloat-abi?hard=mhard-float + +MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork +MULTILIB_DIRNAMES += normal interwork diff --git a/gcc/config/phoenix.h b/gcc/config/phoenix.h new file mode 100644 index 0000000..9ffb958 --- /dev/null +++ b/gcc/config/phoenix.h @@ -0,0 +1,33 @@ +/* Base configuration file for all Phoenix-RTOS targets. + Copyright (C) 2016 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/>. */ + +#undef TARGET_OS_CPP_BUILTINS +#define TARGET_OS_CPP_BUILTINS() \ + do { \ + builtin_define_std ("phoenix"); \ + builtin_define_std ("unix"); \ + builtin_assert ("system=phoenix"); \ + builtin_assert ("system=unix"); \ + } while(0); + +#define STD_LIB_SPEC "%{!shared:%{g*:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}}" + +/* This will prevent selecting 'unsigned long int' instead of 'unsigned int' as 'uint32_t' in stdint-newlib.h. */ +#undef STDINT_LONG32 +#define STDINT_LONG32 0 -- 2.7.4