From patchwork Mon Sep 5 22:26:32 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Miller X-Patchwork-Id: 113443 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 35492B6F7B for ; Tue, 6 Sep 2011 08:26:56 +1000 (EST) Received: (qmail 15177 invoked by alias); 5 Sep 2011 22:26:54 -0000 Received: (qmail 15169 invoked by uid 22791); 5 Sep 2011 22:26:52 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from shards.monkeyblade.net (HELO shards.monkeyblade.net) (198.137.202.13) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 05 Sep 2011 22:26:38 +0000 Received: from localhost (cpe-66-65-57-86.nyc.res.rr.com [66.65.57.86]) (authenticated bits=0) by shards.monkeyblade.net (8.14.4/8.14.4) with ESMTP id p85MQWIT030321 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 5 Sep 2011 15:26:35 -0700 Date: Mon, 05 Sep 2011 18:26:32 -0400 (EDT) Message-Id: <20110905.182632.902579345910225033.davem@davemloft.net> To: gcc-patches@gcc.gnu.org Subject: [PATCH] Fix target default on biarch Linux/Sparc From: David Miller Mime-Version: 1.0 X-IsSubscribed: yes 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 If you configure a biarch Linux/Sparc compiler defaulting to 32-bit, but give --with-cpu= for a v9 cpu it erroneously turns on 64-bit in TARGET_DEFAULT. The right thing to do is what the Solaris/Sparc target does, which is to key things off of a cpp macro (TARGET_64BIT_DEFAULT) which is defined by a header that gets prepended to the target header list based upon the target triplet. Therefore I moved sol2-64.h to default-64.h and use it for Linux biarch builds too when appropriate. gcc/ * config/sparc/sol2-64.h: Move ... * config/sparc/default-64.h: ... to here. Update comment. * config.gcc: Update Solaris sparc to use default-64.h, also prefix this header into the list on sparc64-*-linux. * config/sparc/linux64.h (TARGET_DEFAULT): Only override if TARGET_64BIT_DEFAULT is defined. Remove commented out reference to MASK_HARD_QUAD. Index: gcc/config.gcc =================================================================== --- gcc/config.gcc (revision 178557) +++ gcc/config.gcc (revision 178558) @@ -2501,7 +2501,7 @@ tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sol2-bi.h" case ${target} in sparc64-*-* | sparcv9-*-*) - tm_file="sparc/sol2-64.h ${tm_file}" + tm_file="sparc/default-64.h ${tm_file}" ;; *) test x$with_cpu != x || with_cpu=v9 @@ -2523,7 +2523,7 @@ tmake_file="${tmake_file} t-rtems" ;; sparc64-*-linux*) - tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/linux64.h" + tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default-64.h sparc/linux64.h" extra_options="${extra_options} sparc/long-double-switch.opt" tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64" extra_parts="${extra_parts} crtfastmath.o" Index: gcc/config/sparc/sol2-64.h =================================================================== --- gcc/config/sparc/sol2-64.h (revision 178557) +++ gcc/config/sparc/sol2-64.h (revision 178558) @@ -1,22 +0,0 @@ -/* Definitions of target machine for GCC, for bi-arch SPARC - running Solaris 2, defaulting to 64-bit code generation. - - Copyright (C) 1999, 2010, 2011 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 -. */ - -#define TARGET_64BIT_DEFAULT 1 Index: gcc/config/sparc/linux64.h =================================================================== --- gcc/config/sparc/linux64.h (revision 178557) +++ gcc/config/sparc/linux64.h (revision 178558) @@ -31,20 +31,11 @@ } \ while (0) -#if TARGET_CPU_DEFAULT == TARGET_CPU_v9 \ - || TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc \ - || TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc3 \ - || TARGET_CPU_DEFAULT == TARGET_CPU_niagara \ - || TARGET_CPU_DEFAULT == TARGET_CPU_niagara2 \ - || TARGET_CPU_DEFAULT == TARGET_CPU_niagara3 \ - || TARGET_CPU_DEFAULT == TARGET_CPU_niagara4 -/* A 64 bit v9 compiler with stack-bias, - in a Medium/Low code model environment. */ - +#ifdef TARGET_64BIT_DEFAULT #undef TARGET_DEFAULT #define TARGET_DEFAULT \ - (MASK_V9 + MASK_PTR64 + MASK_64BIT /* + MASK_HARD_QUAD */ \ - + MASK_STACK_BIAS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128) + (MASK_V9 + MASK_PTR64 + MASK_64BIT + MASK_STACK_BIAS + \ + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128) #endif /* This must be v9a not just v9 because by default we enable Index: gcc/config/sparc/default-64.h =================================================================== --- gcc/config/sparc/default-64.h (revision 0) +++ gcc/config/sparc/default-64.h (revision 178558) @@ -0,0 +1,22 @@ +/* Definitions of target machine for GCC, for bi-arch SPARC, + defaulting to 64-bit code generation. + + Copyright (C) 1999, 2010, 2011 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 +. */ + +#define TARGET_64BIT_DEFAULT 1