From patchwork Tue Jun 21 11:54:36 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Schwab X-Patchwork-Id: 13279 Received: (qmail 77791 invoked by alias); 21 Jun 2016 11:54:52 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 77740 invoked by uid 89); 21 Jun 2016 11:54:51 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.3 required=5.0 tests=BAYES_00, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mx2.suse.de From: Andreas Schwab To: "Zhangjian \(Bamvor\)" Cc: Yury Norov , , , , , , , , , , , , Andrew Pinski , Subject: Re: [PATCH 11/27] [AARCH64] Syscalls for ILP32 are passed always via 64bit values. References: <1466485631-3532-1-git-send-email-ynorov@caviumnetworks.com> <1466485631-3532-13-git-send-email-ynorov@caviumnetworks.com> <5769281D.6090109@huawei.com> X-Yow: I think my CAREER is RUINED!! Date: Tue, 21 Jun 2016 13:54:36 +0200 In-Reply-To: <5769281D.6090109@huawei.com> (Zhangjian's message of "Tue, 21 Jun 2016 19:42:21 +0800") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 "Zhangjian (Bamvor)" writes: > Hi, > > On 2016/6/21 15:56, Andreas Schwab wrote: >> Yury Norov writes: >> >>> diff --git a/sysdeps/unix/sysv/linux/aarch64/sysdep.h b/sysdeps/unix/sysv/linux/aarch64/sysdep.h >>> index 1ffabc2..42f89c8 100644 >>> --- a/sysdeps/unix/sysv/linux/aarch64/sysdep.h >>> +++ b/sysdeps/unix/sysv/linux/aarch64/sysdep.h >>> @@ -161,11 +161,11 @@ >>> call. */ >>> # undef INLINE_SYSCALL >>> # define INLINE_SYSCALL(name, nr, args...) \ >>> - ({ unsigned long _sys_result = INTERNAL_SYSCALL (name, , nr, args); \ >>> + ({ unsigned long long _sys_result = INTERNAL_SYSCALL (name, , nr, args); \ >>> if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (_sys_result, ), 0))\ >>> { \ >>> __set_errno (INTERNAL_SYSCALL_ERRNO (_sys_result, )); \ >>> - _sys_result = (unsigned long) -1; \ >>> + _sys_result = (unsigned long long) -1; \ >>> } \ >>> (long) _sys_result; }) >> >> The cast should be (long long). > My understanding that we need more conversion, reference the follow patch: And this: Andreas. diff --git a/sysdeps/unix/sysv/linux/aarch64/sysdep.c b/sysdeps/unix/sysv/linux/aarch64/sysdep.c index f2d5480..1bec443 100644 --- a/sysdeps/unix/sysv/linux/aarch64/sysdep.c +++ b/sysdeps/unix/sysv/linux/aarch64/sysdep.c @@ -19,13 +19,13 @@ #include #include -long __syscall_error (long err); +long long __syscall_error (long long err); hidden_proto (__syscall_error) /* This routine is jumped to by all the syscall handlers, to stash an error number into errno. */ -long -__syscall_error (long err) +long long +__syscall_error (long long err) { __set_errno (- err); return -1;