From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 49911 invoked by alias); 15 Mar 2018 12:20:13 -0000 Mailing-List: contact fortran-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: fortran-owner@gcc.gnu.org Received: (qmail 49885 invoked by uid 89); 15 Mar 2018 12:20:13 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.1 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy= X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-io0-f195.google.com Received: from mail-io0-f195.google.com (HELO mail-io0-f195.google.com) (209.85.223.195) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 15 Mar 2018 12:20:11 +0000 Received: by mail-io0-f195.google.com with SMTP id l12so8316861ioc.10; Thu, 15 Mar 2018 05:20:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=+vu2w5yo7z4KvolSVbSgfZE/G/cYGZErkGic5d+CPMQ=; b=n4mz7k5DDOufLvoVaSLJMz+wPwuOzvsWuXD+UAZ+lJvOF8F3DLpbSnx9bf65OQ7Szr nOdh0Wdeohu3dbfu+oPgpiZrN0oXF+ea8LW0HZ76w9UWbDEtx4yoCJ5nb6jzhiuS5GfS 10xe47wg6mQzTeZDYnD8bKe8ISBZI/euT4xsldq41YeEGR8/7OkXGYZEVSRntbR0UaLp 7pcaPjsA0MnP2OzPCEIDWrRJJw4V2x0UPp4g0RxGuvEhLw6aZuhRCfo8MIJi4EcUBjan p1LZEtKTQ6E+cYKnruoH1eZNrB/BPuBISyF+O+kLQwqrfM7RPtXx2WC9nIxmJugP61mT ohYA== X-Gm-Message-State: AElRT7HeiaUPF4Helca9aT83BJV0SK2iIE4cO/CrXK7ouLpg625LNTss fH+MTFszpzjYP3ZVblDIITSzMdNTJ9ue6iJFVT0= X-Google-Smtp-Source: AG47ELsnGVfi1sl9zQv+ujGA5QHuIbTKeGCQ1usuRRts3a6iDf2R9CDhc1FXggnYop0upJrx2SameOSA2zsgRPrTDLs= X-Received: by 10.107.175.79 with SMTP id y76mr6235425ioe.215.1521116409704; Thu, 15 Mar 2018 05:20:09 -0700 (PDT) MIME-Version: 1.0 Received: by 10.2.30.221 with HTTP; Thu, 15 Mar 2018 05:20:08 -0700 (PDT) In-Reply-To: References: <20180311165209.GA60279@troutmask.apl.washington.edu> <20180311204239.GA56613@troutmask.apl.washington.edu> <20180312173706.GB61632@troutmask.apl.washington.edu> <20180313040809.GA69151@troutmask.apl.washington.edu> <20180314005722.GA43280@troutmask.apl.washington.edu> From: "Bin.Cheng" Date: Thu, 15 Mar 2018 12:20:00 -0000 Message-ID: Subject: Re: [PATCH] Fortran -- clean up KILL To: sgk@troutmask.apl.washington.edu Cc: Janne Blomqvist , Fortran List , GCC Patches Content-Type: text/plain; charset="UTF-8" X-SW-Source: 2018-03/txt/msg00059.txt.bz2 On Thu, Mar 15, 2018 at 12:11 PM, Bin.Cheng wrote: > On Thu, Mar 15, 2018 at 10:18 AM, Bin.Cheng wrote: >> On Wed, Mar 14, 2018 at 12:57 AM, Steve Kargl >> wrote: >>> On Tue, Mar 13, 2018 at 09:49:10PM +0200, Janne Blomqvist wrote: >>>> >>>> int val = kill (pid, signal); >>>> return (val == 0): 0 ? errno; >>>> >>>> like it already does for the optional status argument for kill_sub. >>>> >>> >>> Committed as r258511 with your suggested change. >> Hi Steve, >> >> After this change, AArch64/arm bare-metal cross (fortran) toolchain >> fail to build with below error message: >> >> /.../obj/gcc2/./gcc/xgcc -B/.../obj/gcc2/./gcc/ >> -B/.../install/aarch64-none-elf/bin/ >> -B/.../install/aarch64-none-elf/lib/ -isystem >> /.../install/aarch64-none-elf/include -isystem >> /.../install/aarch64-none-elf/sys-include -DHAVE_CONFIG_H -I. >> -I/.../gcc/libgfortran -iquote/.../gcc/libgfortran/io >> -I/.../gcc/libgfortran/../gcc -I/.../gcc/libgfortran/../gcc/config >> -I../../.././gcc -I/.../gcc/libgfortran/../libgcc -I../../libgcc >> -I/.../gcc/libgfortran/../libbacktrace -I../../libbacktrace >> -I../libbacktrace -std=gnu11 -Wall -Wstrict-prototypes >> -Wmissing-prototypes -Wold-style-definition -Wextra -Wwrite-strings >> -Werror=implicit-function-declaration -Werror=vla -fcx-fortran-rules >> -ffunction-sections -fdata-sections -g -ffunction-sections >> -fdata-sections -O2 -mabi=ilp32 -MT kill.lo -MD -MP -MF .deps/kill.Tpo >> -c /.../gcc/libgfortran/intrinsics/kill.c -o kill.o >> /.../gcc/libgfortran/intrinsics/kill.c:54:22: error: conflicting types >> for 'kill' >> extern GFC_INTEGER_4 kill (GFC_INTEGER_4, GFC_INTEGER_4); >> ^~~~ >> In file included from /.../install/aarch64-none-elf/include/signal.h:6, >> from /.../gcc/libgfortran/intrinsics/kill.c:28: >> /.../install/aarch64-none-elf/include/sys/signal.h:176:5: note: >> previous declaration of 'kill' was here >> int kill (pid_t, int); >> ^~~~ >> In file included from /.../gcc/libgfortran/intrinsics/kill.c:26: >> /.../gcc/libgfortran/intrinsics/kill.c:55:14: error: conflicting types >> for 'kill' >> export_proto(kill); >> ^~~~ >> /.../gcc/libgfortran/libgfortran.h:150:57: note: in definition of >> macro 'sym_rename2' >> #define sym_rename2(old, ulp, new) extern __typeof(old) old __asm__(#ulp #new) >> ^~~ >> /.../gcc/libgfortran/libgfortran.h:148:30: note: in expansion of macro >> 'sym_rename1' >> #define sym_rename(old, new) sym_rename1(old, __USER_LABEL_PREFIX__, new) >> ^~~~~~~~~~~ >> /.../gcc/libgfortran/libgfortran.h:195:26: note: in expansion of macro >> 'sym_rename' >> # define export_proto(x) sym_rename(x, PREFIX(x)) >> ^~~~~~~~~~ >> /.../gcc/libgfortran/intrinsics/kill.c:55:1: note: in expansion of >> macro 'export_proto' >> export_proto(kill); >> ^~~~~~~~~~~~ >> In file included from /.../install/aarch64-none-elf/include/signal.h:6, >> from /.../gcc/libgfortran/intrinsics/kill.c:28: >> /.../install/aarch64-none-elf/include/sys/signal.h:176:5: note: >> previous declaration of 'kill' was here >> int kill (pid_t, int); >> ^~~~ >> /.../gcc/libgfortran/intrinsics/kill.c:58:1: error: conflicting types for 'kill' >> kill (GFC_INTEGER_4 pid, GFC_INTEGER_4 signal) >> ^~~~ >> In file included from /.../install/aarch64-none-elf/include/signal.h:6, >> from /.../gcc/libgfortran/intrinsics/kill.c:28: >> /.../install/aarch64-none-elf/include/sys/signal.h:176:5: note: >> previous declaration of 'kill' was here >> int kill (pid_t, int); >> ^~~~ >> >> The gcc is configured with: >> gcc/configure --target=aarch64-none-elf --prefix=... >> --with-gmp=.../host-tools --with-mpfr=.../host-tools >> --with-mpc=.../host-tools --with-isl=.../host-tools >> --with-pkgversion=unknown --disable-shared --disable-nls >> --disable-threads --disable-tls --enable-checking=yes >> --enable-languages=c,c++ --with-newlib >> --enable-languages=c,c++,fortran >> >> I don't know fortran, so any suggestion how to fix this? >> Note that -mabi=ilp32 is required to reproduce the breakage. > > So the pre-processed file for libgfortran/intrinsics/kill.c is like: > > > int kill (pid_t, int); > > //...... > > extern GFC_INTEGER_4 kill (GFC_INTEGER_4, GFC_INTEGER_4); > extern __typeof(kill) kill __asm__("" "_gfortran_kill"); > > GFC_INTEGER_4 > kill (GFC_INTEGER_4 pid, GFC_INTEGER_4 signal) > { > int val; > val = (int)kill (pid, signal); > return ((val == 0) ? 0 : > # 62 "/.../gcc/libgfortran/intrinsics/kill.c" 3 4 > (*__errno()) > # 62 "/.../gcc/libgfortran/intrinsics/kill.c" > ); > } > > I suppose fortran wants to define its own kill returning errorno > directly on failure. > The problem is below declaration: > > extern GFC_INTEGER_4 kill (GFC_INTEGER_4, GFC_INTEGER_4); > > could conflict with included c declaration which is: > > int kill (pid_t, int); > > Even GFC_INTEGER_4 is typedef as int32_t, we can't rely on that is the > same as int type, right? > In this case, int32_t is defined as long int on aarch64_ilp32 or arm > bare-metal toolchains. > > Any idea to resolve the inconsistency? https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84880 filed. > > Thanks, > bin >> >> Thanks, >> bin >>> >>> -- >>> Steve