This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Add port for Phoenix-RTOS on ARM platform.


Hi Jakub,

For future reference, as per https://gcc.gnu.org/contribute.html the usual practice
is to wait for a week or two before pinging a patch...


On 17/05/16 09:42, Kuba Sejdak wrote:
---
  ChangeLog                |  6 ++++++
  MAINTAINERS              |  1 +
  configure                |  6 ++++++
  configure.ac             |  6 ++++++
  gcc/ChangeLog            |  6 ++++++
  gcc/config.gcc           | 11 +++++++++++
  gcc/config/arm/t-phoenix | 29 +++++++++++++++++++++++++++++
  gcc/config/phoenix.h     | 33 +++++++++++++++++++++++++++++++++
  libgcc/ChangeLog         |  4 ++++
  libgcc/config.host       |  7 +++++++
  10 files changed, 109 insertions(+)
  create mode 100644 gcc/config/arm/t-phoenix
  create mode 100644 gcc/config/phoenix.h

diff --git a/ChangeLog b/ChangeLog
index 8698133..2d25a91 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-05-17  Jakub Sejdak  <jakub.sejdak@phoesys.com>
+
+    * configure.ac: Disable libgcj and libgloss for Phoenix-RTOS targets.
+    * configure: Regenerated.
+	* MAINTAINERS (OS maintainers): Add myself.
+

First of all, do you or your employer have a copyright assignment
to the FSF? The above link contains instructions on how to do that.
It is a necessary prerequisite to accepting any non-small change.

  2016-05-16  Jakub Sejdak  <jakub.sejdak@phoesys.com>
* config.guess: Import version 2016-04-02 (newest).
diff --git a/MAINTAINERS b/MAINTAINERS
index c615168..1d22df6 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -134,6 +134,7 @@ hpux			Steve Ellcey		<sellcey@imgtec.com>
  solaris			Rainer Orth		<ro@CeBiTec.Uni-Bielefeld.DE>
  netbsd			Jason Thorpe		<thorpej@netbsd.org>
  netbsd			Krister Walfridsson	<krister.walfridsson@gmail.com>
+Phoenix-RTOS	Jakub Sejdak		<jakub.sejdak@phoesys.com>
  sh-linux-gnu		Kaz Kojima		<kkojima@gcc.gnu.org>
  RTEMS Ports		Joel Sherrill		<joel@oarcorp.com>
  RTEMS Ports		Ralf Corsepius		<ralf.corsepius@rtems.org>

As described in https://gcc.gnu.org/svnwrite.html the contents of this file
list the people with write access permissions as well as the maintainers of each
gcc component. Maintainers are appointed by the GCC steering committee
(CC'ed one of them who is also an arm port maintainer).
So you should remove this hunk and apply it separately
if the steering committee takes that decision.

The rest of the patch looks sane to me but you'd need to sort out the above
before this can progress.

Kyrill

diff --git a/configure b/configure
index ea63784..19451d2 100755
--- a/configure
+++ b/configure
@@ -3469,6 +3469,9 @@ case "${target}" in
    *-*-netware*)
      noconfigdirs="$noconfigdirs ${libgcj}"
      ;;
+  *-*-phoenix*)
+    noconfigdirs="$noconfigdirs ${libgcj}"
+    ;;
    *-*-rtems*)
      noconfigdirs="$noconfigdirs ${libgcj}"
      ;;
@@ -3725,6 +3728,9 @@ case "${target}" in
      ;;
    *-*-netware*)
      ;;
+  *-*-phoenix*)
+    noconfigdirs="$noconfigdirs target-libgloss"
+    ;;
    *-*-rtems*)
      noconfigdirs="$noconfigdirs target-libgloss"
      # this is not caught below because this stanza matches earlier
diff --git a/configure.ac b/configure.ac
index 54558df..d965059 100644
--- a/configure.ac
+++ b/configure.ac
@@ -805,6 +805,9 @@ case "${target}" in
    *-*-netware*)
      noconfigdirs="$noconfigdirs ${libgcj}"
      ;;
+  *-*-phoenix*)
+    noconfigdirs="$noconfigdirs ${libgcj}"
+    ;;
    *-*-rtems*)
      noconfigdirs="$noconfigdirs ${libgcj}"
      ;;
@@ -1061,6 +1064,9 @@ case "${target}" in
      ;;
    *-*-netware*)
      ;;
+  *-*-phoenix*)
+    noconfigdirs="$noconfigdirs target-libgloss"
+    ;;
    *-*-rtems*)
      noconfigdirs="$noconfigdirs target-libgloss"
      # this is not caught below because this stanza matches earlier
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c854a3e..0b1f96b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-05-17 Jakub Sejdak <jakub.sejdak@phoesys.com>
+
+	* config.gcc: Add support for arm*-*-phoenix* targets.
+	* config/arm/t-phoenix: New.
+	* config/phoenix.h: New.
+
  2016-05-16  Wilco Dijkstra  <wdijkstr@arm.com>
* doc/invoke.texi (AArch64 Options): Various updates.
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 51af122a..5470fa6 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' ;;
@@ -1099,6 +1104,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..830d202
--- /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
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 91f968a..bcb4963 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,7 @@
+2016-05-17 Jakub Sejdak <jakub.sejdak@phoesys.com>
+
+	* config.host: Add suport for arm*-*-phoenix* targets.
+
  2016-05-10  Joel Sherrill <joel@rtems.org>
PR libgcc/70720
diff --git a/libgcc/config.host b/libgcc/config.host
index 4fe3085..86318c6 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -404,6 +404,13 @@ arm*-*-uclinux*)		# ARM ucLinux
  	unwind_header=config/arm/unwind-arm.h
  	extra_parts="$extra_parts crti.o crtn.o"
  	;;
+arm*-*-phoenix*)
+	tmake_file="t-hardfp t-softfp arm/t-arm arm/t-elf arm/t-softfp arm/t-phoenix"
+	tmake_file="${tmake_file} arm/t-bpabi"
+	tm_file="$tm_file arm/bpabi-lib.h"
+	extra_parts="crtbegin.o crtend.o crti.o crtn.o"
+	unwind_header=config/arm/unwind-arm.h
+	;;
  arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
  	tmake_file="${tmake_file} arm/t-arm arm/t-elf t-fixedpoint-gnu-prefix"
  	tm_file="$tm_file arm/bpabi-lib.h"


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]