From patchwork Tue May 5 12:38:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rainer Orth X-Patchwork-Id: 1283520 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=CeBiTec.Uni-Bielefeld.DE Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=CeBiTec.Uni-Bielefeld.DE header.i=@CeBiTec.Uni-Bielefeld.DE header.a=rsa-sha256 header.s=20200306 header.b=O0s19Sjt; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 49GfQl6Z61z9sSs for ; Tue, 5 May 2020 22:38:21 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0F0EB388E80C; Tue, 5 May 2020 12:38:19 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtp.CeBiTec.Uni-Bielefeld.DE (smtp.CeBiTec.Uni-Bielefeld.DE [129.70.160.84]) by sourceware.org (Postfix) with ESMTPS id D58B5387086F for ; Tue, 5 May 2020 12:38:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D58B5387086F Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=CeBiTec.Uni-Bielefeld.DE Authentication-Results: sourceware.org; spf=none smtp.mailfrom=ro@cebitec.uni-bielefeld.de Received: from localhost (localhost [127.0.0.1]) by smtp.CeBiTec.Uni-Bielefeld.DE (Postfix) with ESMTP id 264F5874A8; Tue, 5 May 2020 14:38:03 +0200 (CEST) X-Virus-Scanned: amavisd-new at CeBiTec.Uni-Bielefeld.DE Received: from smtp.CeBiTec.Uni-Bielefeld.DE ([127.0.0.1]) by localhost (smtp.cebitec.uni-bielefeld.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 99bPpSYKz-DX; Tue, 5 May 2020 14:38:01 +0200 (CEST) Received: from manam.CeBiTec.Uni-Bielefeld.DE (p4FDDBB33.dip0.t-ipconnect.de [79.221.187.51]) by smtp.CeBiTec.Uni-Bielefeld.DE (Postfix) with ESMTPSA id A55AF874A7; Tue, 5 May 2020 14:38:01 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=CeBiTec.Uni-Bielefeld.DE; s=20200306; t=1588682281; bh=YaWbJRJDWpEl2q+jClg8hvdqPHfsAsHlVDHlz49kBk8=; h=From:To:Cc:Subject:Date:From; b=O0s19SjtRenOnGxwHAwSUJ6/R2iJ50WIMcK+hzK3lndLzyGH4wc1XumPT7hVQXaBO 0Og/O6v1gRneuxUbTUFGfqKFnNKaqtQiMtfMAc2eKaDRaHv44xWjpOXmzdI78HzBbh 4GfxOYCFV0nhC8FItuCM/xMb7e8l4+SNJd/qDb+lZydwfHQ8EQNDYDbfUG/k0Vsfqe 5ewSt6McOASUwsWM+2+eopddMPvoC0NdTP7hdIPrq/wws3Ob0MwUPZJ5nhSlZ50Djq setFvm1X2IEEOVVp0t6Mc+BHnCmB0RLFcvpakTUT+eZJ+MzPwR2kUJGLlgvC+lVYwF UwAqKYHfyOSow== From: Rainer Orth To: gcc-patches@gcc.gnu.org Subject: [PATCH] doc: Update install.texi for GCC 10 on Solaris Date: Tue, 05 May 2020 14:38:00 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (usg-unix-v) MIME-Version: 1.0 X-Spam-Status: No, score=-3796.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, GIT_PATCH_0, SCC_5_SHORT_WORD_LINES, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jakub Jelinek , Sandra Loosemore Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" This patch updates install.texi for GCC 10 on Solaris. It includes some general cleanup and updates and includes a couple of caveats, some of them found when testing GCC 10.1.0 RC1 with only the bundled tools. The reference to TGCware on the binaries page is gone because they only provide binaries up to Solaris 9. The note about configuring 64-bit Solaris/SPARC compilers with --build=sparcv9-sun-solaris2.11 became necessary because upstream config.guess silently reverted my patch to make this unnecessary. We already had a bug report about a comparison failure caused by this issue. Tested with make doc/gccinstall.info and doc/gccinstall.pdf and inspection of the resulting files. Ok for master and the gcc-10 branch? Rainer # HG changeset patch # Parent 6b1dba5cb0577cfaca3eb70cdc7083df09ffa305 doc: Update install.texi for GCC 10 on Solaris diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -349,9 +349,8 @@ systems' @command{tar} programs will als Necessary when targeting Darwin, building @samp{libstdc++}, and not using @option{--disable-symvers}. -Necessary when targeting Solaris 2 with Sun @command{ld} and not using -@option{--disable-symvers}. The bundled @command{perl} in Solaris@tie{}8 -and up works. +Necessary when targeting Solaris 2 with Solaris @command{ld} and not using +@option{--disable-symvers}. Necessary when regenerating @file{Makefile} dependencies in libiberty. Necessary when regenerating @file{libiberty/functions.texi}. @@ -1016,7 +1015,7 @@ is the target system triple, such as @sa @item If the target system is the same that you are building on, check operating system specific directories (e.g.@: @file{/usr/ccs/bin} on -Sun Solaris 2). +Solaris 2). @item Check in the @env{PATH} for a tool whose name is prefixed by the @@ -3340,9 +3339,6 @@ Solaris 2 (SPARC, Intel): @itemize @item @uref{https://www.opencsw.org/,,OpenCSW} - -@item -@uref{http://jupiterrise.com/tgcware/,,TGCware} @end itemize @item @@ -4048,29 +4044,27 @@ found on @uref{http://www.bitwizard.nl/s @end html @anchor{ix86-x-solaris2} @heading i?86-*-solaris2* -Use this for Solaris 11 or later on x86 and x86-64 systems. Starting +Use this for Solaris 11.3 or later on x86 and x86-64 systems. Starting with GCC 4.7, there is also a 64-bit @samp{amd64-*-solaris2*} or @samp{x86_64-*-solaris2*} configuration that corresponds to @samp{sparcv9-sun-solaris2*}. It is recommended that you configure GCC to use the GNU assembler. The -versions included in Solaris 11, from GNU binutils 2.19 or -newer (also available as @file{/usr/bin/gas} and +versions included in Solaris 11.3, from GNU binutils 2.23.1 or +newer (available as @file{/usr/bin/gas} and @file{/usr/gnu/bin/as}), work fine. The current version, from GNU -binutils 2.32, is known to work, but the version from GNU binutils 2.26 -must be avoided. Recent versions of the Solaris assembler in -@file{/usr/ccs/bin/as} work almost as well, though. -@c FIXME: as patch requirements? - -For linking, the Solaris linker, is preferred. If you want to use the GNU -linker instead, the version in Solaris 11, from GNU binutils 2.19 or -newer (also in @file{/usr/gnu/bin/ld} and @file{/usr/bin/gld}), works, -as does the latest version, from GNU binutils 2.32. +binutils 2.34, is known to work. Recent versions of the Solaris assembler in +@file{/usr/bin/as} work almost as well, though. + +For linking, the Solaris linker is preferred. If you want to use the GNU +linker instead, the version in Solaris 11.3, from GNU binutils 2.23.1 or +newer (in @file{/usr/gnu/bin/ld} and @file{/usr/bin/gld}), works, +as does the latest version, from GNU binutils 2.34. To use GNU @command{as}, configure with the options @option{--with-gnu-as --with-as=@//usr/@/gnu/@/bin/@/as}. It may be necessary to configure with @option{--without-gnu-ld --with-ld=@//usr/@/ccs/@/bin/@/ld} to -guarantee use of Sun @command{ld}. +guarantee use of Solaris @command{ld}. @c FIXME: why --without-gnu-ld --with-ld? @html @@ -4658,13 +4652,14 @@ Support for Solaris 10 has been removed 9 has been removed in GCC 5. Support for Solaris 8 has been removed in GCC 4.8. Support for Solaris 7 has been removed in GCC 4.6. -Solaris 11 provides GCC 4.5.2, 4.7.3, and 4.8.2 as -@command{/usr/gcc/4.5/bin/gcc} or similar. Alternatively, +Solaris 11.3 provides GCC 4.5.2, 4.7.3, and 4.8.2 as +@command{/usr/gcc/4.5/bin/gcc} or similar. Newer Solaris versions +provide one or more of GCC 5, 7, and 9. Alternatively, you can install a pre-built GCC to bootstrap and install GCC. See the @uref{binaries.html,,binaries page} for details. The Solaris 2 @command{/bin/sh} will often fail to configure -@samp{libstdc++-v3}or @samp{boehm-gc}. We therefore recommend using the +@samp{libstdc++-v3}. We therefore recommend using the following initial sequence of commands @smallexample @@ -4685,24 +4680,24 @@ Trying to use the linker and other tools For example, the linker may hang indefinitely. The fix is to remove @file{/usr/ucb} from your @env{PATH}. -The build process works more smoothly with the legacy Sun tools so, if you +The build process works more smoothly with the legacy Solaris tools so, if you have @file{/usr/xpg4/bin} in your @env{PATH}, we recommend that you place @file{/usr/bin} before @file{/usr/xpg4/bin} for the duration of the build. We recommend the use of the Solaris assembler or the GNU assembler, in conjunction with the Solaris linker. The GNU @command{as} -versions included in Solaris 11, -from GNU binutils 2.19 or newer (also in @file{/usr/bin/gas} and +versions included in Solaris 11.3, +from GNU binutils 2.23.1 or newer (in @file{/usr/bin/gas} and @file{/usr/gnu/bin/as}), are known to work. -The current version, from GNU binutils 2.32, +The current version, from GNU binutils 2.34, is known to work as well. Note that your mileage may vary if you use a combination of the GNU tools and the Solaris tools: while the -combination GNU @command{as} + Sun @command{ld} should reasonably work, -the reverse combination Sun @command{as} + GNU @command{ld} may fail to +combination GNU @command{as} + Solaris @command{ld} should reasonably work, +the reverse combination Solaris @command{as} + GNU @command{ld} may fail to build or cause memory corruption at runtime in some cases for C++ programs. @c FIXME: still? GNU @command{ld} usually works as well. Again, the current -version (2.32) is known to work, but generally lacks platform specific +version (2.34) is known to work, but generally lacks platform specific features, so better stay with Solaris @command{ld}. To use the LTO linker plugin (@option{-fuse-linker-plugin}) with GNU @command{ld}, GNU binutils @emph{must} be configured with @option{--enable-largefile}. @@ -4713,6 +4708,21 @@ GNU binutils. @samp{libstdc++} symbol v appropriate version is found. Solaris @command{c++filt} from the Solaris Studio compilers does @emph{not} work. +The versions of the GNU Multiple Precision Library (GMP), the MPFR +library and the MPC library bundled with Solaris 11.3 and later are +usually recent enough to match GCC's requirements. There are two +caveats: + +@itemize @bullet +@item +While the version of the GMP library in Solaris 11.3 works with GCC, you +need to configure with @option{--with-gmp-include=/usr/include/gmp}. + +@item +The version of the MPFR libary included in Solaris 11.3 is too old; you +need to provide a more recent one. +@end itemize + @html
@end html @@ -4734,7 +4744,7 @@ in @uref{prerequisites.html,,the prerequ @anchor{sparc-sun-solaris2} @heading sparc-sun-solaris2* When GCC is configured to use GNU binutils 2.14 or later, the binaries -produced are smaller than the ones produced using Sun's native tools; +produced are smaller than the ones produced using Solaris native tools; this difference is quite significant for binaries containing debugging information. @@ -4750,10 +4760,10 @@ When configuring the GNU Multiple Precis library or the MPC library on a Solaris 7 or later system, the canonical target triplet must be specified as the @command{build} parameter on the configure line. This target triplet can be obtained by invoking @command{./config.guess} in the toplevel source directory of GCC (and -not that of GMP or MPFR or MPC). For example on a Solaris 9 system: +not that of GMP or MPFR or MPC). For example on a Solaris 11 system: @smallexample -% ./configure --build=sparc-sun-solaris2.9 --prefix=xxx +% ./configure --build=sparc-sun-solaris2.11 --prefix=xxx @end smallexample @html @@ -4767,13 +4777,20 @@ not that of GMP or MPFR or MPC). For ex @end html @anchor{sparc64-x-solaris2} @heading sparc64-*-solaris2* +When configuring a 64-bit-default GCC on Solaris/SPARC, you must use a +build compiler that generates 64-bit code, either by default or by +specifying @samp{CC='gcc -m64' CXX='gcc-m64'} to @command{configure}. +Additionally, you @emph{must} pass @option{--build=sparc64-sun-solaris2.11} +or @option{--build=sparcv9-sun-solaris2.11} because @file{config.guess} +misdetects this situation, which can cause build failures. + When configuring the GNU Multiple Precision Library (GMP), the MPFR library or the MPC library, the canonical target triplet must be specified as the @command{build} parameter on the configure line. For example -on a Solaris 9 system: +on a Solaris 11 system: @smallexample -% ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx +% ./configure --build=sparc64-sun-solaris2.11 --prefix=xxx @end smallexample @html @@ -4881,7 +4898,7 @@ can generate 64-bit x86-64 code with the GCC 4.7, there is also a configuration that defaults to 64-bit code, but can generate 32-bit code with @option{-m32}. To configure and build this way, you have to provide all support libraries like @file{libgmp} -as 64-bit code, configure with @option{--target=x86_64-pc-solaris2.1x} +as 64-bit code, configure with @option{--target=x86_64-pc-solaris2.11} and @samp{CC=gcc -m64}. @html