Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 10 Mar 2004 19:28:58 +0000 (19:28 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 10 Mar 2004 19:28:58 +0000 (19:28 +0000)
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.

34 files changed:
ChangeLog
hurd/compat-20.c
include/libc-symbols.h
nptl/ChangeLog
nptl/sysdeps/ia64/tcb-offsets.sym
nptl/sysdeps/s390/tcb-offsets.sym
nptl/sysdeps/sparc/tcb-offsets.sym
nptl/sysdeps/unix/sysv/linux/ia64/pt-vfork.S
nptl/sysdeps/unix/sysv/linux/ia64/vfork.S [new file with mode: 0644]
nptl/sysdeps/unix/sysv/linux/s390/s390-32/pt-vfork.S
nptl/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S [new file with mode: 0644]
nptl/sysdeps/unix/sysv/linux/s390/s390-64/pt-vfork.S
nptl/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S [new file with mode: 0644]
nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S [moved from nptl/sysdeps/unix/sysv/linux/sparc/pt-vfork.S with 69% similarity]
nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S [new file with mode: 0644]
nptl/sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S [new file with mode: 0644]
nptl/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S [new file with mode: 0644]
sysdeps/i386/dl-procinfo.h
sysdeps/sh/dl-machine.h
sysdeps/unix/sysv/linux/alpha/adjtime.c
sysdeps/unix/sysv/linux/alpha/oldglob.c
sysdeps/unix/sysv/linux/alpha/wordexp.c
sysdeps/unix/sysv/linux/msgctl.c
sysdeps/unix/sysv/linux/posix_fadvise64.c
sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S
sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S
sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c
sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S
sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S
sysdeps/unix/sysv/linux/s390/s390-32/chown.c
sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c
sysdeps/unix/sysv/linux/semctl.c
sysdeps/unix/sysv/linux/shmctl.c
sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c

index 489d79d..e073766 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
 
        * sysdeps/generic/errno.c: Disable versioning for rtld.
index 8c075c9..c55e3e2 100644 (file)
@@ -1,5 +1,5 @@
 /* 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.
 
    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)
 
 void
+attribute_compat_text_section
 _hurd_proc_init_compat_20 (char **argv)
 {
   _hurd_proc_init (argv, NULL, 0);
index 4d87b2d..e7074a6 100644 (file)
@@ -761,9 +761,14 @@ for linking")
 
 /* Move compatibility symbols out of the way by placing them all in a
    special section.  */
-#define attribute_compat_text_section \
+#ifndef __ASSEMBLER__
+# define attribute_compat_text_section \
     __attribute__ ((section (".text.compat")))
-#define attribute_compat_data_section \
+# define attribute_compat_data_section \
     __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 */
index 2ca0c7c..94d2273 100644 (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>
 
        * tst-cancel20.c (do_one_test): Clear in_sh_body first.
index 24dc3e9..09ea70d 100644 (file)
@@ -1,5 +1,6 @@
 #include <sysdep.h>
 #include <tls.h>
 
+PID                    offsetof (struct pthread, pid) - sizeof (struct pthread)
 MULTIPLE_THREADS_OFFSET offsetof (struct pthread, header.multiple_threads) - sizeof (struct pthread)
 SYSINFO_OFFSET         offsetof (tcbhead_t, private)
index aee6be2..c6e230a 100644 (file)
@@ -2,3 +2,4 @@
 #include <tls.h>
 
 MULTIPLE_THREADS_OFFSET                offsetof (tcbhead_t, multiple_threads)
+PID                            offsetof (struct pthread, pid)
index aee6be2..c6e230a 100644 (file)
@@ -2,3 +2,4 @@
 #include <tls.h>
 
 MULTIPLE_THREADS_OFFSET                offsetof (tcbhead_t, multiple_threads)
+PID                            offsetof (struct pthread, pid)
index a8e2e49..f59227c 100644 (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.
 
    The GNU C Library is free software; you can redistribute it and/or
 ENTRY(__vfork)
        .prologue       // work around a GAS bug which triggers if
        .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 out1=0              /* Standard sp value.                   */
        ;;
+       st4 [r14]=r15
        DO_CALL (SYS_ify (clone))
+       cmp.eq p0,p7=0,r8
        cmp.eq p6,p0=-1,r10
+       adds r14=PID,r13
        ;;
+(p7)   st4 [r14]=loc0
 (p6)   br.cond.spnt.few __syscall_error
        ret
 PSEUDO_END(__vfork)
diff --git a/nptl/sysdeps/unix/sysv/linux/ia64/vfork.S b/nptl/sysdeps/unix/sysv/linux/ia64/vfork.S
new file mode 100644 (file)
index 0000000..bbb34d9
--- /dev/null
@@ -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)
index 67a5bc6..60d6dbd 100644 (file)
@@ -22,6 +22,7 @@
 #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
    and the process ID of the new process to the old process.  */
 
 ENTRY (__vfork)
+       ear     %r4,%a0
+       l       %r3,PID(%r4)
+       lcr     %r1,%r3
+       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
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S b/nptl/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S
new file mode 100644 (file)
index 0000000..2dca28f
--- /dev/null
@@ -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)
index e45165e..fcc7ee0 100644 (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.
    Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003.
 
@@ -22,6 +22,7 @@
 #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
    and the process ID of the new process to the old process.  */
 
 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.  */
        svc     SYS_ify (vfork)
 
+       ltgr    %r2,%r2
+       je      1f
+       st      %r3,PID(%r4)
+1:
        /* Check for error.  */
        lghi    %r4,-4095
        clgr    %r2,%r4
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S b/nptl/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S
new file mode 100644 (file)
index 0000000..c73d849
--- /dev/null
@@ -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)
@@ -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.
-   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
    modify it under the terms of the GNU Lesser General Public
    02111-1307 USA.  */
 
 #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
-       retl
-        and    %o0, %o1, %o0
+       andcc   %o0, %o1, %o0
+       bne,a   1f
+        st     %o5, [%g7 + PID]
+1:     retl
+        nop
 
 PSEUDO_END (__vfork)
 weak_alias (__vfork, vfork)
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
new file mode 100644 (file)
index 0000000..6a65a88
--- /dev/null
@@ -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)
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S b/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S
new file mode 100644 (file)
index 0000000..e9018b2
--- /dev/null
@@ -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)
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S b/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
new file mode 100644 (file)
index 0000000..c9ccd0f
--- /dev/null
@@ -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)
index e6b7faf..d114fec 100644 (file)
@@ -57,7 +57,7 @@ enum
   HWCAP_I386_AMD3D = 1 << 31,
 
   /* XXX Which others to add here?  */
