2004-03-10  Jakub Jelinek  <jakub@redhat.com>

	* include/libc-symbols.h [__ASSEMBLY__] (compat_text_section,
	compat_data_section): Define.
	* sysdeps/unix/sysv/linux/alpha/adjtime.c (ADJTIME): Add
	attribute_compat_text_section.
	* sysdeps/unix/sysv/linux/alpha/wordexp.c (__old_wordexp): Likewise.
	* sysdeps/unix/sysv/linux/alpha/oldglob.c (__old_glob,
	__old_globfree): Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/chown.c (__chown_is_lchown):
	Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c
	(__posix_fadvise64_l32): Likewise.
	* sysdeps/unix/sysv/linux/msgctl.c (__old_msgctl): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c
	(__posix_fadvise64_l32): Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c (__old_semctl):
	Likewise.
	* sysdeps/unix/sysv/linux/semctl.c (__old_semctl): Likewise.
	* sysdeps/unix/sysv/linux/posix_fadvise64.c (__posix_fadvise64_l32):
	Likewise.
	* sysdeps/unix/sysv/linux/shmctl.c (__old_shmctl): Likewise.
	* hurd/compat-20.c (_hurd_proc_init_compat_20): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S
	(__swapcontext, __novec_swapcontext): Use END instead of PSEUDO_END.
	(__novec_swapcontext, __swapcontext_stub): Add compat_text_section.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S
	(__makecontext_stub): Likewise.
	(__novec_makecontext): Likewise.  Fix name in END () to match
	function name.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S
	(__setcontext): Use END instead of PSEUDO_END.
	(__novec_setcontext): Add compat_text_section.  Use END instead of
	PSEUDO_END, fix the name in END () to match function name.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S
	(__getcontext, __novec_getcontext): Use END instead of PSEUDO_END.
	(__novec_getcontext, __getcontext_stub): Add compat_text_section.

2004-03-10  Kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* sysdeps/sh/dl-machine.h: Don't use GL macro if not appropriate.
	(COPY_UNALIGNED_WORD): Remove cast used as lvalue.

2004-03-10  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/i386/dl-procinfo.h (HWCAP_IMPORTANT): Remove mmx, add sse2.
This commit is contained in:
Ulrich Drepper 2004-03-10 19:28:58 +00:00
parent 78678039a4
commit d3a4a571c4
34 changed files with 530 additions and 48 deletions

View File

@ -1,3 +1,50 @@
2004-03-10 Jakub Jelinek <jakub@redhat.com>
* include/libc-symbols.h [__ASSEMBLY__] (compat_text_section,
compat_data_section): Define.
* sysdeps/unix/sysv/linux/alpha/adjtime.c (ADJTIME): Add
attribute_compat_text_section.
* sysdeps/unix/sysv/linux/alpha/wordexp.c (__old_wordexp): Likewise.
* sysdeps/unix/sysv/linux/alpha/oldglob.c (__old_glob,
__old_globfree): Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/chown.c (__chown_is_lchown):
Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c
(__posix_fadvise64_l32): Likewise.
* sysdeps/unix/sysv/linux/msgctl.c (__old_msgctl): Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c
(__posix_fadvise64_l32): Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c (__old_semctl):
Likewise.
* sysdeps/unix/sysv/linux/semctl.c (__old_semctl): Likewise.
* sysdeps/unix/sysv/linux/posix_fadvise64.c (__posix_fadvise64_l32):
Likewise.
* sysdeps/unix/sysv/linux/shmctl.c (__old_shmctl): Likewise.
* hurd/compat-20.c (_hurd_proc_init_compat_20): Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S
(__swapcontext, __novec_swapcontext): Use END instead of PSEUDO_END.
(__novec_swapcontext, __swapcontext_stub): Add compat_text_section.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S
(__makecontext_stub): Likewise.
(__novec_makecontext): Likewise. Fix name in END () to match
function name.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S
(__setcontext): Use END instead of PSEUDO_END.
(__novec_setcontext): Add compat_text_section. Use END instead of
PSEUDO_END, fix the name in END () to match function name.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S
(__getcontext, __novec_getcontext): Use END instead of PSEUDO_END.
(__novec_getcontext, __getcontext_stub): Add compat_text_section.
2004-03-10 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* sysdeps/sh/dl-machine.h: Don't use GL macro if not appropriate.
(COPY_UNALIGNED_WORD): Remove cast used as lvalue.
2004-03-10 Ulrich Drepper <drepper@redhat.com>
* sysdeps/i386/dl-procinfo.h (HWCAP_IMPORTANT): Remove mmx, add sse2.
2004-03-10 Richard Henderson <rth@redhat.com> 2004-03-10 Richard Henderson <rth@redhat.com>
* sysdeps/generic/errno.c: Disable versioning for rtld. * sysdeps/generic/errno.c: Disable versioning for rtld.

