From patchwork Fri Mar 22 09:00:21 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kai Tietz X-Patchwork-Id: 229929 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 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "localhost", Issuer "www.qmailtoaster.com" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 3E7952C00D0 for ; Fri, 22 Mar 2013 20:01:18 +1100 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:date:message-id:subject:from:to:cc:content-type; q=dns; s=default; b=b7CsweTItMdNilp4pHPSmqR4JcfCwxCUifu3twXiKHC iyvdOqOO7ST7UdeTnvrCEkc/UzawaSLrjb9fHvlOztbzQobzjJsdLWwU7p4YVtxo iBAKUlOuQ6nIBA14cXcIZ5pEwDEM4RosDOiXKivGvAd75yegrnQ0duNjdVUvVz+A = 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 :mime-version:date:message-id:subject:from:to:cc:content-type; s=default; bh=cE9lABIwPsvDhBX18GbNy2QlbHs=; b=WjopZLwiVcmDCeZwA BlK6JEcEFhUh/Dnc4z9eTTp3jzkdNiNx2jFcy0wQnrFGx86vuf22CwYZBIQwJX39 NcDvAft5UWuuudMBJYvHB3hagDBGW4lJFazTHPkiL8oZGcW9yh98DdrFbdPz+vRF nrur3s7af/Q82BW3cuudMcaJwU= Received: (qmail 1592 invoked by alias); 22 Mar 2013 09:01:12 -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 1381 invoked by uid 89); 22 Mar 2013 09:00:28 -0000 X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL, BAYES_00, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, TW_CX, TW_NW autolearn=ham version=3.3.1 Received: from mail-ia0-f174.google.com (HELO mail-ia0-f174.google.com) (209.85.210.174) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Fri, 22 Mar 2013 09:00:23 +0000 Received: by mail-ia0-f174.google.com with SMTP id b35so3269012iac.5 for ; Fri, 22 Mar 2013 02:00:22 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.42.24.10 with SMTP id u10mr521737icb.30.1363942821922; Fri, 22 Mar 2013 02:00:21 -0700 (PDT) Received: by 10.64.14.129 with HTTP; Fri, 22 Mar 2013 02:00:21 -0700 (PDT) Date: Fri, 22 Mar 2013 10:00:21 +0100 Message-ID: Subject: [patch cygwin64]: Add and adjust some initial sources for x64 cygwin From: Kai Tietz To: GCC Patches Cc: Dave Korn Hi, Hi, the first part of required code-changes for upcoming cygwin x64 target. ChangeLog 2013-03-22 Kai Tietz * config/i386/cygwin-stdint.h: Add support for cygwin x64 target. * config/i386/t-cygwin-w64: New file. * config/i386/cygwin-w64.h: New file. * config/i386/cygwin.h (EXTRA_OS_CPP_BUILTINS): Extend and add support for x64-cygwin target. (CPP_SPEC): Likewise. (CXX_WRAP_SPEC_LIST): Undefine before define. (LIBGCJ_SONAME): Make name minor-build-version dependent. Tested for i686-pc-cygwin, and x86_64-pc-cygwin. Dave, please especially a look to LIBGCJ_SONAME change. I think we should include MAJOR_VERSION here, too. Ok for apply? Regards, Kai Tested with i686-pc-cygwin, and x86_64-pc-cygwin. I will apply tomorrow, if there are no objections by other Windows-target-maintainers. Regards, Kai Index: gcc/config/i386/cygwin-stdint.h =================================================================== --- gcc/config/i386/cygwin-stdint.h (Revision 196898) +++ gcc/config/i386/cygwin-stdint.h (Arbeitskopie) @@ -24,39 +24,71 @@ along with GCC; see the file COPYING3. If not see #define INT8_TYPE "signed char" #define INT16_TYPE "short int" #define INT32_TYPE "int" +#ifdef __x86_64__ +#define INT64_TYPE "long int" +#else #define INT64_TYPE "long long int" +#endif #define UINT8_TYPE "unsigned char" #define UINT16_TYPE "short unsigned int" #define UINT32_TYPE "unsigned int" +#ifdef __x86_64__ +#define UINT64_TYPE "long unsigned int" +#else #define UINT64_TYPE "long long unsigned int" +#endif /* Minimum-width integer types */ #define INT_LEAST8_TYPE "signed char" #define INT_LEAST16_TYPE "short int" #define INT_LEAST32_TYPE "int" +#ifdef __x86_64__ +#define INT_LEAST64_TYPE "long int" +#else #define INT_LEAST64_TYPE "long long int" +#endif #define UINT_LEAST8_TYPE "unsigned char" #define UINT_LEAST16_TYPE "short unsigned int" #define UINT_LEAST32_TYPE "unsigned int" +#ifdef __x86_64__ +#define UINT_LEAST64_TYPE "long unsigned int" +#else #define UINT_LEAST64_TYPE "long long unsigned int" +#endif /* Fastest minimum-width integer types */ #define INT_FAST8_TYPE "signed char" +#ifdef __x86_64__ +#define INT_FAST16_TYPE "long int" +#define INT_FAST32_TYPE "long int" +#define INT_FAST64_TYPE "long int" +#else #define INT_FAST16_TYPE "int" #define INT_FAST32_TYPE "int" #define INT_FAST64_TYPE "long long int" +#endif #define UINT_FAST8_TYPE "unsigned char" +#ifdef __x86_64__ +#define UINT_FAST16_TYPE "long unsigned int" +#define UINT_FAST32_TYPE "long unsigned int" +#define UINT_FAST64_TYPE "long unsigned int" +#else #define UINT_FAST16_TYPE "unsigned int" #define UINT_FAST32_TYPE "unsigned int" #define UINT_FAST64_TYPE "long long unsigned int" +#endif /* Integer types capable of holding object pointers */ +#ifdef __x86_64__ +#define INTPTR_TYPE "long int" +#define UINTPTR_TYPE "long unsigned int" +#else #define INTPTR_TYPE "int" #define UINTPTR_TYPE "unsigned int" - +#endif Index: gcc/config/i386/cygwin.h =================================================================== --- gcc/config/i386/cygwin.h (revision 196791) +++ gcc/config/i386/cygwin.h (working copy) @@ -18,11 +18,20 @@ along with GCC; see the file COPYING3. If not see . */ -#define EXTRA_OS_CPP_BUILTINS() /* Nothing. */ +#define EXTRA_OS_CPP_BUILTINS() \ + do \ + { \ + builtin_define ("__CYGWIN__"); \ + if (!TARGET_64BIT) \ + builtin_define ("__CYGWIN32__"); \ + builtin_define ("__unix__"); \ + builtin_define ("__unix"); \ + } \ + while (0) #undef CPP_SPEC #define CPP_SPEC "%(cpp_cpu) %{posix:-D_POSIX_SOURCE} \ - -D__CYGWIN32__ -D__CYGWIN__ %{!ansi:-Dunix} -D__unix__ -D__unix \ + %{!ansi:-Dunix} \ %{mwin32:-DWIN32 -D_WIN32 -D__WIN32 -D__WIN32__ %{!ansi:-DWINNT}} \ %{!nostdinc:%{!mno-win32:-idirafter ../include/w32api%s -idirafter ../../include/w32api%s}}\ " @@ -73,6 +82,7 @@ /* To implement C++ function replacement we always wrap the cxx malloc-like operators. See N2800 #17.6.4.6 [replacement.functions] */ +#undef CXX_WRAP_SPEC_LIST #define CXX_WRAP_SPEC_LIST " \ --wrap _Znwj \ --wrap _Znaj \ @@ -132,6 +142,13 @@ #endif #define LIBGCC_SONAME "cyggcc_s" LIBGCC_EH_EXTN "-1.dll" -/* We should find a way to not have to update this manually. */ -#define LIBGCJ_SONAME "cyggcj" /*LIBGCC_EH_EXTN*/ "-13.dll" - +#ifndef BUILDING_GCC_MAJOR +#include "bversion.h" +#endif +#define ___cyg_mkstr(x) #x +#define __cyg_mkstr(x) ___cyg_mkstr(x) +#if BUILDING_GCC_MAJOR == 4 +#define LIBGCJ_SONAME "cyggcj-" __cyg_mkstr (BUILDING_GCC_MINOR+6) ".dll" +#else +#error LIBGCJ_SONAME versioning scheme needs attention +#endif Index: gcc/config/i386/cygwin-w64.h =================================================================== --- gcc/config/i386/cygwin-w64.h (revision 0) +++ gcc/config/i386/cygwin-w64.h (working copy) @@ -0,0 +1,83 @@ +/* Operating system specific defines to be used when targeting GCC for + hosting on Windows 32/64 via Cygwin runtime, using GNU tools and + the Windows API Library. + Copyright (C) 2013 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 +. */ + +/* Enable multilib. */ + +#undef ASM_SPEC +#define ASM_SPEC "%{m32:--32} %{m64:--64}" + +/* To implement C++ function replacement we always wrap the cxx + malloc-like operators. See N2800 #17.6.4.6 [replacement.functions] */ +#undef CXX_WRAP_SPEC_LIST +#define CXX_WRAP_SPEC_LIST " \ + --wrap _Znwm \ + --wrap _Znam \ + --wrap _ZdlPv \ + --wrap _ZdaPv \ + --wrap _ZnwmRKSt9nothrow_t \ + --wrap _ZnamRKSt9nothrow_t \ + --wrap _ZdlPvRKSt9nothrow_t \ + --wrap _ZdaPvRKSt9nothrow_t \ +" + +#undef SPEC_32 +#undef SPEC_64 +#define SPEC_32 "m32" +#define SPEC_64 "!m32" + +#undef SUB_LINK_ENTRY32 +#undef SUB_LINK_ENTRY64 +#define SUB_LINK_ENTRY32 "-e __cygwin_dll_entry@12" +#define SUB_LINK_ENTRY64 "-e _cygwin_dll_entry" + +#undef SUB_LINK_SPEC +#undef SUB_LINK_ENTRY +#define SUB_LINK_SPEC "%{" SPEC_64 ":-m i386pep} %{" SPEC_32 ":-m i386pe}" +#define SUB_LINK_ENTRY "%{" SPEC_64 ":" SUB_LINK_ENTRY64 "} %{" SPEC_32 ":" SUB_LINK_ENTRY32 "}" + +#undef MULTILIB_DEFAULTS +#define MULTILIB_DEFAULTS { "m64" } + +#undef LINK_SPEC +#define LINK_SPEC SUB_LINK_SPEC "\ + %{mwindows:--subsystem windows} \ + %{mconsole:--subsystem console} \ + " CXX_WRAP_SPEC " \ + %{shared: %{mdll: %eshared and mdll are not compatible}} \ + %{shared: --shared} %{mdll:--dll} \ + %{static:-Bstatic} %{!static:-Bdynamic} \ + %{shared|mdll: " SUB_LINK_ENTRY " --enable-auto-image-base} \ + %(shared_libgcc_undefs) \ + --dll-search-prefix=cyg -tsaware" + +/* Cygwin64 will have a 64-bit long type. */ +#undef LONG_TYPE_SIZE +#undef LONG_TYPE_SIZE +#define LONG_TYPE_SIZE (TARGET_64BIT ? 64 : 32) + +/* Override default "long long unsigned int" from cygming.h. */ +#undef SIZE_TYPE +#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int") +#undef PTRDIFF_TYPE +#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int") + +#undef LIBGCC_SONAME +#define LIBGCC_SONAME "cyggcc_s-seh-1.dll" Index: gcc/config/i386/t-cygwin-w64 =================================================================== --- gcc/config/i386/t-cygwin-w64 (revision 0) +++ gcc/config/i386/t-cygwin-w64 (working copy) @@ -0,0 +1,3 @@ +MULTILIB_OPTIONS = m64/m32 +MULTILIB_DIRNAMES = 64 +MULTILIB_OSDIRNAMES = ../lib ../lib32