svn commit: trunk/uClibc/libc/sysdeps/linux: arm common frv i386 m68k powerpc sh spar etc...

psm at uclibc.org psm at uclibc.org
Thu Dec 15 19:51:23 UTC 2005


Author: psm
Date: 2005-12-15 11:49:58 -0800 (Thu, 15 Dec 2005)
New Revision: 12904

Log:
Hide fork and vfork, use the newly introduced *alias

Modified:
   trunk/uClibc/libc/sysdeps/linux/arm/vfork.S
   trunk/uClibc/libc/sysdeps/linux/common/fork.c
   trunk/uClibc/libc/sysdeps/linux/common/vfork.c
   trunk/uClibc/libc/sysdeps/linux/frv/vfork.S
   trunk/uClibc/libc/sysdeps/linux/i386/vfork.S
   trunk/uClibc/libc/sysdeps/linux/m68k/vfork.S
   trunk/uClibc/libc/sysdeps/linux/powerpc/vfork.S
   trunk/uClibc/libc/sysdeps/linux/powerpc/vfork.c
   trunk/uClibc/libc/sysdeps/linux/sh/vfork.S
   trunk/uClibc/libc/sysdeps/linux/sparc/fork.S
   trunk/uClibc/libc/sysdeps/linux/sparc/vfork.S
   trunk/uClibc/libc/sysdeps/linux/x86_64/vfork.S


Changeset:
Modified: trunk/uClibc/libc/sysdeps/linux/arm/vfork.S
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/arm/vfork.S	2005-12-15 19:47:05 UTC (rev 12903)
+++ trunk/uClibc/libc/sysdeps/linux/arm/vfork.S	2005-12-15 19:49:58 UTC (rev 12904)
@@ -8,17 +8,21 @@
  * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  */
 
+#include <features.h>
+
 #define _ERRNO_H
 #include <bits/errno.h>
 #include <sys/syscall.h>
 
 #ifdef __NR_fork
 .text
-.global vfork
-.type vfork,%function
+.global	__vfork
+.hidden	__vfork
+.type	__vfork,%function
 .align 4
-vfork:
 
+__vfork:
+
 #ifdef __NR_vfork
 	swi	__NR_vfork
 	cmn	r0, #4096
@@ -34,11 +38,12 @@
 	swi     __NR_fork
 	cmn     r0, #4096
 
-	/* Syscal worked.  Return to child/parent */
+	/* Syscall worked.  Return to child/parent */
 	movcc   pc, lr
 
 __error:
 	b	__syscall_error
 
-.size vfork,.-vfork
+.size __vfork,.-__vfork
+strong_alias(__vfork,vfork)
 #endif

Modified: trunk/uClibc/libc/sysdeps/linux/common/fork.c
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/common/fork.c	2005-12-15 19:47:05 UTC (rev 12903)
+++ trunk/uClibc/libc/sysdeps/linux/common/fork.c	2005-12-15 19:49:58 UTC (rev 12904)
@@ -12,8 +12,9 @@
 
 #ifdef __ARCH_HAS_MMU__
 #ifdef __NR_fork
-#define __NR___libc_fork __NR_fork
-_syscall0(pid_t, __libc_fork);
-weak_alias(__libc_fork, fork);
+#define __NR___fork __NR_fork
+attribute_hidden _syscall0(pid_t, __fork);
+strong_alias(__fork,fork)
+weak_alias(__fork,__libc_fork)
 #endif
 #endif

Modified: trunk/uClibc/libc/sysdeps/linux/common/vfork.c
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/common/vfork.c	2005-12-15 19:47:05 UTC (rev 12903)
+++ trunk/uClibc/libc/sysdeps/linux/common/vfork.c	2005-12-15 19:49:58 UTC (rev 12904)
@@ -2,7 +2,10 @@
 #include <unistd.h>
 #include <sys/types.h>
 
-pid_t vfork(void)
+extern __pid_t __fork (void) __THROW attribute_hidden;
+
+pid_t attribute_hidden __vfork(void)
 {
-    return fork();
+    return __fork();
 }
+strong_alias(__vfork,vfork)

Modified: trunk/uClibc/libc/sysdeps/linux/frv/vfork.S
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/frv/vfork.S	2005-12-15 19:47:05 UTC (rev 12903)
+++ trunk/uClibc/libc/sysdeps/linux/frv/vfork.S	2005-12-15 19:49:58 UTC (rev 12904)
@@ -17,15 +17,18 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <features.h>
+
 #include <asm/unistd.h>
 #define _ERRNO_H       1
 #include <bits/errno.h>
 
        .text
-       .globl  vfork
-       .type vfork, at function
+       .globl	__vfork
+       .hidden	__vfork
+       .type	__vfork, at function
 /* int vfork(void) */