View File

@ -1,5 +1,5 @@
/* Old-versioned functions for binary compatibility with glibc-2.0. /* Old-versioned functions for binary compatibility with glibc-2.0.
Copyright (C) 1998, 2000 Free Software Foundation, Inc. Copyright (C) 1998, 2000, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -28,6 +28,7 @@
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
void void
attribute_compat_text_section
_hurd_proc_init_compat_20 (char **argv) _hurd_proc_init_compat_20 (char **argv)
{ {
_hurd_proc_init (argv, NULL, 0); _hurd_proc_init (argv, NULL, 0);

View File

@ -761,9 +761,14 @@ for linking")
/* Move compatibility symbols out of the way by placing them all in a /* Move compatibility symbols out of the way by placing them all in a
special section. */ special section. */
#define attribute_compat_text_section \ #ifndef __ASSEMBLER__
# define attribute_compat_text_section \
__attribute__ ((section (".text.compat"))) __attribute__ ((section (".text.compat")))
#define attribute_compat_data_section \ # define attribute_compat_data_section \
__attribute__ ((section (".data.compat"))) __attribute__ ((section (".data.compat")))
#else
# define compat_text_section .section ".text.compat", "ax";
# define compat_data_section .section ".data.compat", "aw";
#endif
#endif /* libc-symbols.h */ #endif /* libc-symbols.h */

View File

@ -1,3 +1,30 @@
2004-03-10 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/s390/s390-32/pt-vfork.S: Include
tcb-offsets.h.
(__vfork): Negate PID if non-zero and set to INT_MIN if zero
before syscall, set to the old value in the parent afterwards.
* sysdeps/unix/sysv/linux/s390/s390-32/vfork.S: New file.
* sysdeps/unix/sysv/linux/s390/s390-64/pt-vfork.S: Include
tcb-offsets.h.
(__vfork): Negate PID if non-zero and set to INT_MIN if zero
before syscall, set to the old value in the parent afterwards.
* sysdeps/unix/sysv/linux/s390/s390-64/vfork.S: New file.
* sysdeps/s390/tcb-offsets.sym: Add PID.
* sysdeps/unix/sysv/linux/sparc/pt-vfork.S: Remove.
* sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S: New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S: New file.
* sysdeps/sparc/tcb-offsets.sym: Add PID.
2004-03-10 Andreas Schwab <schwab@suse.de>
* sysdeps/ia64/tcb-offsets.sym: Add PID.
* sysdeps/unix/sysv/linux/ia64/vfork.S: New file.
* sysdeps/unix/sysv/linux/ia64/pt-vfork.S: Properly handle PID cache.
2004-03-09 Jakub Jelinek <jakub@redhat.com> 2004-03-09 Jakub Jelinek <jakub@redhat.com>
* tst-cancel20.c (do_one_test): Clear in_sh_body first. * tst-cancel20.c (do_one_test): Clear in_sh_body first.

View File

@ -1,5 +1,6 @@
#include <sysdep.h> #include <sysdep.h>
#include <tls.h> #include <tls.h>
PID offsetof (struct pthread, pid) - sizeof (struct pthread)
MULTIPLE_THREADS_OFFSET offsetof (struct pthread, header.multiple_threads) - sizeof (struct pthread) MULTIPLE_THREADS_OFFSET offsetof (struct pthread, header.multiple_threads) - sizeof (struct pthread)
SYSINFO_OFFSET offsetof (tcbhead_t, private) SYSINFO_OFFSET offsetof (tcbhead_t, private)

View File

@ -2,3 +2,4 @@
#include <tls.h> #include <tls.h>
MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads) MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
PID offsetof (struct pthread, pid)

View File

