From patchwork Tue Jul 19 16:12:58 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mike Frysinger X-Patchwork-Id: 13881 X-Patchwork-Delegate: vapier@gentoo.org Received: (qmail 84857 invoked by alias); 19 Jul 2016 16:13:08 -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 84843 invoked by uid 89); 19 Jul 2016 16:13:06 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.2 required=5.0 tests=BAYES_00, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 spammy=brki, Frysinger, frysinger X-HELO: smtp.gentoo.org From: Mike Frysinger To: libc-alpha@sourceware.org Subject: [PATCH/committed] microblaze: fix variable name collision with syscall macros Date: Tue, 19 Jul 2016 21:42:58 +0530 Message-Id: <20160719161258.10137-1-vapier@gentoo.org> If a function passes in a variable named "ret", the code will miscompile when it declares a local ret variable. In some cases, it's even a build failure like so: ../sysdeps/unix/sysv/linux/spawni.c: In function '__spawni_child': ../sysdeps/unix/sysv/linux/spawni.c:289:5: error: address of register variable 'ret' requested while (write_not_cancel (p, &ret, sizeof ret) < 0) Committed as obvious. --- ChangeLog | 7 +++++ sysdeps/unix/sysv/linux/microblaze/sysdep.h | 42 ++++++++++++++--------------- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index 639630facd02..a2939995d434 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2016-07-19 Mike Frysinger + + * sysdeps/unix/sysv/linux/microblaze/sysdep.h (inline_syscall0): + Rename "ret" to "__ret". + (inline_syscall1, inline_syscall2, inline_syscall3, inline_syscall4, + inline_syscall5, inline_syscall6): Likewise. + 2016-07-19 Will Newton * elf/elf.h (R_METAG_REL8, R_METAG_REL16, R_METAG_TLS_GD diff --git a/sysdeps/unix/sysv/linux/microblaze/sysdep.h b/sysdeps/unix/sysv/linux/microblaze/sysdep.h index abc13c25ca64..b83c436d0cb4 100644 --- a/sysdeps/unix/sysv/linux/microblaze/sysdep.h +++ b/sysdeps/unix/sysv/linux/microblaze/sysdep.h @@ -209,70 +209,70 @@ SYSCALL_ERROR_LABEL_DCL: \ # define inline_syscall0(name,dummy) \ ({ \ - register long ret __asm__("r3"); \ + register long __ret __asm__("r3"); \ register long __r12 __asm__("r12") = name; \ __asm__ __volatile__( "brki r14,8; nop;" \ - : "=r"(ret) \ + : "=r"(__ret) \ : "r"(__r12) \ - : SYSCALL_CLOBBERS_0 ); ret; \ + : SYSCALL_CLOBBERS_0 ); __ret; \ }) # define inline_syscall1(name,arg1) \ ({ \ - register long ret __asm__("r3"); \ + register long __ret __asm__("r3"); \ register long __r12 __asm__("r12") = name; \ register long __r5 __asm__("r5") = (long)(arg1); \ __asm__ __volatile__( "brki r14,8; nop;" \ - : "=r"(ret) \ + : "=r"(__ret) \ : "r"(__r5), "r"(__r12) \ - : SYSCALL_CLOBBERS_1 ); ret; \ + : SYSCALL_CLOBBERS_1 ); __ret; \ }) # define inline_syscall2(name,arg1,arg2) \ ({ \ - register long ret __asm__("r3"); \ + register long __ret __asm__("r3"); \ register long __r12 __asm__("r12") = name; \ register long __r5 __asm__("r5") = (long)(arg1); \ register long __r6 __asm__("r6") = (long)(arg2); \ __asm__ __volatile__( "brki r14,8; nop;" \ - : "=r"(ret) \ + : "=r"(__ret) \ : "r"(__r5), "r"(__r6), "r"(__r12) \ - : SYSCALL_CLOBBERS_2 ); ret; \ + : SYSCALL_CLOBBERS_2 ); __ret; \ }) # define inline_syscall3(name,arg1,arg2,arg3) \ ({ \ - register long ret __asm__("r3"); \ + register long __ret __asm__("r3"); \ register long __r12 __asm__("r12") = name; \ register long __r5 __asm__("r5") = (long)(arg1); \ register long __r6 __asm__("r6") = (long)(arg2); \ register long __r7 __asm__("r7") = (long)(arg3); \ __asm__ __volatile__( "brki r14,8; nop;" \ - : "=r"(ret) \ + : "=r"(__ret) \ : "r"(__r5), "r"(__r6), "r"(__r7), "r"(__r12) \ - : SYSCALL_CLOBBERS_3 ); ret; \ + : SYSCALL_CLOBBERS_3 ); __ret; \ }) # define inline_syscall4(name,arg1,arg2,arg3,arg4) \ ({ \ - register long ret __asm__("r3"); \ + register long __ret __asm__("r3"); \ register long __r12 __asm__("r12") = name; \ register long __r5 __asm__("r5") = (long)(arg1); \ register long __r6 __asm__("r6") = (long)(arg2); \ register long __r7 __asm__("r7") = (long)(arg3); \ register long __r8 __asm__("r8") = (long)(arg4); \ __asm__ __volatile__( "brki r14,8; nop;" \ - : "=r"(ret) \ + : "=r"(__ret) \ : "r"(__r5), "r"(__r6), "r"(__r7), "r"(__r8),"r"(__r12) \ - : SYSCALL_CLOBBERS_4 ); ret; \ + : SYSCALL_CLOBBERS_4 ); __ret; \ }) # define inline_syscall5(name,arg1,arg2,arg3,arg4,arg5) \ ({ \ - register long ret __asm__("r3"); \ + register long __ret __asm__("r3"); \ register long __r12 __asm__("r12") = name; \ register long __r5 __asm__("r5") = (long)(arg1); \ register long __r6 __asm__("r6") = (long)(arg2); \ @@ -280,15 +280,15 @@ SYSCALL_ERROR_LABEL_DCL: \ register long __r8 __asm__("r8") = (long)(arg4); \ register long __r9 __asm__("r9") = (long)(arg5); \ __asm__ __volatile__( "brki r14,8; nop;" \ - : "=r"(ret) \ + : "=r"(__ret) \ : "r"(__r5), "r"(__r6), "r"(__r7), "r"(__r8),"r"(__r9), "r"(__r12) \ - : SYSCALL_CLOBBERS_5 ); ret; \ + : SYSCALL_CLOBBERS_5 ); __ret; \ }) # define inline_syscall6(name,arg1,arg2,arg3,arg4,arg5,arg6) \ ({ \ - register long ret __asm__("r3"); \ + register long __ret __asm__("r3"); \ register long __r12 __asm__("r12") = name; \ register long __r5 __asm__("r5") = (long)(arg1); \ register long __r6 __asm__("r6") = (long)(arg2); \ @@ -297,10 +297,10 @@ SYSCALL_ERROR_LABEL_DCL: \ register long __r9 __asm__("r9") = (long)(arg5); \ register long __r10 __asm__("r10") = (long)(arg6); \ __asm__ __volatile__( "brki r14,8; nop;" \ - : "=r"(ret) \ + : "=r"(__ret) \ : "r"(__r5), "r"(__r6), "r"(__r7), "r"(__r8),"r"(__r9), "r"(__r10), \ "r"(__r12) \ - : SYSCALL_CLOBBERS_6 ); ret; \ + : SYSCALL_CLOBBERS_6 ); __ret; \ })