xtensa: add uclinux support
diff mbox

Message ID 1443626620-11728-1-git-send-email-jcmvbkbc@gmail.com
State New
Headers show

Commit Message

Max Filippov Sept. 30, 2015, 3:23 p.m. UTC
2015-09-30  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.
---
 gcc/config.gcc                |  5 ++++
 gcc/config/xtensa/uclinux.h   | 69 +++++++++++++++++++++++++++++++++++++++++++
 gcc/config/xtensa/uclinux.opt | 32 ++++++++++++++++++++
 libgcc/config.host            |  5 ++++
 4 files changed, 111 insertions(+)
 create mode 100644 gcc/config/xtensa/uclinux.h
 create mode 100644 gcc/config/xtensa/uclinux.opt

Comments

augustine.sterling@gmail.com Oct. 3, 2015, 3:19 p.m. UTC | #1
On Wed, Sep 30, 2015 at 8:23 AM, Max Filippov <jcmvbkbc@gmail.com> wrote:
> 2015-09-30  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.

Approved, please apply.
Max Filippov Oct. 3, 2015, 4:10 p.m. UTC | #2
On Sat, Oct 3, 2015 at 6:19 PM, augustine.sterling@gmail.com
<augustine.sterling@gmail.com> wrote:
> On Wed, Sep 30, 2015 at 8:23 AM, Max Filippov <jcmvbkbc@gmail.com> wrote:
>> 2015-09-30  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.
>
> Approved, please apply.

Applied to trunk. Thanks!

-- Max

Patch
diff mbox

diff --git a/gcc/config.gcc b/gcc/config.gcc
index c52f5a8..56797bd 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -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
index 0000000..4606020
--- /dev/null
+++ b/gcc/config/xtensa/uclinux.h
@@ -0,0 +1,69 @@ 
+/* Xtensa Linux 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
index 0000000..95ef777
--- /dev/null
+++ b/gcc/config/xtensa/uclinux.opt
@@ -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.
diff --git a/libgcc/config.host b/libgcc/config.host
index 2c64756..2ee92c1 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -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"