@ -2,3 +2,4 @@
#include <tls.h> #include <tls.h>
MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads) MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
PID offsetof (struct pthread, pid)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. /* Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -32,13 +32,22 @@
ENTRY(__vfork) ENTRY(__vfork)
.prologue // work around a GAS bug which triggers if .prologue // work around a GAS bug which triggers if
.body // first .prologue is not at the beginning of proc. .body // first .prologue is not at the beginning of proc.
alloc r2=ar.pfs,0,0,2,0 alloc r2=ar.pfs,0,1,2,0
adds r14=PID,r13
;;
ld4 loc0=[r14]
;;
sub r15=0,loc0
mov out0=CLONE_VM+CLONE_VFORK+SIGCHLD mov out0=CLONE_VM+CLONE_VFORK+SIGCHLD
mov out1=0 /* Standard sp value. */ mov out1=0 /* Standard sp value. */
;; ;;
st4 [r14]=r15
DO_CALL (SYS_ify (clone)) DO_CALL (SYS_ify (clone))
cmp.eq p0,p7=0,r8
cmp.eq p6,p0=-1,r10 cmp.eq p6,p0=-1,r10
adds r14=PID,r13
;; ;;
(p7) st4 [r14]=loc0
(p6) br.cond.spnt.few __syscall_error (p6) br.cond.spnt.few __syscall_error
ret ret
PSEUDO_END(__vfork) PSEUDO_END(__vfork)

View File

@ -0,0 +1,68 @@
/* Copyright (C) 2000, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <sysdep.h>
#define _SIGNAL_H
#include <bits/signum.h>
#include <tcb-offsets.h>
/* The following are defined in linux/sched.h, which unfortunately */
/* is not safe for inclusion in an assembly file. */
#define CLONE_VM 0x00000100 /* set if VM shared between processes */
#define CLONE_VFORK 0x00004000 /* set if the parent wants the child to wake it up on mm_release */
/* pid_t vfork(void); */
/* Implemented as __clone_syscall(CLONE_VFORK | CLONE_VM | SIGCHLD, 0) */
ENTRY(__vfork)
alloc r2=ar.pfs,0,0,2,0
adds r14=PID,r13
;;
ld4 r16=[r14]
;;
sub r15=0,r16
cmp.eq p6,p0=0,r16
;;
(p6) movl r15=0x80000000
mov out0=CLONE_VM+CLONE_VFORK+SIGCHLD
mov out1=0 /* Standard sp value. */
;;
st4 [r14]=r15
DO_CALL_VIA_BREAK (SYS_ify (clone))
cmp.eq p6,p0=0,r8
adds r14=PID,r13
(p6) br.cond.dptk 1f
;;
ld4 r15=[r14]
;;
extr.u r16=r15,0,31
;;
cmp.eq p0,p6=0,r16
;;
(p6) sub r16=0,r15
;;
st4 [r14]=r16
1:
cmp.eq p6,p0=-1,r10
(p6) br.cond.spnt.few __syscall_error
ret
PSEUDO_END(__vfork)
libc_hidden_def (__vfork)
weak_alias (__vfork, vfork)

View File

@ -22,6 +22,7 @@
#include <bits/errno.h> #include <bits/errno.h>
#include <kernel-features.h> #include <kernel-features.h>
#include <bits/wordsize.h> #include <bits/wordsize.h>
#include <tcb-offsets.h>
/* Clone the calling process, but without copying the whole address space. /* Clone the calling process, but without copying the whole address space.
The calling process is suspended until the new process exits or is The calling process is suspended until the new process exits or is
@ -29,9 +30,18 @@
and the process ID of the new process to the old process. */ and the process ID of the new process to the old process. */
ENTRY (__vfork) ENTRY (__vfork)
ear %r4,%a0
l %r3,PID(%r4)
lcr %r1,%r3
st %r1,PID(%r4)
/* Do vfork system call. */ /* Do vfork system call. */
svc SYS_ify (vfork) svc SYS_ify (vfork)
ltr %r2,%r2
je 1f
st %r3,PID(%r4)
1:
/* Check for error. */ /* Check for error. */
lhi %r4,-4095 lhi %r4,-4095
clr %r2,%r4 clr %r2,%r4

View File