-  HWCAP_IMPORTANT = (HWCAP_I386_MMX)
+  HWCAP_IMPORTANT = (HWCAP_I386_XMM2)
 
 };
 
index 304fbf9..a0852a4 100644 (file)
@@ -1,5 +1,6 @@
 /* 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.
 
    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))
 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.  */
-    GL(dl_platform) = NULL;
+    GLRO(dl_platform) = NULL;
 }
 
 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) \
   { \
     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)) \
     { \
     case 0: \
-      *(unsigned long *) __t = *(unsigned long *) __s; \
+      *__t4 = *__s4; \
       break; \
     case 2: \
-      *((unsigned short *) __t)++ = *((unsigned short *) __s)++; \
-      *((unsigned short *) __t) = *((unsigned short *) __s); \
+      *__t2++ = *__s2++; \
+      *__t2 = *__s2; \
       break; \
     default: \
-      *((unsigned char *) __t)++ = *((unsigned char *) __s)++; \
-      *((unsigned char *) __t)++ = *((unsigned char *) __s)++; \
-      *((unsigned char *) __t)++ = *((unsigned char *) __s)++; \
-      *((unsigned char *) __t) = *((unsigned char *) __s); \
+      *__t1++ = *__s1++; \
+      *__t1++ = *__s1++; \
+      *__t1++ = *__s1++; \
+      *__t1 = *__s1; \
       break; \
     } \
   }
