diff options
author | Ulrich Drepper <drepper@redhat.com> | 2002-12-20 07:20:48 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2002-12-20 07:20:48 +0000 |
commit | 057c823fbef95bf0ddb2a33c109b82488390ecec (patch) | |
tree | e9b76159321c42f19e44737547353741fd0e6ec3 /nptl | |
parent | 097eca29e8f769673b5ed1b335542719280a556e (diff) | |
download | glibc-057c823fbef95bf0ddb2a33c109b82488390ecec.tar.gz glibc-057c823fbef95bf0ddb2a33c109b82488390ecec.tar.xz glibc-057c823fbef95bf0ddb2a33c109b82488390ecec.zip |
Update.
* sysdeps/unix/sysv/linux/i386/_exit.S: Use ENTER_KERNEL instead of int $0x80. * sysdeps/unix/sysv/linux/i386/getcontext.S: Likewise. * sysdeps/unix/sysv/linux/i386/setcontext.S: Likewise. * sysdeps/unix/sysv/linux/i386/swapcontext.S: Likewise.
Diffstat (limited to 'nptl')
-rw-r--r-- | nptl/ChangeLog | 4 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h | 22 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h | 65 |
3 files changed, 69 insertions, 22 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 4e1ecf659d..ed7de44425 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,5 +1,9 @@ 2002-12-19 Ulrich Drepper <drepper@redhat.com> + * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Don't define + NEED_DL_SYSINFO since no processor < i686 had the sysenter opcode. + * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h: New file. + * sysdeps/unix/sysv/linux/i386/pthread_once.S: Use ENTER_KERNEL instead of int $0x80. * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise. diff --git a/nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h b/nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h index f0d4ac7a88..d22db81eb6 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h +++ b/nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h @@ -41,25 +41,3 @@ of weak definitions in ld.so. See rtld.c. */ #define RTLD_CORRECT_DYNAMIC_WEAK 1 - - -/* Traditionally system calls have been made using int $0x80. A - second method was introduced which, if possible, will use the - sysenter/syscall instructions. To signal the presence and where to - find the code the kernel passes an AT_SYSINFO value in the - auxiliary vector to the application. */ -#define NEED_DL_SYSINFO 1 - -#if defined NEED_DL_SYSINFO && !defined __ASSEMBLER__ -extern void _dl_sysinfo_int80 (void) attribute_hidden; -# define DL_SYSINFO_DEFAULT _dl_sysinfo_int80 -# define DL_SYSINFO_IMPLEMENTATION \ - asm (".type _dl_sysinfo_int80,@function\n\t" \ - ".hidden _dl_sysinfo_int80\n" \ - "_dl_sysinfo_int80:\n\t" \ - "int $0x80;\n\t" \ - "ret;\n\t" \ - ".size _dl_sysinfo_int80,.-_dl_sysinfo_int80"); -#endif - -#endif /* dl-sysdep.h */ diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h b/nptl/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h new file mode 100644 index 0000000000..f0d4ac7a88 --- /dev/null +++ b/nptl/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h @@ -0,0 +1,65 @@ +/* System-specific settings for dynamic linker code. Generic version. + Copyright (C) 2002 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. */ + +#ifndef _DL_SYSDEP_H +#define _DL_SYSDEP_H 1 + +/* This macro must be defined to either 0 or 1. + + If 1, then an errno global variable hidden in ld.so will work right with + all the errno-using libc code compiled for ld.so, and there is never a + need to share the errno location with libc. This is appropriate only if + all the libc functions that ld.so uses are called without PLT and always + get the versions linked into ld.so rather than the libc ones. */ + +#ifdef IS_IN_rtld +# define RTLD_PRIVATE_ERRNO 1 +#else +# define RTLD_PRIVATE_ERRNO 0 +#endif + +/* This configuration has in libc.so cancellable functions and other + functions which have to behave differently if the application uses + threads. It is not necessary that the thread library's definitions + are used. Therefore we can finally enabled the correct handling + of weak definitions in ld.so. See rtld.c. */ + +#define RTLD_CORRECT_DYNAMIC_WEAK 1 + + +/* Traditionally system calls have been made using int $0x80. A + second method was introduced which, if possible, will use the + sysenter/syscall instructions. To signal the presence and where to + find the code the kernel passes an AT_SYSINFO value in the + auxiliary vector to the application. */ +#define NEED_DL_SYSINFO 1 + +#if defined NEED_DL_SYSINFO && !defined __ASSEMBLER__ +extern void _dl_sysinfo_int80 (void) attribute_hidden; +# define DL_SYSINFO_DEFAULT _dl_sysinfo_int80 +# define DL_SYSINFO_IMPLEMENTATION \ + asm (".type _dl_sysinfo_int80,@function\n\t" \ + ".hidden _dl_sysinfo_int80\n" \ + "_dl_sysinfo_int80:\n\t" \ + "int $0x80;\n\t" \ + "ret;\n\t" \ + ".size _dl_sysinfo_int80,.-_dl_sysinfo_int80"); +#endif + +#endif /* dl-sysdep.h */ |