summaryrefslogtreecommitdiff
path: root/sysdeps/x86_64
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/x86_64')
-rw-r--r--sysdeps/x86_64/dl-machine.h2
-rw-r--r--sysdeps/x86_64/fpu/s_cosl.S16
-rw-r--r--sysdeps/x86_64/fpu/s_expm1l.S6
-rw-r--r--sysdeps/x86_64/fpu/s_sinl.S14
-rw-r--r--sysdeps/x86_64/fpu/s_tanl.S14
5 files changed, 44 insertions, 8 deletions
diff --git a/sysdeps/x86_64/dl-machine.h b/sysdeps/x86_64/dl-machine.h
index 8c67b5b5f9..4444ae0a71 100644
--- a/sysdeps/x86_64/dl-machine.h
+++ b/sysdeps/x86_64/dl-machine.h
@@ -403,7 +403,9 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
fmt = "\
%s: Symbol `%s' causes overflow in R_X86_64_32 relocation\n";
+# ifndef RESOLVE_CONFLICT_FIND_MAP
print_err:
+# endif
strtab = (const char *) D_PTR (map, l_info[DT_STRTAB]);
_dl_error_printf (fmt,
diff --git a/sysdeps/x86_64/fpu/s_cosl.S b/sysdeps/x86_64/fpu/s_cosl.S
index 6636fb5ec6..6921cda567 100644
--- a/sysdeps/x86_64/fpu/s_cosl.S
+++ b/sysdeps/x86_64/fpu/s_cosl.S
@@ -4,15 +4,22 @@
*
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
* Adapted for x86-64 by Andreas Jaeger <aj@suse.de>.
+ * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
*/
+#define __need_Emath
+#include <bits/errno.h>
#include <machine/asm.h>
-RCSID("$NetBSD: $")
-
ENTRY(__cosl)
fldt 8(%rsp)
- fcos
+ fxam
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 3f
+4: fcos
fnstsw %ax
testl $0x400,%eax
jnz 1f
@@ -28,5 +35,8 @@ ENTRY(__cosl)
fstp %st(1)
fcos
ret
+3: call __errno_location@PLT
+ movl $EDOM, (%rax)
+ jmp 4b
END (__cosl)
weak_alias (__cosl, cosl)
diff --git a/sysdeps/x86_64/fpu/s_expm1l.S b/sysdeps/x86_64/fpu/s_expm1l.S
index 05a1bfcce1..c0b93e94a9 100644
--- a/sysdeps/x86_64/fpu/s_expm1l.S
+++ b/sysdeps/x86_64/fpu/s_expm1l.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of exp(x)-1.
- Copyright (C) 1996, 1997, 2001, 2002, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1996,1997,2001,2002,2008,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>.
@@ -51,7 +51,7 @@ ENTRY(__expm1l)
movzwl 8+8(%rsp), %eax // load sign bit and 15-bit exponent
xorb $0x80, %ah // invert sign bit (now 1 is "positive")
cmpl $0xc006, %eax // is num positive and exp >= 6 (number is >= 128.0)?
- jae __ieee754_expl // (if num is denormal, it is at least >= 64.0)
+ jae __expl // (if num is denormal, it is at least >= 64.0)
fldt 8(%rsp) // x
fxam // Is NaN or +-Inf?
@@ -76,7 +76,7 @@ ENTRY(__expm1l)
fscale // 2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x)
fsubrl MO(one) // 1-2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x)
fstp %st(1) // 1-2^int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x)
- fsubrp %st, %st(1) // 2^(log2(e)*x)
+ fsubrp %st, %st(1) // 2^(log2(e)*x)-1
ret
2: testl $0x200, %eax // Test sign.
diff --git a/sysdeps/x86_64/fpu/s_sinl.S b/sysdeps/x86_64/fpu/s_sinl.S
index 181f112f4f..79fc4af95b 100644
--- a/sysdeps/x86_64/fpu/s_sinl.S
+++ b/sysdeps/x86_64/fpu/s_sinl.S
@@ -4,13 +4,22 @@
*
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
* Adapted for x86-64 by Andreas Jaeger <aj@suse.de>.
+ * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
*/
+#define __need_Emath
+#include <bits/errno.h>
#include <machine/asm.h>
ENTRY(__sinl)
fldt 8(%rsp)
- fsin
+ fxam
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 3f
+4: fsin
fnstsw %ax
testl $0x400,%eax
jnz 1f
@@ -26,5 +35,8 @@ ENTRY(__sinl)
fstp %st(1)
fsin
ret
+3: call __errno_location@PLT
+ movl $EDOM, (%rax)
+ jmp 4b
END (__sinl)
weak_alias (__sinl, sinl)
diff --git a/sysdeps/x86_64/fpu/s_tanl.S b/sysdeps/x86_64/fpu/s_tanl.S
index 674e908acc..6427e3f6f0 100644
--- a/sysdeps/x86_64/fpu/s_tanl.S
+++ b/sysdeps/x86_64/fpu/s_tanl.S
@@ -4,15 +4,24 @@
*
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
* Adapted for x86-64 by Andreas Jaeger <aj@suse.de>.
+ * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
*/
+#define __need_Emath
+#include <bits/errno.h>
#include <machine/asm.h>
RCSID("$NetBSD: $")
ENTRY(__tanl)
fldt 8(%rsp)
- fptan
+ fxam
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 3f
+4: fptan
fnstsw %ax
testl $0x400,%eax
jnz 1f
@@ -29,5 +38,8 @@ ENTRY(__tanl)
fptan
fstp %st(0)
ret
+3: call __errno_location@PLT
+ movl $EDOM, (%rax)
+ jmp 4b
END (__tanl)
weak_alias (__tanl, tanl)