diff options
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/x86_64/__start_context.S | 4 | ||||
-rw-r--r-- | sysdeps/x86_64/bsd-_setjmp.S | 4 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/bits/mathinline.h | 35 | ||||
-rw-r--r-- | sysdeps/x86_64/setjmp.S | 3 |
5 files changed, 45 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog index 6c7e971feb..459ee48d55 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2003-08-27 Ulrich Drepper <drepper@redhat.com> + + * sysdeps/x86_64/fpu/bits/mathinline.h: Define __signbitf, + __signbit, and __signbitl inline functions. + + * sysdeps/unix/sysv/linux/x86_64/__start_context.S: Use + HIDDEN_JUMPTARGET instead of JUMPTARGET to call exit(). + + * sysdeps/x86_64/bsd-_setjmp.S [PIC]: Jump to __GI___sigsetjmp. + * sysdeps/x86_64/setjmp.S: Add libc_hidden_def for __sigsetjmp. + 2003-08-27 Jakub Jelinek <jakub@redhat.com> * inet/inet_mkadr.c (inet_makeaddr): Optimize. diff --git a/sysdeps/unix/sysv/linux/x86_64/__start_context.S b/sysdeps/unix/sysv/linux/x86_64/__start_context.S index ad4502ca0a..a0ef3edcce 100644 --- a/sysdeps/unix/sysv/linux/x86_64/__start_context.S +++ b/sysdeps/unix/sysv/linux/x86_64/__start_context.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger <aj@suse.de>, 2002. @@ -41,7 +41,7 @@ ENTRY(__start_context) exit the program with the return error value (-1). */ 2: movq %rax,%rdi - call JUMPTARGET(exit) + call HIDDEN_JUMPTARGET(exit) /* The 'exit' call should never return. In case it does cause the process to terminate. */ hlt diff --git a/sysdeps/x86_64/bsd-_setjmp.S b/sysdeps/x86_64/bsd-_setjmp.S index 478f788275..0f32bf81a9 100644 --- a/sysdeps/x86_64/bsd-_setjmp.S +++ b/sysdeps/x86_64/bsd-_setjmp.S @@ -1,5 +1,5 @@ /* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. x86-64 version. - Copyright (C) 1994-1997,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1994-1997,2000,2001,2002,2003 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 @@ -32,7 +32,7 @@ ENTRY (BP_SYM (_setjmp)) /* Set up arguments, we only need to set the second arg. */ xorq %rsi, %rsi #ifdef PIC - jmp C_SYMBOL_NAME (BP_SYM (__sigsetjmp))@PLT + jmp __GI___sigsetjmp #else jmp BP_SYM (__sigsetjmp) #endif diff --git a/sysdeps/x86_64/fpu/bits/mathinline.h b/sysdeps/x86_64/fpu/bits/mathinline.h index 08e1c5b1da..c77412d28d 100644 --- a/sysdeps/x86_64/fpu/bits/mathinline.h +++ b/sysdeps/x86_64/fpu/bits/mathinline.h @@ -1,5 +1,5 @@ /* Inline math functions for x86-64. - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger <aj@suse.de>, 2002. @@ -31,10 +31,31 @@ #if defined __USE_ISOC99 && defined __GNUC__ && __GNUC__ >= 2 /* GCC has builtins that can be used. */ -# define isgreater(x, y) __builtin_isgreater (x, y) -# define isgreaterequal(x, y) __builtin_isgreaterequal (x, y) -# define isless(x, y) __builtin_isless (x, y) -# define islessequal(x, y) __builtin_islessequal (x, y) -# define islessgreater(x, y) __builtin_islessgreater (x, y) -# define isunordered(x, y) __builtin_isunordered (x, y) +# define isgreater(x, y) __builtin_isgreater (x, y) +# define isgreaterequal(x, y) __builtin_isgreaterequal (x, y) +# define isless(x, y) __builtin_isless (x, y) +# define islessequal(x, y) __builtin_islessequal (x, y) +# define islessgreater(x, y) __builtin_islessgreater (x, y) +# define isunordered(x, y) __builtin_isunordered (x, y) + + +/* Test for negative number. Used in the signbit() macro. */ +__MATH_INLINE int +__signbitf (float __x) __THROW +{ + __extension__ union { float __f; int __i; } __u = { __f: __x }; + return __u.__i < 0; +} +__MATH_INLINE int +__signbit (double __x) __THROW +{ + __extension__ union { double __d; int __i[2]; } __u = { __d: __x }; + return __u.__i[1] < 0; +} +__MATH_INLINE int +__signbitl (long double __x) __THROW +{ + __extension__ union { long double __l; int __i[3]; } __u = { __l: __x }; + return (__u.__i[2] & 0x8000) != 0; +} #endif diff --git a/sysdeps/x86_64/setjmp.S b/sysdeps/x86_64/setjmp.S index e40381da31..811ab1d913 100644 --- a/sysdeps/x86_64/setjmp.S +++ b/sysdeps/x86_64/setjmp.S @@ -1,5 +1,5 @@ /* setjmp for x86-64. - Copyright (C) 2001 Free Software Foundation, Inc. + Copyright (C) 2001, 2003 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 @@ -43,3 +43,4 @@ ENTRY (__sigsetjmp) jmp BP_SYM (__sigjmp_save) #endif END (BP_SYM (__sigsetjmp)) +hidden_def (__sigsetjmp) |