@ -0,0 +1,57 @@
/* Copyright (C) 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <sysdep.h>
#define _ERRNO_H 1
#include <bits/errno.h>
#include <kernel-features.h>
#include <bits/wordsize.h>
#include <tcb-offsets.h>
/* Clone the calling process, but without copying the whole address space.
The calling process is suspended until the new process exits or is
replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
and the process ID of the new process to the old process. */
ENTRY (__vfork)
ear %r4,%a0
lhi %r1,1
icm %r3,15,PID(%r4)
sll %r1,31
je 1f
lcr %r1,%r3
1: st %r1,PID(%r4)
/* Do vfork system call. */
svc SYS_ify (vfork)
ltr %r2,%r2
je 1f
st %r3,PID(%r4)
1:
/* Check for error. */
lhi %r4,-4095
clr %r2,%r4
jnl SYSCALL_ERROR_LABEL
/* Normal return. */
br %r14
PSEUDO_END(__vfork)
weak_alias (__vfork, vfork)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2003 Free Software Foundation, Inc. /* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003. Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003.
@ -22,6 +22,7 @@
#include <bits/errno.h> #include <bits/errno.h>
#include <kernel-features.h> #include <kernel-features.h>
#include <bits/wordsize.h> #include <bits/wordsize.h>
#include <tcb-offsets.h>
/* Clone the calling process, but without copying the whole address space. /* Clone the calling process, but without copying the whole address space.
The calling process is suspended until the new process exits or is The calling process is suspended until the new process exits or is
@ -29,9 +30,21 @@
and the process ID of the new process to the old process. */ and the process ID of the new process to the old process. */
ENTRY (__vfork) ENTRY (__vfork)
ear %r4,%a0
sllg %r4,%r4,32
ear %r4,%a1
l %r3,PID(%r4)
lcr %r1,%r3
st %r1,PID(%r4)
/* Do vfork system call. */ /* Do vfork system call. */
svc SYS_ify (vfork) svc SYS_ify (vfork)
ltgr %r2,%r2
je 1f
st %r3,PID(%r4)
1:
/* Check for error. */ /* Check for error. */
lghi %r4,-4095 lghi %r4,-4095
clgr %r2,%r4 clgr %r2,%r4

View File

@ -0,0 +1,59 @@
/* Copyright (C) 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <sysdep.h>
#define _ERRNO_H 1
#include <bits/errno.h>
#include <kernel-features.h>
#include <bits/wordsize.h>
#include <tcb-offsets.h>
/* Clone the calling process, but without copying the whole address space.
The calling process is suspended until the new process exits or is
replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
and the process ID of the new process to the old process. */
ENTRY (__vfork)
ear %r4,%a0
sllg %r4,%r4,32
ear %r4,%a1
icm %r3,15,PID(%r4)
llilh %r1,32768
je 1f
lcr %r1,%r3
1: st %r1,PID(%r4)
/* Do vfork system call. */
svc SYS_ify (vfork)
ltgr %r2,%r2
je 1f
st %r3,PID(%r4)
1:
/* Check for error. */
lghi %r4,-4095
clgr %r2,%r4
jnl SYSCALL_ERROR_LABEL
/* Normal return. */
br %r14
PSEUDO_END(__vfork)
weak_alias (__vfork, vfork)

View File

@ -1,6 +1,6 @@
/* Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc. /* Copyright (C) 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jj@ultra.linux.cz>, 1999. Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public modify it under the terms of the GNU Lesser General Public
@ -18,11 +18,25 @@
02111-1307 USA. */ 02111-1307 USA. */
#include <sysdep.h> #include <sysdep.h>
#include <tcb-offsets.h>
PSEUDO (__vfork, vfork, 0) .text
ENTRY(__vfork)
ld [%g7 + PID], %o5
sub %g0, %o5, %o4
st %o4, [%g7 + PID]
LOADSYSCALL(vfork)
ta 0x10
bcs,a __syscall_error_handler
st %o5, [%g7 + PID]
SYSCALL_ERROR_HANDLER
sub %o1, 1, %o1 sub %o1, 1, %o1
retl andcc %o0, %o1, %o0
and %o0, %o1, %o0 bne,a 1f
st %o5, [%g7 + PID]
1: retl
nop
PSEUDO_END (__vfork) PSEUDO_END (__vfork)
weak_alias (__vfork, vfork) weak_alias (__vfork, vfork)

View File