-vfork:
+__vfork:
 	setlos.p #__NR_vfork, gr7
 	setlos	#-4096, gr4
 	tra	gr0, gr0
@@ -38,5 +41,6 @@
 	ldd	@(gr14, gr15), gr14
 	jmpl	@(gr14, gr0)
 
-       .size   vfork,.-vfork
+       .size   __vfork,.-__vfork
 
+strong_alias(__vfork,vfork)

Modified: trunk/uClibc/libc/sysdeps/linux/i386/vfork.S
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/i386/vfork.S	2005-12-15 19:47:05 UTC (rev 12903)
+++ trunk/uClibc/libc/sysdeps/linux/i386/vfork.S	2005-12-15 19:49:58 UTC (rev 12904)
@@ -3,17 +3,20 @@
  *
  */
 
+#include <features.h>
 #include <sys/syscall.h>
 
 #ifndef __NR_vfork
 
 /* No vfork so use fork instead */
-.weak vfork ; vfork = __libc_fork
+hidden_strong_alias(__fork,__vfork)
+weak_alias(vfork,__libc_fork)
 
 #else
 
 .text
 .global __vfork
+.hidden __vfork
 .type   __vfork,%function
 .align 1<<4
 
@@ -27,7 +30,5 @@
 	ret
 
 .size __vfork,.-__vfork
-
-
-.weak vfork ; vfork = __vfork
 #endif
+strong_alias(__vfork,vfork)

Modified: trunk/uClibc/libc/sysdeps/linux/m68k/vfork.S
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/m68k/vfork.S	2005-12-15 19:47:05 UTC (rev 12903)
+++ trunk/uClibc/libc/sysdeps/linux/m68k/vfork.S	2005-12-15 19:49:58 UTC (rev 12904)
@@ -1,3 +1,4 @@
+#include <features.h>
 
 #include <asm/unistd.h>
 
@@ -10,11 +11,13 @@
 	.text
 	.align 2
 	.globl errno
-	.globl vfork
-#if defined __HAVE_ELF__
-	.type	 vfork, at function
+	.globl	__vfork
+#ifdef __HAVE_ELF__
+	.hidden	__vfork
+	.type	__vfork, at function
 #endif
-vfork:
+
+__vfork:
 	movl	%sp at +, %a1               /* save the return address for later */
 	movl	IMM __NR_vfork,%d0
 	trap	#0
@@ -24,7 +27,7 @@
 	jmp		%a1@                     /* don't return,  just jmp directly */
 fix_errno:
 	negl	%d0
-#ifndef __PIC__
+#ifndef __PIC__					/* needs handling as the other archs */
 	movl	errno, %a0
 #else
 	movl	errno at GOT(%a5), %a0
@@ -33,3 +36,5 @@
 	movl	IMM -1, %d0
 	jmp		%a1@                     /* don't return,  just jmp directly */
 
+.size __vfork,.-__vfork
+strong_alias(__vfork,vfork)

Modified: trunk/uClibc/libc/sysdeps/linux/powerpc/vfork.S
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/powerpc/vfork.S	2005-12-15 19:47:05 UTC (rev 12903)
+++ trunk/uClibc/libc/sysdeps/linux/powerpc/vfork.S	2005-12-15 19:49:58 UTC (rev 12904)
@@ -1,3 +1,4 @@
+#include <features.h>
 #include <sys/syscall.h>
 
 #ifndef __NR_vfork
@@ -3,10 +4,12 @@
 
 /* No vfork so use fork instead */
-.weak vfork ; vfork = __libc_fork
+hidden_strong_alias(__fork,__vfork)
+weak_alias(vfork,__libc_fork)
 
 #else
 
 .text
 .global __vfork
+.hidden	__vfork
 .type   __vfork, at function
 .type   __syscall_error, at function
@@ -17,7 +20,7 @@
 	sc
 	bnslr+
 	b	__syscall_error
+
 .size __vfork,.-__vfork
-
-.weak vfork ; vfork = __vfork
 #endif
+strong_alias(__vfork,vfork)

Modified: trunk/uClibc/libc/sysdeps/linux/powerpc/vfork.c
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/powerpc/vfork.c	2005-12-15 19:47:05 UTC (rev 12903)
+++ trunk/uClibc/libc/sysdeps/linux/powerpc/vfork.c	2005-12-15 19:49:58 UTC (rev 12904)
@@ -9,7 +9,7 @@
 	return (__sc_err & 0x10000000 ? errno = __sc_ret, __sc_ret = -1 : 0), \
 	       (type) __sc_ret
 
