diff options
author | Jakub Jelinek <jakub@redhat.com> | 2005-05-03 09:28:32 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2005-05-03 09:28:32 +0000 |
commit | eec65e81e75bc0af8212e59a281b52d920607fc8 (patch) | |
tree | 6b9c5f1795a1062c593a4f1cfb3cc92b8eb90970 /sysdeps/unix | |
parent | a0971eefb70ea4bf2c240f8b33926dde1dfbeb09 (diff) |
Updated to fedora-glibc-20050503T0852
Diffstat (limited to 'sysdeps/unix')
-rw-r--r-- | sysdeps/unix/sysv/linux/dl-sysdep.h | 27 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/socket.S | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/sysdep.h | 30 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/kernel-features.h | 22 |
4 files changed, 64 insertions, 19 deletions
diff --git a/sysdeps/unix/sysv/linux/dl-sysdep.h b/sysdeps/unix/sysv/linux/dl-sysdep.h new file mode 100644 index 0000000000..becfc8df3f --- /dev/null +++ b/sysdeps/unix/sysv/linux/dl-sysdep.h @@ -0,0 +1,27 @@ +/* System-specific settings for dynamic linker code. Linux version. + Copyright (C) 2005 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_next <dl-sysdep.h> + +/* On many architectures the kernel provides a virtual DSO and gives + AT_SYSINFO_EHDR to point us to it. As this is introduced for new + machines, we should look at it for unwind information even if + we aren't making direct use of it. So enable this across the board. */ + +#define NEED_DL_SYSINFO_DSO 1 diff --git a/sysdeps/unix/sysv/linux/i386/socket.S b/sysdeps/unix/sysv/linux/i386/socket.S index e403899cc6..7c8ac29b86 100644 --- a/sysdeps/unix/sysv/linux/i386/socket.S +++ b/sysdeps/unix/sysv/linux/i386/socket.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1995,1996,1997,1998,2002,2003 Free Software Foundation, Inc. +/* Copyright (C) 1995-1998,2002,2003,2005 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 @@ -41,7 +41,6 @@ #endif .globl __socket - cfi_startproc ENTRY (__socket) #if defined NEED_CANCELLATION && defined CENABLE SINGLE_THREAD_P @@ -118,7 +117,6 @@ L(pseudo_end): /* Successful; return the syscall's value. */ ret #endif - cfi_endproc PSEUDO_END (__socket) #ifndef NO_WEAK_ALIAS diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h index 6bea9d2044..d64d0a3a5c 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.h +++ b/sysdeps/unix/sysv/linux/i386/sysdep.h @@ -168,16 +168,22 @@ __i686.get_pc_thunk.reg: \ # else # define SYSCALL_ERROR_HANDLER \ 0:pushl %ebx; \ + cfi_adjust_cfa_offset (4); \ + cfi_rel_offset (ebx, 0); \ SETUP_PIC_REG (bx); \ addl $_GLOBAL_OFFSET_TABLE_, %ebx; \ xorl %edx, %edx; \ subl %eax, %edx; \ pushl %edx; \ + cfi_adjust_cfa_offset (4); \ PUSH_ERRNO_LOCATION_RETURN; \ call BP_SYM (__errno_location)@PLT; \ POP_ERRNO_LOCATION_RETURN; \ popl %ecx; \ + cfi_adjust_cfa_offset (-4); \ popl %ebx; \ + cfi_adjust_cfa_offset (-4); \ + cfi_restore (ebx); \ movl %ecx, (%eax); \ orl $-1, %eax; \ jmp L(pseudo_end); @@ -273,9 +279,11 @@ __i686.get_pc_thunk.reg: \ #define PUSHARGS_1 movl %ebx, %edx; L(SAVEBX1): PUSHARGS_0 #define DOARGS_1 _DOARGS_1 (4) #define POPARGS_1 POPARGS_0; movl %edx, %ebx; L(RESTBX1): -#define _PUSHARGS_1 pushl %ebx; L(PUSHBX1): _PUSHARGS_0 +#define _PUSHARGS_1 pushl %ebx; cfi_adjust_cfa_offset (4); \ + cfi_rel_offset (ebx, 0); L(PUSHBX1): _PUSHARGS_0 #define _DOARGS_1(n) movl n(%esp), %ebx; _DOARGS_0(n-4) -#define _POPARGS_1 _POPARGS_0; popl %ebx; L(POPBX1): +#define _POPARGS_1 _POPARGS_0; popl %ebx; cfi_adjust_cfa_offset (-4); \ + cfi_restore (ebx); L(POPBX1): #define PUSHARGS_2 PUSHARGS_1 #define DOARGS_2 _DOARGS_2 (8) @@ -294,23 +302,29 @@ __i686.get_pc_thunk.reg: \ #define PUSHARGS_4 _PUSHARGS_4 #define DOARGS_4 _DOARGS_4 (24) #define POPARGS_4 _POPARGS_4 -#define _PUSHARGS_4 pushl %esi; L(PUSHSI1): _PUSHARGS_3 +#define _PUSHARGS_4 pushl %esi; cfi_adjust_cfa_offset (4); \ + cfi_rel_offset (esi, 0); L(PUSHSI1): _PUSHARGS_3 #define _DOARGS_4(n) movl n(%esp), %esi; _DOARGS_3 (n-4) -#define _POPARGS_4 _POPARGS_3; popl %esi; L(POPSI1): +#define _POPARGS_4 _POPARGS_3; popl %esi; cfi_adjust_cfa_offset (-4); \ + cfi_restore (esi); L(POPSI1): #define PUSHARGS_5 _PUSHARGS_5 #define DOARGS_5 _DOARGS_5 (32) #define POPARGS_5 _POPARGS_5 -#define _PUSHARGS_5 pushl %edi; L(PUSHDI1): _PUSHARGS_4 +#define _PUSHARGS_5 pushl %edi; cfi_adjust_cfa_offset (4); \ + cfi_rel_offset (edi, 0); L(PUSHDI1): _PUSHARGS_4 #define _DOARGS_5(n) movl n(%esp), %edi; _DOARGS_4 (n-4) -#define _POPARGS_5 _POPARGS_4; popl %edi; L(POPDI1): +#define _POPARGS_5 _POPARGS_4; popl %edi; cfi_adjust_cfa_offset (-4); \ + cfi_restore (edi); L(POPDI1): #define PUSHARGS_6 _PUSHARGS_6 #define DOARGS_6 _DOARGS_6 (36) #define POPARGS_6 _POPARGS_6 -#define _PUSHARGS_6 pushl %ebp; L(PUSHBP1): _PUSHARGS_5 +#define _PUSHARGS_6 pushl %ebp; cfi_adjust_cfa_offset (4); \ + cfi_rel_offset (ebp, 0); L(PUSHBP1): _PUSHARGS_5 #define _DOARGS_6(n) movl n(%esp), %ebp; _DOARGS_5 (n-4) -#define _POPARGS_6 _POPARGS_5; popl %ebp; L(POPBP1): +#define _POPARGS_6 _POPARGS_5; popl %ebp; cfi_adjust_cfa_offset (-4); \ + cfi_restore (ebp); L(POPBP1): #else /* !__ASSEMBLER__ */ diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index 83ebe0cf74..26cddd5a73 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -354,22 +354,24 @@ /* The tgkill syscall was instroduced for i386 in 2.5.75. For Alpha it was introduced in 2.6.0-test1 which unfortunately cannot be - distinguished from 2.6.0. On x86-64 it was introduced in - 2.6.0-test3. */ + distinguished from 2.6.0. On x86-64, ppc, and ppc64 it was + introduced in 2.6.0-test3. */ #if (__LINUX_KERNEL_VERSION >= 132427 && defined __i386__) \ || (__LINUX_KERNEL_VERSION >= 132609 && defined __alpha__) \ || (__LINUX_KERNEL_VERSION >= 132609 && defined __x86_64__) \ + || (__LINUX_KERNEL_VERSION >= 132609 && defined __powerpc__) \ || (__LINUX_KERNEL_VERSION >= 132609 && defined __sh__) # define __ASSUME_TGKILL 1 #endif /* The utimes syscall has been available for some architectures - forever. For x86 it was introduced after 2.5.75, for x86-64 in - 2.6.0-test3. */ + forever. For x86 it was introduced after 2.5.75, for x86-64, + ppc, and ppc64 it was introduced in 2.6.0-test3. */ #if defined __alpha__ || defined __ia64__ || defined __hppa__ \ || defined __sparc__ \ || (__LINUX_KERNEL_VERSION > 132427 && defined __i386__) \ || (__LINUX_KERNEL_VERSION > 132609 && defined __x86_64__) \ + || (__LINUX_KERNEL_VERSION >= 132609 && defined __powerpc__) \ || (__LINUX_KERNEL_VERSION >= 132609 && defined __sh__) # define __ASSUME_UTIMES 1 #endif @@ -383,8 +385,11 @@ #endif /* The fixed version of the posix_fadvise64 syscall appeared in - 2.6.0-test3. At least for x86. */ -#if __LINUX_KERNEL_VERSION >= 132609 && defined __i386__ + 2.6.0-test3. At least for x86. Powerpc support appeared in + 2.6.2, but for 32-bit userspace only. */ +#if (__LINUX_KERNEL_VERSION >= 132609 && defined __i386__) \ + || (__LINUX_KERNEL_VERSION >= 132610 && defined __powerpc__ \ + && !defined __powerpc64__) # define __ASSUME_FADVISE64_64_SYSCALL 1 #endif @@ -419,8 +424,9 @@ # define __ASSUME_BRK_PAGE_ROUNDED 1 #endif -/* Starting with version 2.6.9, the waitid system call is available. */ -#if __LINUX_KERNEL_VERSION >= 0x020609 +/* Starting with version 2.6.9, the waitid system call is available. + Except for powerpc and powerpc64. */ +#if __LINUX_KERNEL_VERSION >= 0x020609 && !defined __powerpc__ # define __ASSUME_WAITID_SYSCALL 1 #endif |