@ -0,0 +1,45 @@
/* Copyright (C) 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <sysdep.h>
#include <tcb-offsets.h>
.text
ENTRY(__vfork)
ld [%g7 + PID], %o5
cmp %o5, 0
bne 1f
sub %g0, %o5, %o4
sethi %hi(0x80000000), %o4
1: st %o4, [%g7 + PID]
LOADSYSCALL(vfork)
ta 0x10
bcs,a __syscall_error_handler
st %o5, [%g7 + PID]
SYSCALL_ERROR_HANDLER
sub %o1, 1, %o1
andcc %o0, %o1, %o0
bne,a 1f
st %o5, [%g7 + PID]
1: retl
nop
PSEUDO_END (__vfork)
weak_alias (__vfork, vfork)

View File

@ -0,0 +1,42 @@
/* Copyright (C) 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <sysdep.h>
#include <tcb-offsets.h>
.text
ENTRY(__vfork)
ld [%g7 + PID], %o5
sub %g0, %o5, %o4
st %o4, [%g7 + PID]
LOADSYSCALL(vfork)
ta 0x6d
bcs,a,pn %xcc, __syscall_error_handler
st %o5, [%g7 + PID]
SYSCALL_ERROR_HANDLER
sub %o1, 1, %o1
andcc %o0, %o1, %o0
bne,a,pt %icc, 1f
st %o5, [%g7 + PID]
1: retl
nop
PSEUDO_END (__vfork)
weak_alias (__vfork, vfork)

View File

@ -0,0 +1,45 @@
/* Copyright (C) 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <sysdep.h>
#include <tcb-offsets.h>
.text
ENTRY(__vfork)
ld [%g7 + PID], %o5
sethi %hi(0x80000000), %o3
cmp %o5, 0
sub %g0, %o5, %o4
move %icc, %o3, %o4
st %o4, [%g7 + PID]
LOADSYSCALL(vfork)
ta 0x6d
bcs,a,pn %xcc, __syscall_error_handler
st %o5, [%g7 + PID]
SYSCALL_ERROR_HANDLER
sub %o1, 1, %o1
andcc %o0, %o1, %o0
bne,a,pt %icc, 1f
st %o5, [%g7 + PID]
1: retl
nop
PSEUDO_END (__vfork)
weak_alias (__vfork, vfork)

View File

@ -57,7 +57,7 @@ enum
HWCAP_I386_AMD3D = 1 << 31, HWCAP_I386_AMD3D = 1 << 31,
/* XXX Which others to add here? */ /* XXX Which others to add here? */
HWCAP_IMPORTANT = (HWCAP_I386_MMX) HWCAP_IMPORTANT = (HWCAP_I386_XMM2)
}; };

View File

