From patchwork Wed Sep 30 15:23:40 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Filippov X-Patchwork-Id: 524455 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 0A3DD140D26 for ; Thu, 1 Oct 2015 01:24:20 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=lpAAA/55; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id; q=dns; s=default; b=mQOnc8bT+0Ok FknI+eEE7bevnv8PyQEMUF50uoKIZU98EjcwisCeNAw9hJBuxIRw9HTyZjfXLg4Z a1qLP5lUBX65USpmQ+mKR3yIEr1znX0s/3TaEKMNC2h+Sfd8RU1h+XKF3uDVnU7C 6lgxrZfocDOTIhL2h8/jKBo3O4iF3LU= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id; s=default; bh=uInmEAiec/OnmfT01M CmilvEadI=; b=lpAAA/55HcGSjC3OvMzOjv44yFnmVcAmummXX1lWGWL8oagNIH vl8mBi9IAt/MILx3YWsXN+D9UyQpyDVb6rldLs/IzRH6qi6kizAR+G401QK+RBhq nn7QMHlxlEHWk3Qq7LXD+W8g7tmXcg2/qE7wKaWA0xFnMiJq0seRvm394= Received: (qmail 87066 invoked by alias); 30 Sep 2015 15:24:13 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 87043 invoked by uid 89); 30 Sep 2015 15:24:12 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.7 required=5.0 tests=AWL, BAYES_50, FREEMAIL_FROM, FROM_LOCAL_NOVOWEL, HK_RANDOM_ENVFROM, HK_RANDOM_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=no version=3.3.2 X-HELO: mail-la0-f52.google.com Received: from mail-la0-f52.google.com (HELO mail-la0-f52.google.com) (209.85.215.52) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 30 Sep 2015 15:24:10 +0000 Received: by lahh2 with SMTP id h2so50743788lah.0 for ; Wed, 30 Sep 2015 08:24:07 -0700 (PDT) X-Received: by 10.25.207.82 with SMTP id f79mr897281lfg.73.1443626647248; Wed, 30 Sep 2015 08:24:07 -0700 (PDT) Received: from octofox.metropolis ([5.19.183.212]) by smtp.gmail.com with ESMTPSA id ba7sm119891lbc.48.2015.09.30.08.24.06 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 30 Sep 2015 08:24:06 -0700 (PDT) From: Max Filippov To: gcc-patches@gcc.gnu.org Cc: linux-xtensa@linux-xtensa.org, Sterling Augustine , Max Filippov Subject: [PATCH] xtensa: add uclinux support Date: Wed, 30 Sep 2015 18:23:40 +0300 Message-Id: <1443626620-11728-1-git-send-email-jcmvbkbc@gmail.com> X-IsSubscribed: yes 2015-09-30 Max Filippov 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 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 +. */ + +#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 +; . + +; 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"