From patchwork Tue Sep 4 21:17:31 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Ellcey X-Patchwork-Id: 181682 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]) by ozlabs.org (Postfix) with SMTP id B80732C0093 for ; Wed, 5 Sep 2012 07:18:10 +1000 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1347398291; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Received:From:Date:To:Subject:User-Agent:MIME-Version: Content-Type:Content-Transfer-Encoding:Message-ID:Mailing-List: Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:Sender:Delivered-To; bh=9ML9re29tRIvMwzeroo24gYLK6s=; b=MrYJfhu0puytF6/Ae1OSgAiMd1qHk2EkRrfejyhqqsoOSsRv7VFgrzMeCVJNpR +rgUFafIe9mm1Mf15GxodweD5b2PcW4H8FF52p8V9Rn51R0bZ+by3KHewQ/WLEoA 1CN8DAC40C2IEzxvONEe7Di7MLmGOoN5+ItBJX5aKQVFU= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:X-M-MSG:Received:Received:Received:From:Date:To:Subject:User-Agent:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-ID:X-EMS-Proccessed:X-EMS-STAMP:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=KKnSDIcsZM19UPt63HQtLGF19mqIb9phX872LUaR9o6OZA4SxKEfnKHXS1drBo +fJq2S1u8bq9Bk5TzfP3DAlbiHNnc4RtMv3yREsoS8Ixo9H4d3njjV/ECBAguZHd 7cMp9Yjz6wdQ60ZZrOIkO12oVA+dXaRRiVk1iKfB6k1h0=; Received: (qmail 28830 invoked by alias); 4 Sep 2012 21:18:05 -0000 Received: (qmail 28656 invoked by uid 22791); 4 Sep 2012 21:18:02 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, TW_QE X-Spam-Check-By: sourceware.org Received: from dns1.mips.com (HELO dns1.mips.com) (12.201.5.69) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 04 Sep 2012 21:17:36 +0000 Received: from mailgate1.mips.com (mailgate1.mips.com [12.201.5.111]) by dns1.mips.com (8.13.8/8.13.8) with ESMTP id q84LHZSj023966 for ; Tue, 4 Sep 2012 14:17:35 -0700 X-M-MSG: Received: from exchdb01.mips.com (unknown [192.168.36.84]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by mailgate1.mips.com (Postfix) with ESMTP id 288903645FF for ; Tue, 4 Sep 2012 14:17:34 -0700 (PDT) Received: from ubuntu-sellcey.mips.com (192.168.65.53) by exchhub01.mips.com (192.168.36.84) with Microsoft SMTP Server id 14.1.270.1; Tue, 4 Sep 2012 14:17:31 -0700 Received: by ubuntu-sellcey.mips.com (sSMTP sendmail emulation); Tue, 04 Sep 2012 14:17:31 -0700 From: "Steve Ellcey " Date: Tue, 4 Sep 2012 14:17:31 -0700 To: Subject: [patch, mips] New mips triplet for multilib linux builds User-Agent: Heirloom mailx 12.4 7/29/08 MIME-Version: 1.0 Message-ID: X-EMS-Proccessed: 6LP3oGfGVdcdb8o1aBnt6w== X-EMS-STAMP: kZRxN0DYni1jDRNr+7iZ/A== 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 I would like to create a new mips target triplet (mips-mti-linux-gnu). This target would be multilib by default and would have --enable-synci on by default. It would mainly be used for building mips cross compilers with glibc. I hope to extend this target to support the n32 and 64 bit ABIs in the future and add a corresponding mips-mti-elf triplet that would be like mips-sde-elf but have fewer/different multilib versions. Other then adding the new target the only changes are to the --enable-synci default setting (enabled for mips-mti-linux-gnu, still disabled for other targets) and in mips.h to use a new macro SYNCI_SPEC so that I don't have to copy all of OPTION_DEFAULT_SPECS into mti-linux.h just to change the -msynci handling. I tested the changes by building and running the testsuite with the qemu simulator. No glibc or binutils changes were needed for this. OK to checkin? Steve Ellcey sellcey@mips.com 2012-09-04 Steve Ellcey * config.gcc: Add mips*-mti-linux* target and make with_synci true by default for that target. * config/mips/mips.h (SYNCI_SPEC): New. (OPTION_DEFAULT_SPECS): Use new SYNCI_SPEC. * mti-linux.h: New file. * t-mti-linux: New file. diff --git a/gcc/config.gcc b/gcc/config.gcc index 9ec8a41..6923211 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -1685,6 +1685,13 @@ mips*-*-netbsd*) # NetBSD/mips, either endian. tm_file="elfos.h ${tm_file} mips/elf.h netbsd.h netbsd-elf.h mips/netbsd.h" extra_options="${extra_options} netbsd.opt netbsd-elf.opt" ;; +mips*-mti-linux*) + tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h mips/mti-linux.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h mips/linux-common.h" + tmake_file="${tmake_file} mips/t-mti-linux" + gnu_ld=yes + gas=yes + test x$with_llsc != x || with_llsc=yes + ;; mips64*-*-linux* | mipsisa64*-*-linux*) tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h mips/linux-common.h" tmake_file="${tmake_file} mips/t-linux64" @@ -3262,10 +3269,19 @@ case "${target}" in yes) with_synci=synci ;; - "" | no) - # No is the default. + no) with_synci=no-synci ;; + "") + case "${target}" in + mips*-mti-*) + with_synci=synci + ;; + *) + with_synci=no-synci + ;; + esac + ;; *) echo "Unknown synci type used in --with-synci" 1>&2 exit 1 diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index 9ce466d..b98b434 100644 --- a/gcc/config/mips/mips.h +++ b/gcc/config/mips/mips.h @@ -748,6 +748,9 @@ struct mips_cpu_info { specified. --with-divide is ignored if -mdivide-traps or -mdivide-breaks are specified. */ +#ifndef SYNCI_SPEC +#define SYNCI_SPEC "-m%(VALUE)" +#endif #define OPTION_DEFAULT_SPECS \ {"arch", "%{" MIPS_ARCH_OPTION_SPEC ":;: -march=%(VALUE)}" }, \ {"arch_32", "%{" OPT_ARCH32 ":%{" MIPS_ARCH_OPTION_SPEC ":;: -march=%(VALUE)}}" }, \ @@ -760,7 +763,7 @@ struct mips_cpu_info { {"divide", "%{!mdivide-traps:%{!mdivide-breaks:-mdivide-%(VALUE)}}" }, \ {"llsc", "%{!mllsc:%{!mno-llsc:-m%(VALUE)}}" }, \ {"mips-plt", "%{!mplt:%{!mno-plt:-m%(VALUE)}}" }, \ - {"synci", "%{!msynci:%{!mno-synci:-m%(VALUE)}}" } + {"synci", "%{!msynci:%{!mno-synci:" SYNCI_SPEC "}}" } /* A spec that infers the -mdsp setting from an -march argument. */ diff --git a/gcc/config/mips/mti-linux.h b/gcc/config/mips/mti-linux.h new file mode 100644 index 0000000..af3d71f --- /dev/null +++ b/gcc/config/mips/mti-linux.h @@ -0,0 +1,35 @@ +/* Target macros for mips*-mti-linux* targets. + Copyright (C) 2012 + 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 +. */ + +/* Use the (o)32 ABI and the mips32r2 architecture by default. */ +#undef MIPS_ABI_DEFAULT +#define MIPS_ABI_DEFAULT ABI_32 +#undef MIPS_ISA_DEFAULT +#define MIPS_ISA_DEFAULT 33 + +/* If -msynci/-mno-synci is not specified, default to -msynci on architectures + that support it and -mno-synci on architectures that do not. */ +#undef SYNCI_SPEC +#define SYNCI_SPEC "%{!mips32:%{!mips64:-m%(VALUE)}}" + +/* This target is a multilib target, specify the sysroot paths. */ +#undef SYSROOT_SUFFIX_SPEC +#define SYSROOT_SUFFIX_SPEC \ + "%{mips32:/mips32}%{mips64:/mips64}%{mips64r2:/mips64r2}%{msoft-float:/sof}%{mel|EL:/el}%{mabi=64:/64}%{mabi=n32:/n32}" diff --git a/gcc/config/mips/t-mti-linux b/gcc/config/mips/t-mti-linux new file mode 100644 index 0000000..ba11706 --- /dev/null +++ b/gcc/config/mips/t-mti-linux @@ -0,0 +1,24 @@ +# Copyright (C) 2012 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 +# . + +# The default build is mips32r2, hard-float big-endian. Add mips32, +# soft-float, and little-endian variations. + +MULTILIB_OPTIONS = mips32/mips64/mips64r2 msoft-float EL +MULTILIB_DIRNAMES = mips32 mips64 mips64r2 sof el +MULTILIB_MATCHES = EL=mel EB=meb