@ -1,5 +1,6 @@
/* Machine-dependent ELF dynamic relocation inline functions. SH version. /* Machine-dependent ELF dynamic relocation inline functions. SH version.
Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -417,9 +418,9 @@ _dl_start_user:\n\
static inline void __attribute__ ((unused)) static inline void __attribute__ ((unused))
dl_platform_init (void) dl_platform_init (void)
{ {
if (GL(dl_platform) != NULL && *GL(dl_platform) == '\0') if (GLRO(dl_platform) != NULL && *GLRO(dl_platform) == '\0')
/* Avoid an empty string which would disturb us. */ /* Avoid an empty string which would disturb us. */
GL(dl_platform) = NULL; GLRO(dl_platform) = NULL;
} }
static inline Elf32_Addr static inline Elf32_Addr
@ -460,20 +461,23 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
#define COPY_UNALIGNED_WORD(swp, twp, align) \ #define COPY_UNALIGNED_WORD(swp, twp, align) \
{ \ { \
void *__s = (swp), *__t = (twp); \ void *__s = (swp), *__t = (twp); \
unsigned char *__s1 = __s, *__t1 = __t; \
unsigned short *__s2 = __s, *__t2 = __t; \
unsigned long *__s4 = __s, *__t4 = __t; \
switch ((align)) \ switch ((align)) \
{ \ { \
case 0: \ case 0: \
*(unsigned long *) __t = *(unsigned long *) __s; \ *__t4 = *__s4; \
break; \ break; \
case 2: \ case 2: \
*((unsigned short *) __t)++ = *((unsigned short *) __s)++; \ *__t2++ = *__s2++; \
*((unsigned short *) __t) = *((unsigned short *) __s); \ *__t2 = *__s2; \
break; \ break; \
default: \ default: \
*((unsigned char *) __t)++ = *((unsigned char *) __s)++; \ *__t1++ = *__s1++; \
*((unsigned char *) __t)++ = *((unsigned char *) __s)++; \ *__t1++ = *__s1++; \
*((unsigned char *) __t)++ = *((unsigned char *) __s)++; \ *__t1++ = *__s1++; \
*((unsigned char *) __t) = *((unsigned char *) __s); \ *__t1 = *__s1; \
break; \ break; \
} \ } \
} }
@ -525,7 +529,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
found. */ found. */
break; break;
if (sym->st_size > refsym->st_size if (sym->st_size > refsym->st_size
|| (sym->st_size < refsym->st_size && GL(dl_verbose))) || (sym->st_size < refsym->st_size && GLRO(dl_verbose)))
{ {
const char *strtab; const char *strtab;
@ -593,7 +597,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
rtld.c contains the common defn for _dl_rtld_map, which rtld.c contains the common defn for _dl_rtld_map, which
is incompatible with a weak decl in the same file. */ is incompatible with a weak decl in the same file. */
# ifndef SHARED # ifndef SHARED
weak_extern (GL(dl_rtld_map)); weak_extern (_dl_rtld_map);
# endif # endif
if (map == &GL(dl_rtld_map)) if (map == &GL(dl_rtld_map))
/* Undo the relocation done here during bootstrapping. /* Undo the relocation done here during bootstrapping.

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc. /* Copyright (C) 1998, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -58,7 +58,7 @@ struct timex32 {
#define TIMEVAL timeval32 #define TIMEVAL timeval32
#define TIMEX timex32 #define TIMEX timex32
#define ADJTIME __adjtime_tv32 #define ADJTIME attribute_compat_text_section __adjtime_tv32
#define ADJTIMEX(x) INLINE_SYSCALL (old_adjtimex, 1, x) #define ADJTIMEX(x) INLINE_SYSCALL (old_adjtimex, 1, x)
#define ADJTIMEX32(x) INLINE_SYSCALL (old_adjtimex, 1, x) #define ADJTIMEX32(x) INLINE_SYSCALL (old_adjtimex, 1, x)
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
@ -72,7 +72,9 @@ LINKAGE int ADJTIME (const struct TIMEVAL *itv, struct TIMEVAL *otv);
#include <sysdeps/unix/sysv/linux/adjtime.c> #include <sysdeps/unix/sysv/linux/adjtime.c>
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
int __adjtimex_tv32 (struct timex32 *tx) { return ADJTIMEX (tx); } int
attribute_compat_text_section
__adjtimex_tv32 (struct timex32 *tx) { return ADJTIMEX (tx); }
strong_alias (__adjtimex_tv32, __adjtimex_tv32_1); strong_alias (__adjtimex_tv32, __adjtimex_tv32_1);
strong_alias (__adjtimex_tv32, __adjtimex_tv32_2); strong_alias (__adjtimex_tv32, __adjtimex_tv32_2);
compat_symbol (libc, __adjtimex_tv32_1, __adjtimex, GLIBC_2_0); compat_symbol (libc, __adjtimex_tv32_1, __adjtimex, GLIBC_2_0);

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998, 2000 Free Software Foundation, Inc. /* Copyright (C) 1998, 2000, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -44,6 +44,7 @@ typedef struct
int int
attribute_compat_text_section
__old_glob (const char *pattern, int flags, __old_glob (const char *pattern, int flags,
int (*errfunc) (const char *, int), int (*errfunc) (const char *, int),
old_glob_t *pglob) old_glob_t *pglob)
@ -82,6 +83,7 @@ compat_symbol (libc, __old_glob, glob, GLIBC_2_0);
/* Free storage allocated in PGLOB by a previous `glob' call. */ /* Free storage allocated in PGLOB by a previous `glob' call. */
void void
attribute_compat_text_section
__old_globfree (old_glob_t *pglob) __old_globfree (old_glob_t *pglob)
{ {
glob_t correct; glob_t correct;

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2001 Free Software Foundation, Inc. /* Copyright (C) 2001, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -38,6 +38,7 @@ typedef struct
int int
attribute_compat_text_section
__old_wordexp (const char *words, old_wordexp_t *pwordexp, int flags) __old_wordexp (const char *words, old_wordexp_t *pwordexp, int flags)
{ {
wordexp_t we; wordexp_t we;

View File

@ -1,4 +1,5 @@
/* Copyright (C) 1995, 1997, 1998, 2000, 2002 Free Software Foundation, Inc. /* Copyright (C) 1995, 1997, 1998, 2000, 2002, 2004
Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995. Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
@ -55,6 +56,7 @@ int __new_msgctl (int, int, struct msqid_ds *);
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
int int
attribute_compat_text_section
__old_msgctl (int msqid, int cmd, struct __old_msqid_ds *buf) __old_msgctl (int msqid, int cmd, struct __old_msqid_ds *buf)
{ {
return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd, 0, CHECK_1 (buf)); return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd, 0, CHECK_1 (buf));

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2003 Free Software Foundation, Inc. /* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -69,6 +69,7 @@ __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise)
#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3) #if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3)
int int
attribute_compat_text_section
__posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise) __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise)
{ {
return __posix_fadvise64_l64 (fd, offset, len, advise); return __posix_fadvise64_l64 (fd, offset, len, advise);

View File

@ -244,12 +244,13 @@ L(no_vec):
addi r1,r1,16 addi r1,r1,16
mtlr r0 mtlr r0
blr blr
PSEUDO_END(__getcontext) END(__getcontext)
versioned_symbol (libc, __getcontext, getcontext, GLIBC_2_3_4) versioned_symbol (libc, __getcontext, getcontext, GLIBC_2_3_4)
#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4) #if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
compat_text_section
ENTRY(__novec_getcontext) ENTRY(__novec_getcontext)
/* /*
* Since we are not attempting to save the altivec registers, * Since we are not attempting to save the altivec registers,
@ -355,7 +356,8 @@ ENTRY(__novec_getcontext)
addi r1,r1,16 addi r1,r1,16
mtlr r0 mtlr r0
blr blr
PSEUDO_END(__novec_getcontext) END(__novec_getcontext)
.previous
compat_symbol (libc, __novec_getcontext, getcontext, GLIBC_2_3_3) compat_symbol (libc, __novec_getcontext, getcontext, GLIBC_2_3_3)
@ -366,10 +368,12 @@ compat_symbol (libc, __novec_getcontext, getcontext, GLIBC_2_3_3)
#define _ERRNO_H 1 #define _ERRNO_H 1
#include <bits/errno.h> #include <bits/errno.h>
compat_text_section
ENTRY (__getcontext_stub) ENTRY (__getcontext_stub)
li r3,ENOSYS li r3,ENOSYS
b JUMPTARGET(__syscall_error) b JUMPTARGET(__syscall_error)
END (__getcontext_stub) END (__getcontext_stub)
.previous
compat_symbol (libc, __getcontext_stub, getcontext, GLIBC_2_1) compat_symbol (libc, __getcontext_stub, getcontext, GLIBC_2_1)

View File

@ -111,6 +111,7 @@ versioned_symbol (libc, __makecontext, makecontext, GLIBC_2_3_4)
#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4) #if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
compat_text_section
ENTRY(__novec_makecontext) ENTRY(__novec_makecontext)
/* Set up the first 7 args to the function in its registers */ /* Set up the first 7 args to the function in its registers */
addi r11,r3,_UC_REG_SPACE addi r11,r3,_UC_REG_SPACE
@ -191,7 +192,8 @@ L(novec_exitcode):
4: bl HIDDEN_JUMPTARGET(exit) 4: bl HIDDEN_JUMPTARGET(exit)
b 4b b 4b
END(__makecontext) END(__novec_makecontext)
.previous
compat_symbol (libc, __novec_makecontext, makecontext, GLIBC_2_3_3) compat_symbol (libc, __novec_makecontext, makecontext, GLIBC_2_3_3)
#endif #endif
@ -201,10 +203,12 @@ compat_symbol (libc, __novec_makecontext, makecontext, GLIBC_2_3_3)
#define _ERRNO_H 1 #define _ERRNO_H 1
#include <bits/errno.h> #include <bits/errno.h>
compat_text_section
ENTRY (__makecontext_stub) ENTRY (__makecontext_stub)
li r3,ENOSYS li r3,ENOSYS
b JUMPTARGET(__syscall_error) b JUMPTARGET(__syscall_error)
END (__makecontext_stub) END (__makecontext_stub)
.previous
compat_symbol (libc, __makecontext_stub, makecontext, GLIBC_2_1) compat_symbol (libc, __makecontext_stub, makecontext, GLIBC_2_1)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2003 Free Software Foundation, Inc. /* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -65,6 +65,7 @@ __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise)
#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3) #if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3)
int int
attribute_compat_text_section
__posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise) __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise)
{ {
return __posix_fadvise64_l64 (fd, offset, len, advise); return __posix_fadvise64_l64 (fd, offset, len, advise);

View File

@ -261,12 +261,13 @@ L(do_sigret):
sc sc
/* NOTREACHED */ /* NOTREACHED */
PSEUDO_END (__setcontext) END (__setcontext)
versioned_symbol (libc, __setcontext, setcontext, GLIBC_2_3_4) versioned_symbol (libc, __setcontext, setcontext, GLIBC_2_3_4)
#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4) #if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
compat_text_section
ENTRY(__novec_setcontext) ENTRY(__novec_setcontext)
mflr r0 mflr r0
stwu r1,-16(r1) stwu r1,-16(r1)
@ -388,7 +389,8 @@ L(novec_do_sigret):
sc sc
/* NOTREACHED */ /* NOTREACHED */
PSEUDO_END (__setcontext) END (__novec_setcontext)
.previous
compat_symbol (libc, __novec_setcontext, setcontext, GLIBC_2_3_3) compat_symbol (libc, __novec_setcontext, setcontext, GLIBC_2_3_3)
@ -399,10 +401,12 @@ compat_symbol (libc, __novec_setcontext, setcontext, GLIBC_2_3_3)
#define _ERRNO_H 1 #define _ERRNO_H 1
#include <bits/errno.h> #include <bits/errno.h>
compat_text_section
ENTRY (__setcontext_stub) ENTRY (__setcontext_stub)
li r3,ENOSYS li r3,ENOSYS
b JUMPTARGET(__syscall_error) b JUMPTARGET(__syscall_error)
END (__setcontext_stub) END (__setcontext_stub)
.previous
compat_symbol (libc, __setcontext_stub, setcontext, GLIBC_2_1) compat_symbol (libc, __setcontext_stub, setcontext, GLIBC_2_1)

View File

@ -467,12 +467,13 @@ L(do_sigret):
sc sc
/* NOTREACHED */ /* NOTREACHED */
PSEUDO_END(__swapcontext) END(__swapcontext)
versioned_symbol (libc, __swapcontext, swapcontext, GLIBC_2_3_4) versioned_symbol (libc, __swapcontext, swapcontext, GLIBC_2_3_4)
#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4) #if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
compat_text_section
ENTRY(__novec_swapcontext) ENTRY(__novec_swapcontext)
/* Save the current context */ /* Save the current context */
addi r3,r3,_UC_REG_SPACE addi r3,r3,_UC_REG_SPACE
@ -682,7 +683,8 @@ L(novec_do_sigret):
sc sc
/* NOTREACHED */ /* NOTREACHED */
PSEUDO_END(__novec_swapcontext) END(__novec_swapcontext)
.previous
compat_symbol (libc, __novec_swapcontext, swapcontext, GLIBC_2_3_3) compat_symbol (libc, __novec_swapcontext, swapcontext, GLIBC_2_3_3)
@ -693,10 +695,12 @@ compat_symbol (libc, __novec_swapcontext, swapcontext, GLIBC_2_3_3)
#define _ERRNO_H 1 #define _ERRNO_H 1
#include <bits/errno.h> #include <bits/errno.h>
compat_text_section
ENTRY (__swapcontext_stub) ENTRY (__swapcontext_stub)
li r3,ENOSYS li r3,ENOSYS
b JUMPTARGET(__syscall_error) b JUMPTARGET(__syscall_error)
END (__swapcontext_stub) END (__swapcontext_stub)
.previous
compat_symbol (libc, __swapcontext_stub, swapcontext, GLIBC_2_1) compat_symbol (libc, __swapcontext_stub, swapcontext, GLIBC_2_1)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. /* Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -97,6 +97,7 @@ __real_chown (const char *file, uid_t owner, gid_t group)
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
/* Compiling for compatibiity. */ /* Compiling for compatibiity. */
int int
attribute_compat_text_section
__chown_is_lchown (const char *file, uid_t owner, gid_t group) __chown_is_lchown (const char *file, uid_t owner, gid_t group)
{ {
return __lchown (file, owner, group); return __lchown (file, owner, group);

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2003 Free Software Foundation, Inc. /* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -78,6 +78,7 @@ __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise)
#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3) #if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3)
int int
attribute_compat_text_section
__posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise) __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise)
{ {
return __posix_fadvise64_l64 (fd, offset, len, advise); return __posix_fadvise64_l64 (fd, offset, len, advise);

View File

@ -1,4 +1,5 @@
/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc. /* Copyright (C) 1995, 1997, 1998, 2000, 2003, 2004
Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995. Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
@ -63,6 +64,7 @@ int __new_semctl (int semid, int semnum, int cmd, ...);
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
int int
attribute_compat_text_section
__old_semctl (int semid, int semnum, int cmd, ...) __old_semctl (int semid, int semnum, int cmd, ...)
{ {
union semun arg; union semun arg;

View File

@ -1,4 +1,5 @@
/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc. /* Copyright (C) 1995, 1997, 1998, 2000, 2003, 2004
Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995. Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
@ -62,6 +63,7 @@ int __new_shmctl (int, int, struct shmid_ds *);
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
int int
attribute_compat_text_section
__old_shmctl (int shmid, int cmd, struct __old_shmid_ds *buf) __old_shmctl (int shmid, int cmd, struct __old_shmid_ds *buf)
{ {
return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid,

View File

@ -1,5 +1,6 @@
/* Semctl for architectures where word sized unions are passed indirectly /* Semctl for architectures where word sized unions are passed indirectly
Copyright (C) 1995,1997,1998,2000,2002,2003 Free Software Foundation, Inc. Copyright (C) 1995, 1997, 1998, 2000, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995. Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
@ -72,6 +73,7 @@ int __new_semctl (int semid, int semnum, int cmd, ...);
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
int int
attribute_compat_text_section
__old_semctl (int semid, int semnum, int cmd, ...) __old_semctl (int semid, int semnum, int cmd, ...)
{ {
union semun arg; union semun arg;