From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15527 invoked by alias); 6 Oct 2009 13:15:33 -0000 Received: (qmail 15506 invoked by uid 22791); 6 Oct 2009 13:15:30 -0000 X-SWARE-Spam-Status: No, hits=-1.3 required=5.0 tests=AWL,BAYES_00,MSGID_FROM_MTA_HEADER,SPF_SOFTFAIL X-Spam-Check-By: sourceware.org Received: from mtagate1.de.ibm.com (HELO mtagate1.de.ibm.com) (195.212.17.161) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 06 Oct 2009 13:15:24 +0000 Received: from d12nrmr1607.megacenter.de.ibm.com (d12nrmr1607.megacenter.de.ibm.com [9.149.167.49]) by mtagate1.de.ibm.com (8.13.1/8.13.1) with ESMTP id n96DFLPH027555 for ; Tue, 6 Oct 2009 13:15:21 GMT Received: from d12av02.megacenter.de.ibm.com (d12av02.megacenter.de.ibm.com [9.149.165.228]) by d12nrmr1607.megacenter.de.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id n96DFFYB1335458 for ; Tue, 6 Oct 2009 15:15:21 +0200 Received: from d12av02.megacenter.de.ibm.com (loopback [127.0.0.1]) by d12av02.megacenter.de.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id n96DFFFo011977 for ; Tue, 6 Oct 2009 15:15:15 +0200 Received: from tuxmaker.boeblingen.de.ibm.com (tuxmaker.boeblingen.de.ibm.com [9.152.85.9]) by d12av02.megacenter.de.ibm.com (8.12.11.20060308/8.12.11) with SMTP id n96DFEip011938; Tue, 6 Oct 2009 15:15:14 +0200 Message-Id: <200910061315.n96DFEip011938@d12av02.megacenter.de.ibm.com> Received: by tuxmaker.boeblingen.de.ibm.com (sSMTP sendmail emulation); Tue, 06 Oct 2009 15:15:14 +0200 Subject: Re: i370 port - constructing compile script To: mutazilah@gmail.com (Paul Edwards) Date: Tue, 06 Oct 2009 13:15:00 -0000 From: "Ulrich Weigand" Cc: iant@google.com (Ian Lance Taylor), gcc@gcc.gnu.org In-Reply-To: from "Paul Edwards" at Oct 06, 2009 08:31:42 PM MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org X-SW-Source: 2009-10/txt/msg00112.txt.bz2 Paul Edwards: > The failure (on 3.4.6, but not on 3.2.3) is that after the successful > build, when I do an xgcc -S, it produces the assembler file, and then > hangs. I traced this to gcc.c which was in a loop doing this: > > pid = pwait (commands[i].pid, &status, 0); > > getting a return of 0 all the time, while the process (cc1) that it is > waiting on is showing up as being . > > Not sure what that is about. I have gcc 3.2.3 working without that > problem, so I'll spend some time comparing how the two pexecutes > work differently. Huh. I've never seen this before. Is this with your patches to generate a "single executable" or without? For the cross-compiler, you shouldn't need any of the MVS host-specific patches ... > In the meantime, I have a question. You said above that I have to > point sysroot to the MVS libraries and headers. What libraries? > And why, at the point of building a cross-compiler, do I need any > of those things? The normal way I build a cross-compiler I just > do the above configure without prefix or with-sysroot, and it > builds an xgcc executable as expected, using the Linux headers, > as expected. > > I would certainly like an option to force it to use my C90-only > Linux headers and my C90-only libraries, but that should be > strictly optional, and if I did do that, I would expect to see > configure saying things like "no you don't have fork, or getrusage, > or sys/types" etc etc. > > I think I am still failing to understand some major aspect of the > build process. Maybe the confusion is about what "sysroot" for a cross-compiler means. The libraries and headers in the sysroot are *not* used to build the compiler itself. You need to specify the sysroot location at build time of the compiler only so that this location can be compiled into the gcc/cc1 binaries. Once you later *use* the resulting cross-compiler, this cross-compiler will refer to the sysroot location for standard headers and libraries. That is to say, if you build a cross-compiler with --prefix=/home/gccmvs/cross --sysroot=/home/gccmvs/sysroot --target=i370-mvs the result of the build process ("make" and then "make install") will be a cross-compiler in /home/gccmvs/cross/bin/i370-mvs-gcc (and additional files in /home/gccmvs/cross/lib/gcc/...). Note that the build process of the compiler itself will refer to the host's default headers in /usr/include and libraries in /usr/lib. However, once you *run* this i370-mvs-gcc, and it processes a source file using #include , the compiler will search the directory /home/gccmvs/sysroot/include for the stdio.h header file, and it will invoke the cross-linker passing /home/gccmvs/sysroot/lib as the location to search for standard libraries like libc. (Note that the names of such standard libraries, if any, are defined by the MVS target definitions, in particular the setting of target macros like LIB_SPEC in your target header files in config/i370/*.h.) It is important to get this cross-compiler working correctly, i.e. refering to the proper headers and libraries, because in the next step, when you configure and build the native compiler, you'll be using the cross-compiler, and what headers it uses will determine which host features are detected by configure ... Bye, Ulrich -- Dr. Ulrich Weigand GNU Toolchain for Linux on System z and Cell BE Ulrich.Weigand@de.ibm.com