xtensa: add uclinux support
authorMax Filippov <jcmvbkbc@gmail.com>
Sat, 3 Oct 2015 16:09:07 +0000 (16:09 +0000)
committerMax Filippov <jcmvbkbc@gcc.gnu.org>
Sat, 3 Oct 2015 16:09:07 +0000 (16:09 +0000)
2015-10-03  Max Filippov  <jcmvbkbc@gmail.com>
gcc/
* config.gcc (xtensa*-*-uclinux*): New configuration.
* config/xtensa/uclinux.h: New file.
* config/xtensa/uclinux.opt: New file.

libgcc/
* config.host (xtensa*-*-uclinux*): New configuration.

From-SVN: r228450

gcc/ChangeLog
gcc/config.gcc
gcc/config/xtensa/uclinux.h [new file with mode: 0644]
gcc/config/xtensa/uclinux.opt [new file with mode: 0644]
libgcc/ChangeLog
libgcc/config.host

index b74a73ae9400762754100702dc8caddb60af0f15..14ab6968c4f6c58a4c18353cb1b7e1ba0346ed55 100644 (file)
@@ -1,3 +1,9 @@
+2015-10-03  Max Filippov  <jcmvbkbc@gmail.com>
+
+       * config.gcc (xtensa*-*-uclinux*): New configuration.
+       * config/xtensa/uclinux.h: New file.
+       * config/xtensa/uclinux.opt: New file.
+
 2015-10-03  Jonathan Wakely  <jwakely@redhat.com>
 
        * doc/cpp.texi (Standard Predefined Macros): Document value of
index c52f5a8975a20c8a798cd6793c9f0b477cfcafef..56797bd0c3f4d6232fa76a07e6edf3023aea75e2 100644 (file)
@@ -2995,6 +2995,11 @@ xtensa*-*-linux*)
        tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
        tmake_file="${tmake_file} xtensa/t-xtensa"
        ;;
+xtensa*-*-uclinux*)
+       tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
+       tmake_file="${tmake_file} xtensa/t-xtensa"
+       extra_options="${extra_options} xtensa/uclinux.opt"
+       ;;
 am33_2.0-*-linux*)
        tm_file="mn10300/mn10300.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
        gas=yes gnu_ld=yes
diff --git a/gcc/config/xtensa/uclinux.h b/gcc/config/xtensa/uclinux.h
new file mode 100644 (file)
index 0000000..3c67856
--- /dev/null
@@ -0,0 +1,69 @@
+/* Xtensa uClinux configuration.
+   Derived from the configuration for GCC for Intel i386 running Linux.
+   Copyright (C) 2001-2015 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                                                           \
+    {                                                          \
+      GNU_USER_TARGET_OS_CPP_BUILTINS ();                      \
+      builtin_define ("__uClinux__");                          \
+    }                                                          \
+  while (0)
+
+#undef SUBTARGET_CPP_SPEC
+#define SUBTARGET_CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
+
+#undef SIZE_TYPE
+#define SIZE_TYPE "unsigned int"
+
+#undef PTRDIFF_TYPE
+#define PTRDIFF_TYPE "int"
+
+#undef WCHAR_TYPE
+#define WCHAR_TYPE "long int"
+
+#undef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE 32
+
+#undef ASM_SPEC
+#define ASM_SPEC \
+ "%{mtext-section-literals:--text-section-literals} \
+  %{mno-text-section-literals:--no-text-section-literals} \
+  %{mtarget-align:--target-align} \
+  %{mno-target-align:--no-target-align} \
+  %{mlongcalls:--longcalls} \
+  %{mno-longcalls:--no-longcalls} \
+  %{mauto-litpools:--auto-litpools} \
+  %{mno-auto-litpools:--no-auto-litpools}"
+
+#undef LINK_SPEC
+#define LINK_SPEC "%{!no-elf2flt:%{!elf2flt*:-elf2flt}}"
+
+#undef LOCAL_LABEL_PREFIX
+#define LOCAL_LABEL_PREFIX     "."
+
+/* Always enable "-fpic" for Xtensa Linux.  */
+#define XTENSA_ALWAYS_PIC 1
+
+#undef TARGET_LIBC_HAS_FUNCTION
+#define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
+
+#undef DBX_REGISTER_NUMBER
+
diff --git a/gcc/config/xtensa/uclinux.opt b/gcc/config/xtensa/uclinux.opt
new file mode 100644 (file)
index 0000000..95ef777
--- /dev/null
@@ -0,0 +1,32 @@
+; Xtensa uClinux options.
+
+; Copyright (C) 2015 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/>.
+
+; See the GCC internals manual (options.texi) for a description of
+; this file's format.
+
+; Please try to keep this file in ASCII collating order.
+
+elf2flt
+Driver
+
+elf2flt=
+Driver JoinedOrMissing
+
+; This comment is to ensure we retain the blank line above.
index e534c6db959da1759f27cf28d6a275132349331e..f09b962d64cc407cc55f48cc9b5978ed7a9703a7 100644 (file)
@@ -1,3 +1,7 @@
+2015-10-03  Max Filippov  <jcmvbkbc@gmail.com>
+
+       * config.host (xtensa*-*-uclinux*): New configuration.
+
 2015-10-02  Kirill Yukhin  <kirill.yukhin@intel.com>
 
         * config/i386/cpuinfo.c (processor_features): Add
index 2c6475625c9cb830b9a9d8598f406a5a03fa3793..2ee92c19e17d2187edf58ab243081cf56081018a 100644 (file)
@@ -1295,6 +1295,11 @@ xtensa*-*-linux*)
        tmake_file="$tmake_file xtensa/t-xtensa xtensa/t-linux t-slibgcc-libgcc"
        md_unwind_header=xtensa/linux-unwind.h
        ;;
+xtensa*-*-uclinux*)
+       tmake_file="$tmake_file xtensa/t-xtensa xtensa/t-linux t-slibgcc-libgcc"
+       md_unwind_header=xtensa/linux-unwind.h
+       extra_parts="$extra_parts crtbeginS.o crtbeginT.o crtendS.o"
+       ;;
 am33_2.0-*-linux*)
        # Don't need crtbeginT.o from *-*-linux* default.
        extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"