-pid_t vfork(void)
+pid_t attribute_hidden __vfork(void)
 {
 	unsigned long __sc_ret, __sc_err;
 	register unsigned long __sc_0 __asm__ ("r0");
@@ -46,4 +46,4 @@
 
 	__syscall_return (pid_t);
 }
-
+strong_alias(__vfork,vfork)

Modified: trunk/uClibc/libc/sysdeps/linux/sh/vfork.S
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/sh/vfork.S	2005-12-15 19:47:05 UTC (rev 12903)
+++ trunk/uClibc/libc/sysdeps/linux/sh/vfork.S	2005-12-15 19:49:58 UTC (rev 12904)
@@ -32,9 +32,11 @@
    and the process ID of the new process to the old process.  */
 
 .text
+.globl	__vfork
+.hidden	__vfork
+.type	__vfork, at function
 .align 4
-.type	__vfork, at function
-.globl	__vfork;
+
 __vfork:
 	mov.w	.L2, r3
 	trapa	#0x10
@@ -104,9 +106,9 @@
 	.word	__NR_vfork
 .L3:
 	.word	__NR_fork
-        .size   __vfork, .-__vfork
-.weak	vfork
-	vfork =  __vfork
 
+.size   __vfork, .-__vfork
+strong_alias(__vfork,vfork)
+
 #include "syscall_error.S"
 

Modified: trunk/uClibc/libc/sysdeps/linux/sparc/fork.S
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/sparc/fork.S	2005-12-15 19:47:05 UTC (rev 12903)
+++ trunk/uClibc/libc/sysdeps/linux/sparc/fork.S	2005-12-15 19:49:58 UTC (rev 12904)
@@ -19,14 +19,16 @@
 
 /* Code taken from glibc2.2.2/sysdeps/unix/sysv/linux/sparc/vfork.S */
 
+#include <features.h>
 #include <sys/syscall.h>
 
 .text
-.global	__libc_fork
-.type   __libc_fork,%function
+.global	__fork
+.hidden	__fork
+.type	__fork,%function
 .align 4
 
-__libc_fork:
+__fork:
 	mov __NR_fork, %g1
 	ta	0x10
 	bcc,a	9000f
@@ -43,7 +45,6 @@
 	retl
 	and	%o0, %o1, %o0
 
-.size __libc_fork,.-__libc_fork
-
-.weak fork
-	fork = __libc_fork
+.size __fork,.-__fork
+strong_alias(__fork,fork)
+weak_alias(fork,__libc_fork)

Modified: trunk/uClibc/libc/sysdeps/linux/sparc/vfork.S
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/sparc/vfork.S	2005-12-15 19:47:05 UTC (rev 12903)
+++ trunk/uClibc/libc/sysdeps/linux/sparc/vfork.S	2005-12-15 19:49:58 UTC (rev 12904)
@@ -23,14 +23,16 @@
 
 #ifndef __NR_vfork
 /* No vfork so use fork instead */
-.weak vfork
-	vfork = __libc_fork
 
+hidden_strong_alias(__fork,__vfork)
+weak_alias(vfork,__libc_fork)
+
 #else
 
 .text
-.global	vfork
-.type   vfork,%function
+.global	__vfork
+.hidden	__vfork
+.type	__vfork,%function
 .align 4
 
 __vfork:
@@ -51,8 +53,5 @@
 	and	%o0, %o1, %o0
 
 .size __vfork,.-__vfork
-
-.weak vfork
-	vfork = __vfork
-
 #endif /* __NR_vfork */
+strong_alias(__vfork,vfork)

Modified: trunk/uClibc/libc/sysdeps/linux/x86_64/vfork.S
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/x86_64/vfork.S	2005-12-15 19:47:05 UTC (rev 12903)
+++ trunk/uClibc/libc/sysdeps/linux/x86_64/vfork.S	2005-12-15 19:49:58 UTC (rev 12904)
@@ -16,6 +16,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <features.h>
 #include <sys/syscall.h>
 
 /* Clone the calling process, but without copying the whole address space.
@@ -25,15 +26,17 @@
 
 #ifndef __NR_vfork
 /* No vfork so use fork instead */
-.weak vfork
-	vfork = __libc_fork
+hidden_strong_alias(__fork,__vfork)
+weak_alias(vfork,__libc_fork)
 
 #else
 
 .text
 .global __vfork
+.hidden __vfork
 .type	__vfork,%function
 .align 16
+
 __vfork:
 
 	/* Pop the return PC value into RDI.  We need a register that
@@ -58,7 +61,5 @@
 
 .size __vfork,.-__vfork
 
-.weak vfork
-	vfork = __vfork
-
 #endif /* __NR_vfork */
+strong_alias(__vfork,vfork)




More information about the uClibc-cvs mailing list