From owner-svn-src-head@FreeBSD.ORG Sat Jan 21 08:32:49 2012 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 23F12106567B; Sat, 21 Jan 2012 08:32:49 +0000 (UTC) (envelope-from andreast@fgznet.ch) Received: from smtp.fgznet.ch (mail.fgznet.ch [81.92.96.47]) by mx1.freebsd.org (Postfix) with ESMTP id 7AC468FC25; Sat, 21 Jan 2012 08:32:47 +0000 (UTC) Received: from t43.andreas.nets (dhclient-91-190-14-19.flashcable.ch [91.190.14.19]) by smtp.fgznet.ch (8.13.8/8.13.8/Submit_SMTPAUTH) with ESMTP id q0L84aOu044757; Sat, 21 Jan 2012 09:04:42 +0100 (CET) (envelope-from andreast@fgznet.ch) Message-ID: <4F1A72DC.7020107@fgznet.ch> Date: Sat, 21 Jan 2012 09:10:04 +0100 From: Andreas Tobler User-Agent: Mozilla/5.0 (X11; FreeBSD i386; rv:9.0) Gecko/20111223 Thunderbird/9.0 MIME-Version: 1.0 To: Bruce Evans References: <201201060921.q069Lfi8081051@svn.freebsd.org> <20120106225728.G9027@besplex.bde.org> In-Reply-To: <20120106225728.G9027@besplex.bde.org> Content-Type: multipart/mixed; boundary="------------020307030102060007060008" X-Scanned-By: MIMEDefang 2.64 on 81.92.96.47 Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, Andreas Tobler Subject: Re: svn commit: r229693 - in head/lib/libc: powerpc powerpc64 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2012 08:32:49 -0000 This is a multi-part message in MIME format. --------------020307030102060007060008 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit I write this reply from another machine... Here is what I have tested so far. Is this the right approach? Thank you in advance, Andreas --------------020307030102060007060008 Content-Type: text/plain; name="weak_ref.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="weak_ref.diff" Index: lib/libc/powerpc/SYS.h =================================================================== --- lib/libc/powerpc/SYS.h (revision 230383) +++ lib/libc/powerpc/SYS.h (working copy) @@ -33,38 +33,38 @@ #include #include -#define _SYSCALL(x) \ - .text; \ - .align 2; \ - li 0,(__CONCAT(SYS_,x)); \ +#define _SYSCALL(name) \ + .text; \ + .align 2; \ + li 0,(__CONCAT(SYS_, name)); \ sc -#define SYSCALL(x) \ - .text; \ - .align 2; \ -2: b PIC_PLT(CNAME(HIDENAME(cerror))); \ -ENTRY(__CONCAT(__sys_,x)); \ - WEAK_ALIAS(x,__CONCAT(__sys_,x)); \ - WEAK_ALIAS(__CONCAT(_,x),__CONCAT(__sys_,x)); \ - _SYSCALL(x); \ +#define SYSCALL(name) \ + .text; \ + .align 2; \ +2: b PIC_PLT(CNAME(HIDENAME(cerror))); \ +ENTRY(__CONCAT(__sys_, name)); \ + WEAK_REFERENCE(__CONCAT(__sys_, name), name); \ + WEAK_REFERENCE(__CONCAT(__sys_, name), __CONCAT(_, name)); \ + _SYSCALL(name); \ bso 2b -#define PSEUDO(x) \ - .text; \ - .align 2; \ -ENTRY(__CONCAT(__sys_,x)); \ - WEAK_ALIAS(__CONCAT(_,x),__CONCAT(__sys_,x)); \ - _SYSCALL(x); \ - bnslr; \ +#define PSEUDO(name) \ + .text; \ + .align 2; \ +ENTRY(__CONCAT(__sys_, name)); \ + WEAK_REFERENCE(__CONCAT(__sys_, name), __CONCAT(_, name)); \ + _SYSCALL(name); \ + bnslr; \ b PIC_PLT(CNAME(HIDENAME(cerror))) -#define RSYSCALL(x) \ - .text; \ - .align 2; \ -2: b PIC_PLT(CNAME(HIDENAME(cerror))); \ -ENTRY(__CONCAT(__sys_,x)); \ - WEAK_ALIAS(x,__CONCAT(__sys_,x)); \ - WEAK_ALIAS(__CONCAT(_,x), __CONCAT(__sys_,x)); \ - _SYSCALL(x); \ - bnslr; \ +#define RSYSCALL(name) \ + .text; \ + .align 2; \ +2: b PIC_PLT(CNAME(HIDENAME(cerror))); \ +ENTRY(__CONCAT(__sys_, name)); \ + WEAK_REFERENCE(__CONCAT(__sys_, name), name); \ + WEAK_REFERENCE(__CONCAT(__sys_, name), __CONCAT(_, name)); \ + _SYSCALL(name); \ + bnslr; \ b PIC_PLT(CNAME(HIDENAME(cerror))) Index: lib/libc/powerpc/gen/setjmp.S =================================================================== --- lib/libc/powerpc/gen/setjmp.S (revision 230383) +++ lib/libc/powerpc/gen/setjmp.S (working copy) @@ -69,7 +69,7 @@ li %r3,0 /* return (0) */ blr - WEAK_ALIAS(longjmp, __longjmp) + WEAK_REFERENCE(CNAME(__longjmp), longjmp) ENTRY(__longjmp) lmw %r9,20(%r3) /* restore regs */ mr %r6,%r4 /* save val param */ Index: lib/libc/powerpc64/SYS.h =================================================================== --- lib/libc/powerpc64/SYS.h (revision 230383) +++ lib/libc/powerpc64/SYS.h (working copy) @@ -33,62 +33,62 @@ #include #include -#define _SYSCALL(x) \ - .text; \ - .align 2; \ - li 0,(__CONCAT(SYS_,x)); \ +#define _SYSCALL(name) \ + .text; \ + .align 2; \ + li 0,(__CONCAT(SYS_, name)); \ sc -#define SYSCALL(x) \ - .text; \ - .align 2; \ -2: mflr %r0; \ - std %r0,16(%r1); \ - stdu %r1,-48(%r1); \ - bl CNAME(HIDENAME(cerror)); \ - nop; \ - addi %r1,%r1,48; \ - ld %r0,16(%r1); \ - mtlr %r0; \ - blr; \ -ENTRY(__CONCAT(__sys_,x)); \ - WEAK_ALIAS(x,__CONCAT(__sys_,x)); \ - WEAK_ALIAS(__CONCAT(_,x),__CONCAT(__sys_,x)); \ - _SYSCALL(x); \ +#define SYSCALL(name) \ + .text; \ + .align 2; \ +2: mflr %r0; \ + std %r0,16(%r1); \ + stdu %r1,-48(%r1); \ + bl CNAME(HIDENAME(cerror)); \ + nop; \ + addi %r1,%r1,48; \ + ld %r0,16(%r1); \ + mtlr %r0; \ + blr; \ +ENTRY(__CONCAT(__sys_, name)); \ + WEAK_REFERENCE(__CONCAT(__sys_, name), name); \ + WEAK_REFERENCE(__CONCAT(__sys_, name), __CONCAT(_, name)); \ + _SYSCALL(name); \ bso 2b -#define PSEUDO(x) \ - .text; \ - .align 2; \ -ENTRY(__CONCAT(__sys_,x)); \ - WEAK_ALIAS(__CONCAT(_,x),__CONCAT(__sys_,x)); \ - _SYSCALL(x); \ - bnslr; \ - mflr %r0; \ - std %r0,16(%r1); \ - stdu %r1,-48(%r1); \ - bl CNAME(HIDENAME(cerror)); \ - nop; \ - addi %r1,%r1,48; \ - ld %r0,16(%r1); \ - mtlr %r0; \ +#define PSEUDO(name) \ + .text; \ + .align 2; \ +ENTRY(__CONCAT(__sys_, name)); \ + WEAK_REFERENCE(__CONCAT(__sys_, name), __CONCAT(_, name)); \ + _SYSCALL(name); \ + bnslr; \ + mflr %r0; \ + std %r0,16(%r1); \ + stdu %r1,-48(%r1); \ + bl CNAME(HIDENAME(cerror)); \ + nop; \ + addi %r1,%r1,48; \ + ld %r0,16(%r1); \ + mtlr %r0; \ blr; -#define RSYSCALL(x) \ - .text; \ - .align 2; \ -ENTRY(__CONCAT(__sys_,x)); \ - WEAK_ALIAS(x,__CONCAT(__sys_,x)); \ - WEAK_ALIAS(__CONCAT(_,x), __CONCAT(__sys_,x)); \ - _SYSCALL(x); \ - bnslr; \ - \ - mflr %r0; \ - std %r0,16(%r1); \ - stdu %r1,-48(%r1); \ - bl CNAME(HIDENAME(cerror)); \ - nop; \ - addi %r1,%r1,48; \ - ld %r0,16(%r1); \ - mtlr %r0; \ +#define RSYSCALL(name) \ + .text; \ + .align 2; \ +ENTRY(__CONCAT(__sys_, name)); \ + WEAK_REFERENCE(__CONCAT(__sys_, name), name); \ + WEAK_REFERENCE(__CONCAT(__sys_, name), __CONCAT(_, name)); \ + _SYSCALL(name); \ + bnslr; \ + \ + mflr %r0; \ + std %r0,16(%r1); \ + stdu %r1,-48(%r1); \ + bl CNAME(HIDENAME(cerror)); \ + nop; \ + addi %r1,%r1,48; \ + ld %r0,16(%r1); \ + mtlr %r0; \ blr; Index: lib/libc/powerpc64/gen/setjmp.S =================================================================== --- lib/libc/powerpc64/gen/setjmp.S (revision 230396) +++ lib/libc/powerpc64/gen/setjmp.S (working copy) @@ -93,7 +93,7 @@ li %r3,0 /* return (0) */ blr - WEAK_ALIAS(longjmp, __longjmp) + WEAK_REFERENCE(__longjmp, longjmp) ENTRY(__longjmp) ld %r9,40 + 0*8(%r3) ld %r10,40 + 1*8(%r3) Index: sys/powerpc/include/asm.h =================================================================== --- sys/powerpc/include/asm.h (revision 230401) +++ sys/powerpc/include/asm.h (working copy) @@ -116,9 +116,9 @@ #define __FBSDID(s) /* nothing */ #endif /* not lint and not STRIP_FBSDID */ -#define WEAK_ALIAS(alias,sym) \ +#define WEAK_REFERENCE(sym, alias) \ .weak alias; \ - alias = sym + .equ alias, sym #ifdef __STDC__ #define WARN_REFERENCES(_sym,_msg) \ --------------020307030102060007060008--