@@ -525,7 +529,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
               found.  */
            break;
          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;
 
@@ -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
              is incompatible with a weak decl in the same file.  */
 # ifndef SHARED
-           weak_extern (GL(dl_rtld_map));
+           weak_extern (_dl_rtld_map);
 # endif
            if (map == &GL(dl_rtld_map))
              /* Undo the relocation done here during bootstrapping.
index e036896..f8b272e 100644 (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.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -58,7 +58,7 @@ struct timex32 {
 
 #define TIMEVAL                timeval32
 #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 ADJTIMEX32(x)  INLINE_SYSCALL (old_adjtimex, 1, x)
 #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>
 
 #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_2);
 compat_symbol (libc, __adjtimex_tv32_1, __adjtimex, GLIBC_2_0);
index 68cda76..9d39176 100644 (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.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -44,6 +44,7 @@ typedef struct
 
 
 int
+attribute_compat_text_section
 __old_glob (const char *pattern, int flags,
            int (*errfunc) (const char *, int),
            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.  */
 void
+attribute_compat_text_section
 __old_globfree (old_glob_t *pglob)
 {
   glob_t correct;
index 1027204..1921a03 100644 (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.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -38,6 +38,7 @@ typedef struct
 
 
 int
+attribute_compat_text_section
 __old_wordexp (const char *words, old_wordexp_t *pwordexp, int flags)
 {
   wordexp_t we;
index 24c87d3..700591b 100644 (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.
    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)
 int
+attribute_compat_text_section
 __old_msgctl (int msqid, int cmd, struct __old_msqid_ds *buf)
 {
   return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd, 0, CHECK_1 (buf));
index 350a026..3555ae8 100644 (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.
 
    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)
 
 int
+attribute_compat_text_section
 __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise)
 {
   return __posix_fadvise64_l64 (fd, offset, len, advise);
index 0c04df5..baade0b 100644 (file)
@@ -244,12 +244,13 @@ L(no_vec):
        addi    r1,r1,16
        mtlr    r0
        blr
-PSEUDO_END(__getcontext)
+END(__getcontext)
 
 versioned_symbol (libc, __getcontext, getcontext, GLIBC_2_3_4)
 
 #if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
 
+       compat_text_section
 ENTRY(__novec_getcontext)
        /*
         * Since we are not attempting to save the altivec registers,
@@ -355,7 +356,8 @@ ENTRY(__novec_getcontext)
        addi    r1,r1,16
        mtlr    r0
        blr
-PSEUDO_END(__novec_getcontext)
+END(__novec_getcontext)
+       .previous
 
 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
 #include <bits/errno.h>
 
+       compat_text_section
 ENTRY (__getcontext_stub)
        li      r3,ENOSYS
        b       JUMPTARGET(__syscall_error)
-       END (__getcontext_stub)
+END (__getcontext_stub)
+       .previous
 
 compat_symbol (libc, __getcontext_stub, getcontext, GLIBC_2_1)
 
index 9f34357..5615718 100644 (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)
 
+       compat_text_section
 ENTRY(__novec_makecontext)
        /* Set up the first 7 args to the function in its registers */
        addi    r11,r3,_UC_REG_SPACE
@@ -191,7 +192,8 @@ L(novec_exitcode):
 4:     bl      HIDDEN_JUMPTARGET(exit)
        b       4b
 
-END(__makecontext)
+END(__novec_makecontext)
+       .previous
 
 compat_symbol (libc, __novec_makecontext, makecontext, GLIBC_2_3_3)
 #endif
@@ -201,10 +203,12 @@ compat_symbol (libc, __novec_makecontext, makecontext, GLIBC_2_3_3)
 #define _ERRNO_H       1
 #include <bits/errno.h>
 
+       compat_text_section
 ENTRY (__makecontext_stub)
        li      r3,ENOSYS
        b       JUMPTARGET(__syscall_error)
-       END (__makecontext_stub)
+END (__makecontext_stub)
+       .previous
 
 compat_symbol (libc, __makecontext_stub, makecontext, GLIBC_2_1)
 
index edc21f6..c97bbbe 100644 (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.
 
    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)
 
 int
+attribute_compat_text_section
 __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise)
 {
   return __posix_fadvise64_l64 (fd, offset, len, advise);
index 16d5a3b..ea0669d 100644 (file)
@@ -261,12 +261,13 @@ L(do_sigret):
        sc
        /* NOTREACHED */
 
-PSEUDO_END (__setcontext)
+END (__setcontext)
 
 versioned_symbol (libc, __setcontext, setcontext, GLIBC_2_3_4)
 
 #if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
 
+       compat_text_section
 ENTRY(__novec_setcontext)
        mflr    r0
        stwu    r1,-16(r1)
@@ -388,7 +389,8 @@ L(novec_do_sigret):
        sc
        /* NOTREACHED */
 
-PSEUDO_END (__setcontext)
+END (__novec_setcontext)
+       .previous
 
 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
 #include <bits/errno.h>
 
+       compat_text_section
 ENTRY (__setcontext_stub)
        li      r3,ENOSYS
        b       JUMPTARGET(__syscall_error)
-       END (__setcontext_stub)
+END (__setcontext_stub)
+       .previous
 
 compat_symbol (libc, __setcontext_stub, setcontext, GLIBC_2_1)
 
index 607f282..1bf3f51 100644 (file)
@@ -467,12 +467,13 @@ L(do_sigret):
        sc
        /* NOTREACHED */
 
-PSEUDO_END(__swapcontext)
+END(__swapcontext)
 
 versioned_symbol (libc, __swapcontext, swapcontext, GLIBC_2_3_4)
 
 #if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
 
+       compat_text_section
 ENTRY(__novec_swapcontext)
        /* Save the current context */
        addi    r3,r3,_UC_REG_SPACE
@@ -682,7 +683,8 @@ L(novec_do_sigret):
        sc
        /* NOTREACHED */
 
-PSEUDO_END(__novec_swapcontext)
+END(__novec_swapcontext)
+       .previous
 
 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
 #include <bits/errno.h>
 
+       compat_text_section
 ENTRY (__swapcontext_stub)
        li      r3,ENOSYS
        b       JUMPTARGET(__syscall_error)
-       END (__swapcontext_stub)
+END (__swapcontext_stub)
+       .previous
 
 compat_symbol (libc, __swapcontext_stub, swapcontext, GLIBC_2_1)
 
index 1c7b7ab..0656b39 100644 (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.
 
    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)
 /* Compiling for compatibiity.  */
 int
+attribute_compat_text_section
 __chown_is_lchown (const char *file, uid_t owner, gid_t group)
 {
   return __lchown (file, owner, group);
index 6c539cd..e0fed24 100644 (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.
 
    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)
 
 int
+attribute_compat_text_section
 __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise)
 {
   return __posix_fadvise64_l64 (fd, offset, len, advise);
index 07b1e6b..ecd23ce 100644 (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.
    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)
 int
+attribute_compat_text_section
 __old_semctl (int semid, int semnum, int cmd, ...)
 {
   union semun arg;
index 2bd9246..5561cca 100644 (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.
    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)
 int
+attribute_compat_text_section
 __old_shmctl (int shmid, int cmd, struct __old_shmid_ds *buf)
 {
   return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid,
index ebf9f52..b28f009 100644 (file)
@@ -1,5 +1,6 @@
 /* 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.
    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)
 int
+attribute_compat_text_section
 __old_semctl (int semid, int semnum, int cmd, ...)
 {
   union semun arg;