as argument to the scripts.
* intl/tst-gettext2.sh: Use mkdir -p instead of test -d + mkdir.
* intl/tst-gettext4.sh: Likewise. Use run_program_prefix argument.
* intl/tst-gettext5.sh: Likewise.
* intl/tst-translit.sh: Add mkdir -p.
* sysdeps/unix/sysv/linux/i386/sysdep.h (SETUP_PIC_REG): Use
.ifndef/.endif to allow use of this macro more than once per .S
file.
(LOAD_PIC_REG): New macro.
* sysdeps/unix/sysv/linux/i386/makecontext.S: Add call frame
information.
* sysdeps/unix/sysv/linux/i386/getcontext.S: Likewise.
* sysdeps/unix/sysv/linux/i386/vfork.S: Likewise.
* sysdeps/i386/fpu/s_asinh.S: Use LOAD_PIC_REG macro. Add call frame
information.
* sysdeps/i386/fpu/e_log10f.S: Likewise.
* sysdeps/i386/fpu/s_expm1.S: Likewise.
* sysdeps/i386/fpu/e_acoshf.S: Likewise.
* sysdeps/i386/fpu/e_log2l.S: Likewise.
* sysdeps/i386/fpu/s_log1pf.S: Likewise.
* sysdeps/i386/fpu/s_lrint.S: Likewise.
* sysdeps/i386/fpu/s_llrint.S: Likewise.
* sysdeps/i386/fpu/s_ilogbf.S: Likewise.
* sysdeps/i386/fpu/s_cbrtl.S: Likewise.
* sysdeps/i386/fpu/s_asinhf.S: Likewise.
* sysdeps/i386/fpu/e_log.S: Likewise.
* sysdeps/i386/fpu/e_atanhf.S: Likewise.
* sysdeps/i386/fpu/s_lrintl.S: Likewise.
* sysdeps/i386/fpu/e_atanhl.S: Likewise.
* sysdeps/i386/fpu/e_scalb.S: Likewise.
* sysdeps/i386/fpu/s_log1p.S: Likewise.
* sysdeps/i386/fpu/s_nearbyintl.S: Likewise.
* sysdeps/i386/fpu/s_frexpl.S: Likewise.
* sysdeps/i386/fpu/s_log1pl.S: Likewise.
* sysdeps/i386/fpu/s_nearbyintf.S: Likewise.
* sysdeps/i386/fpu/s_cbrt.S: Likewise.
* sysdeps/i386/fpu/s_expm1l.S: Likewise.
* sysdeps/i386/fpu/s_lrintf.S: Likewise.
* sysdeps/i386/fpu/e_acosh.S: Likewise.
* sysdeps/i386/fpu/s_cexp.S: Likewise.
* sysdeps/i386/fpu/s_ilogbl.S: Likewise.
* sysdeps/i386/fpu/s_expm1f.S: Likewise.
* sysdeps/i386/fpu/e_powl.S: Likewise.
* sysdeps/i386/fpu/e_powf.S: Likewise.
* sysdeps/i386/fpu/e_scalbf.S: Likewise.
* sysdeps/i386/fpu/e_logl.S: Likewise.
* sysdeps/i386/fpu/e_acoshl.S: Likewise.
* sysdeps/i386/fpu/s_frexp.S: Likewise.
* sysdeps/i386/fpu/e_pow.S: Likewise.
* sysdeps/i386/fpu/e_logf.S: Likewise.
* sysdeps/i386/fpu/e_log2.S: Likewise.
* sysdeps/i386/fpu/s_frexpf.S: Likewise.
* sysdeps/i386/fpu/s_cexpl.S: Likewise.
* sysdeps/i386/fpu/s_llrintf.S: Likewise.
* sysdeps/i386/fpu/s_ilogb.S: Likewise.
* sysdeps/i386/fpu/e_scalbl.S: Likewise.
* sysdeps/i386/fpu/e_atanh.S: Likewise.
* sysdeps/i386/fpu/e_log10.S: Likewise.
* sysdeps/i386/fpu/s_cbrtf.S: Likewise.
* sysdeps/i386/fpu/s_cexpf.S: Likewise.
* sysdeps/i386/fpu/s_llrintl.S: Likewise.
* sysdeps/i386/fpu/e_log10l.S: Likewise.
* sysdeps/i386/fpu/s_nearbyint.S: Likewise.
* sysdeps/i386/fpu/s_asinhl.S: Likewise.
* sysdeps/i386/fpu/e_log2f.S: Likewise.
* sysdeps/i386/addmul_1.S: Various fixes to cfi handling.
* sysdeps/i386/mul_1.S: Likewise.
* sysdeps/i386/strtok.S: Likewise.
* sysdeps/i386/sub_n.S: Likewise.
* sysdeps/i386/submul_1.S: Likewise.
* sysdeps/i386/i586/addmul_1.S: Likewise.
* sysdeps/i386/i586/memcpy.S: Likewise.
* sysdeps/i386/i586/mul_1.S: Likewise.
* sysdeps/i386/i586/rshift.S: Likewise.
* sysdeps/i386/i586/sub_n.S: Likewise.
* sysdeps/i386/i586/submul_1.S: Likewise.
* sysdeps/i386/i686/memcmp.S: Likewise.
* sysdeps/i386/i686/memmove.S: Likewise.
* sysdeps/unix/sysv/linux/i386/clone.S: Likewise.
* sysdeps/unix/sysv/linux/i386/mmap.S: Likewise.
* sysdeps/unix/sysv/linux/i386/mmap64.S: Likewise.
* sysdeps/unix/sysv/linux/i386/setcontext.S: Likewise.
+2005-05-04 Jakub Jelinek <jakub@redhat.com>
+
+ * intl/Makefile (tst-gettext[45].out): Pass also $(run-program-prefix)
+ as argument to the scripts.
+ * intl/tst-gettext2.sh: Use mkdir -p instead of test -d + mkdir.
+ * intl/tst-gettext4.sh: Likewise. Use run_program_prefix argument.
+ * intl/tst-gettext5.sh: Likewise.
+
+ * intl/tst-translit.sh: Add mkdir -p.
+
+ * sysdeps/unix/sysv/linux/i386/sysdep.h (SETUP_PIC_REG): Use
+ .ifndef/.endif to allow use of this macro more than once per .S
+ file.
+ (LOAD_PIC_REG): New macro.
+ * sysdeps/unix/sysv/linux/i386/makecontext.S: Add call frame
+ information.
+ * sysdeps/unix/sysv/linux/i386/getcontext.S: Likewise.
+ * sysdeps/unix/sysv/linux/i386/vfork.S: Likewise.
+ * sysdeps/i386/fpu/s_asinh.S: Use LOAD_PIC_REG macro. Add call frame
+ information.
+ * sysdeps/i386/fpu/e_log10f.S: Likewise.
+ * sysdeps/i386/fpu/s_expm1.S: Likewise.
+ * sysdeps/i386/fpu/e_acoshf.S: Likewise.
+ * sysdeps/i386/fpu/e_log2l.S: Likewise.
+ * sysdeps/i386/fpu/s_log1pf.S: Likewise.
+ * sysdeps/i386/fpu/s_lrint.S: Likewise.
+ * sysdeps/i386/fpu/s_llrint.S: Likewise.
+ * sysdeps/i386/fpu/s_ilogbf.S: Likewise.
+ * sysdeps/i386/fpu/s_cbrtl.S: Likewise.
+ * sysdeps/i386/fpu/s_asinhf.S: Likewise.
+ * sysdeps/i386/fpu/e_log.S: Likewise.
+ * sysdeps/i386/fpu/e_atanhf.S: Likewise.
+ * sysdeps/i386/fpu/s_lrintl.S: Likewise.
+ * sysdeps/i386/fpu/e_atanhl.S: Likewise.
+ * sysdeps/i386/fpu/e_scalb.S: Likewise.
+ * sysdeps/i386/fpu/s_log1p.S: Likewise.
+ * sysdeps/i386/fpu/s_nearbyintl.S: Likewise.
+ * sysdeps/i386/fpu/s_frexpl.S: Likewise.
+ * sysdeps/i386/fpu/s_log1pl.S: Likewise.
+ * sysdeps/i386/fpu/s_nearbyintf.S: Likewise.
+ * sysdeps/i386/fpu/s_cbrt.S: Likewise.
+ * sysdeps/i386/fpu/s_expm1l.S: Likewise.
+ * sysdeps/i386/fpu/s_lrintf.S: Likewise.
+ * sysdeps/i386/fpu/e_acosh.S: Likewise.
+ * sysdeps/i386/fpu/s_cexp.S: Likewise.
+ * sysdeps/i386/fpu/s_ilogbl.S: Likewise.
+ * sysdeps/i386/fpu/s_expm1f.S: Likewise.
+ * sysdeps/i386/fpu/e_powl.S: Likewise.
+ * sysdeps/i386/fpu/e_powf.S: Likewise.
+ * sysdeps/i386/fpu/e_scalbf.S: Likewise.
+ * sysdeps/i386/fpu/e_logl.S: Likewise.
+ * sysdeps/i386/fpu/e_acoshl.S: Likewise.
+ * sysdeps/i386/fpu/s_frexp.S: Likewise.
+ * sysdeps/i386/fpu/e_pow.S: Likewise.
+ * sysdeps/i386/fpu/e_logf.S: Likewise.
+ * sysdeps/i386/fpu/e_log2.S: Likewise.
+ * sysdeps/i386/fpu/s_frexpf.S: Likewise.
+ * sysdeps/i386/fpu/s_cexpl.S: Likewise.
+ * sysdeps/i386/fpu/s_llrintf.S: Likewise.
+ * sysdeps/i386/fpu/s_ilogb.S: Likewise.
+ * sysdeps/i386/fpu/e_scalbl.S: Likewise.
+ * sysdeps/i386/fpu/e_atanh.S: Likewise.
+ * sysdeps/i386/fpu/e_log10.S: Likewise.
+ * sysdeps/i386/fpu/s_cbrtf.S: Likewise.
+ * sysdeps/i386/fpu/s_cexpf.S: Likewise.
+ * sysdeps/i386/fpu/s_llrintl.S: Likewise.
+ * sysdeps/i386/fpu/e_log10l.S: Likewise.
+ * sysdeps/i386/fpu/s_nearbyint.S: Likewise.
+ * sysdeps/i386/fpu/s_asinhl.S: Likewise.
+ * sysdeps/i386/fpu/e_log2f.S: Likewise.
+ * sysdeps/i386/addmul_1.S: Various fixes to cfi handling.
+ * sysdeps/i386/mul_1.S: Likewise.
+ * sysdeps/i386/strtok.S: Likewise.
+ * sysdeps/i386/sub_n.S: Likewise.
+ * sysdeps/i386/submul_1.S: Likewise.
+ * sysdeps/i386/i586/addmul_1.S: Likewise.
+ * sysdeps/i386/i586/memcpy.S: Likewise.
+ * sysdeps/i386/i586/mul_1.S: Likewise.
+ * sysdeps/i386/i586/rshift.S: Likewise.
+ * sysdeps/i386/i586/sub_n.S: Likewise.
+ * sysdeps/i386/i586/submul_1.S: Likewise.
+ * sysdeps/i386/i686/memcmp.S: Likewise.
+ * sysdeps/i386/i686/memmove.S: Likewise.
+ * sysdeps/unix/sysv/linux/i386/clone.S: Likewise.
+ * sysdeps/unix/sysv/linux/i386/mmap.S: Likewise.
+ * sysdeps/unix/sysv/linux/i386/mmap64.S: Likewise.
+ * sysdeps/unix/sysv/linux/i386/setcontext.S: Likewise.
+
2005-05-03 Ulrich Drepper <drepper@redhat.com>
* sysdeps/i386/add_n.S: Add call frame information.
$(objpfx)tst-gettext3.out: tst-gettext3.sh $(objpfx)tst-gettext3
$(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/
$(objpfx)tst-gettext4.out: tst-gettext4.sh $(objpfx)tst-gettext4
- $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/
+ $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/
$(objpfx)tst-gettext5.out: tst-gettext5.sh $(objpfx)tst-gettext5
- $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/
+ $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/
endif
endif
#! /bin/sh
# Test of gettext functions.
-# Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2003, 2005 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
#
export LC_ALL
# Generate the test data.
-test -d ${objpfx}domaindir || mkdir ${objpfx}domaindir
+mkdir -p ${objpfx}domaindir
# Create the locale directories.
test -d ${objpfx}domaindir/lang1 || {
mkdir ${objpfx}domaindir/lang1
# 02111-1307 USA.
common_objpfx=$1
-objpfx=$2
+run_program_prefix=$2
+objpfx=$3
LC_ALL=C
export LC_ALL
-# Generate the test data.
-test -d ${objpfx}domaindir || mkdir ${objpfx}domaindir
# Create the domain directories.
-test -d ${objpfx}domaindir/de_DE || mkdir ${objpfx}domaindir/de_DE
-test -d ${objpfx}domaindir/de_DE/LC_MESSAGES || mkdir ${objpfx}domaindir/de_DE/LC_MESSAGES
-test -d ${objpfx}domaindir/fr_FR || mkdir ${objpfx}domaindir/fr_FR
-test -d ${objpfx}domaindir/fr_FR/LC_MESSAGES || mkdir ${objpfx}domaindir/fr_FR/LC_MESSAGES
+mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES
+mkdir -p ${objpfx}domaindir/fr_FR/LC_MESSAGES
# Populate them.
msgfmt -o ${objpfx}domaindir/de_DE/LC_MESSAGES/multithread.mo tst-gettext4-de.po
msgfmt -o ${objpfx}domaindir/fr_FR/LC_MESSAGES/multithread.mo tst-gettext4-fr.po
LOCPATH=${common_objpfx}localedata
export LOCPATH
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
-${objpfx}tst-gettext4 > ${objpfx}tst-gettext4.out
+${run_program_prefix} ${objpfx}tst-gettext4 > ${objpfx}tst-gettext4.out
exit $?
# 02111-1307 USA.
common_objpfx=$1
-objpfx=$2
+run_program_prefix=$2
+objpfx=$3
LC_ALL=C
export LC_ALL
-# Generate the test data.
-test -d ${objpfx}domaindir || mkdir ${objpfx}domaindir
# Create the domain directories.
-test -d ${objpfx}domaindir/de_DE || mkdir ${objpfx}domaindir/de_DE
-test -d ${objpfx}domaindir/de_DE/LC_MESSAGES || mkdir ${objpfx}domaindir/de_DE/LC_MESSAGES
+mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES
# Populate them.
msgfmt -o ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo tstcodeset.po
LOCPATH=${common_objpfx}localedata
export LOCPATH
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
-${objpfx}tst-gettext5 > ${objpfx}tst-gettext5.out
+${run_program_prefix} ${objpfx}tst-gettext5 > ${objpfx}tst-gettext5.out
exit $?
#! /bin/sh
# Test of transliteration in gettext functions.
-# Copyright (C) 2000, 2002 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2002, 2005 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
#
LC_ALL=C
export LC_ALL
+# Create the locale directories.
+mkdir -p ${objpfx}localedir/existing-locale/LC_MESSAGES
+
msgfmt -o ${objpfx}domaindir/existing-locale/LC_MESSAGES/translit.mo \
translit.po
ENTRY (BP_SYM (__mpn_addmul_1))
ENTER
- pushl %edi
+ pushl %res_ptr
cfi_adjust_cfa_offset (4)
- pushl %esi
+ pushl %s1_ptr
cfi_adjust_cfa_offset (4)
pushl %ebp
cfi_adjust_cfa_offset (4)
- pushl %ebx
+ pushl %s2_limb
cfi_adjust_cfa_offset (4)
movl RES(%esp), %res_ptr
jnz L(oop)
movl %ebp, %eax
- popl %ebx
+ popl %s2_limb
cfi_adjust_cfa_offset (-4)
- cfi_restore (ebx)
+ cfi_restore (s2_limb)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
- popl %esi
+ popl %s1_ptr
cfi_adjust_cfa_offset (-4)
- cfi_restore (esi)
- popl %edi
+ cfi_restore (s1_ptr)
+ popl %res_ptr
cfi_adjust_cfa_offset (-4)
- cfi_restore (edi)
+ cfi_restore (res_ptr)
LEAVE
ret
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996 Free Software Foundation, Inc.
+ Copyright (C) 1996, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
cmpl $0x41b00000, %ecx
ja 3f // x > 2^28
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpl $0x40000000, %ecx
ja 4f // x > 2
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
cmpl $0x47000000, %ecx
ja 3f // x > 2^14
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpl $0x40000000, %ecx
ja 4f // x > 2
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
cmpl $0x4020, %ecx
ja 3f // x > 2^34
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpl $0x4000, %ecx
ja 4f // x > 2
/* ix87 specific implementation of arctanh function.
- Copyright (C) 1996, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1999, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
#ifdef PIC
call 1f
+ cfi_adjust_cfa_offset (4)
1: popl %edx
+ cfi_adjust_cfa_offset (-4)
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif
/* ix87 specific implementation of arctanh function.
- Copyright (C) 1996, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1999, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
ja 5f
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
andl $0x80000000, %ecx // ECX == 0 iff X >= 0
7:
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
andl $0x8000, %ecx // ECX == 0 iff X >= 0
fldln2 // log(2)
fldl 4(%esp) // x : log(2)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fld %st // x : x : log(2)
fsubl MO(one) // x-1 : x : log(2)
fldlg2 // log10(2)
fldl 4(%esp) // x : log10(2)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fxam
fnstsw
fldlg2 // log10(2)
flds 4(%esp) // x : log10(2)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fxam
fnstsw
fldlg2 // log10(2)
fldt 4(%esp) // x : log10(2)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fxam
fnstsw
.text
ENTRY(__ieee754_log2)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fldl MO(one)
fldl 4(%esp) // x : 1
.text
ENTRY(__ieee754_log2f)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fldl MO(one)
flds 4(%esp) // x : 1
.text
ENTRY(__ieee754_log2l)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fldl MO(one)
fldt 4(%esp) // x : 1
fldln2 // log(2)
flds 4(%esp) // x : log(2)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fld %st // x : x : log(2)
fsubl MO(one) // x-1 : x : log(2)
fldln2 // log(2)
fldt 4(%esp) // x : log(2)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fld %st // x : x : log(2)
fsubl MO(one) // x-1 : x : log(2)
/* ix87 specific implementation of pow function.
- Copyright (C) 1996, 1997, 1998, 1999, 2001, 2004
+ Copyright (C) 1996, 1997, 1998, 1999, 2001, 2004, 2005
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
fxam
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fnstsw
fldl 4(%esp) // x : y
subl $8,%esp
+ cfi_adjust_cfa_offset (8)
fxam
fnstsw
/* OK, we have an integer value for y. */
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
orl $0, %edx
fstp %st(0) // x
jns 4f // y >= 0, jump
31: fstp %st(1)
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
2: /* y is a real number. */
fxch // x : y
faddl MO(one) // 2^fract(y*log2(x)) : int(y*log2(x))
fscale // 2^fract(y*log2(x))*2^int(y*log2(x)) : int(y*log2(x))
addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x))
ret
13: fldl 4(%esp) // load x == NaN
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
// x is ±inf
15: fstp %st(0) // y
// OK, the value is an integer, but is the number of bits small
// enough so that all are coming from the mantissa?
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
andb $1, %al
jz 18f // jump if not odd
movl %edx, %eax
fldl MOX(minf_mzero, %edx, 8)
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
16: fcompl MO(zero)
addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
fnstsw
shrl $5, %eax
andl $8, %eax
fldl MOX(inf_zero, %eax, 1)
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
17: shll $30, %edx // sign bit for y in right position
addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
18: shrl $31, %edx
fldl MOX(inf_zero, %edx, 8)
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
// x is ±0
20: fstp %st(0) // y
// OK, the value is an integer, but is the number of bits small
// enough so that all are coming from the mantissa?
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
andb $1, %al
jz 27f // jump if not odd
cmpl $0xffe00000, %edx
fchs
ret
+ cfi_adjust_cfa_offset (8)
25: fstp %st(0)
26: addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
27: // Raise divide-by-zero exception and get infinity value.
fldl MO(one)
fdivl MO(zero)
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
// x is ±0 and y is > 0. We must find out whether y is an odd integer.
21: testb $2, %dh
// OK, the value is an integer, but is the number of bits small
// enough so that all are coming from the mantissa?
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
andb $1, %al
jz 24f // jump if not odd
cmpl $0xffe00000, %edx
fldl MO(mzero)
ret
+ cfi_adjust_cfa_offset (8)
22: fstp %st(0)
23: addl $8, %esp // Don't use 2 x pop
+ cfi_adjust_cfa_offset (-8)
24: fldl MO(zero)
ret
/* ix87 specific implementation of pow function.
- Copyright (C) 1996, 1997, 1999, 2001, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1999, 2001, 2004, 2005
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
fxam
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fnstsw
flds 4(%esp) // x : y
subl $4, %esp
+ cfi_adjust_cfa_offset (4)
fxam
fnstsw
/* OK, we have an integer value for y. */
popl %edx
+ cfi_adjust_cfa_offset (-4)
orl $0, %edx
fstp %st(0) // x
jns 4f // y >= 0, jump
31: fstp %st(1)
ret
+ cfi_adjust_cfa_offset (4)
.align ALIGNARG(4)
2: /* y is a real number. */
fxch // x : y
faddl MO(one) // 2^fract(y*log2(x)) : int(y*log2(x))
fscale // 2^fract(y*log2(x))*2^int(y*log2(x)) : int(y*log2(x))
addl $4, %esp
+ cfi_adjust_cfa_offset (-4)
fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x))
ret
13: flds 4(%esp) // load x == NaN
ret
+ cfi_adjust_cfa_offset (4)
.align ALIGNARG(4)
// x is ±inf
15: fstp %st(0) // y
// OK, the value is an integer, but is the number of bits small
// enough so that all are coming from the mantissa?
popl %edx
+ cfi_adjust_cfa_offset (-4)
testb $1, %dl
jz 18f // jump if not odd
movl %edx, %eax
fldl MOX(minf_mzero, %edx, 8)
ret
+ cfi_adjust_cfa_offset (4)
.align ALIGNARG(4)
16: fcompl MO(zero)
addl $4, %esp
+ cfi_adjust_cfa_offset (-4)
fnstsw
shrl $5, %eax
andl $8, %eax
fldl MOX(inf_zero, %eax, 1)
ret
+ cfi_adjust_cfa_offset (4)
.align ALIGNARG(4)
17: shll $30, %edx // sign bit for y in right position
addl $4, %esp
+ cfi_adjust_cfa_offset (-4)
18: shrl $31, %edx
fldl MOX(inf_zero, %edx, 8)
ret
+ cfi_adjust_cfa_offset (4)
.align ALIGNARG(4)
// x is ±0
20: fstp %st(0) // y
// OK, the value is an integer, but is the number of bits small
// enough so that all are coming from the mantissa?
popl %edx
+ cfi_adjust_cfa_offset (-4)
testb $1, %dl
jz 27f // jump if not odd
cmpl $0xff000000, %edx
fchs
ret
+ cfi_adjust_cfa_offset (4)
25: fstp %st(0)
26: addl $4, %esp
+ cfi_adjust_cfa_offset (-4)
27: // Raise divide-by-zero exception and get infinity value.
fldl MO(one)
fdivl MO(zero)
ret
+ cfi_adjust_cfa_offset (4)
.align ALIGNARG(4)
// x is ±0 and y is > 0. We must find out whether y is an odd integer.
21: testb $2, %dh
// OK, the value is an integer, but is the number of bits small
// enough so that all are coming from the mantissa?
popl %edx
+ cfi_adjust_cfa_offset (-4)
testb $1, %dl
jz 24f // jump if not odd
cmpl $0xff000000, %edx
fldl MO(mzero)
ret
+ cfi_adjust_cfa_offset (4)
22: fstp %st(0)
23: addl $4, %esp // Don't use pop.
+ cfi_adjust_cfa_offset (-4)
24: fldl MO(zero)
ret
/* ix87 specific implementation of pow function.
- Copyright (C) 1996, 1997, 1998, 1999, 2001, 2004
+ Copyright (C) 1996, 1997, 1998, 1999, 2001, 2004, 2005
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
fxam
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fnstsw
fldt 4(%esp) // x : y
subl $8,%esp
+ cfi_adjust_cfa_offset (8)
fxam
fnstsw
/* OK, we have an integer value for y. */
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
orl $0, %edx
fstp %st(0) // x
jns 4f // y >= 0, jump
31: fstp %st(1)
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
2: /* y is a real number. */
fxch // x : y
faddl MO(one) // 2^fract(y*log2(x)) : int(y*log2(x))
fscale // 2^fract(y*log2(x))*2^int(y*log2(x)) : int(y*log2(x))
addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x))
ret
+ cfi_adjust_cfa_offset (8)
28: fstp %st(1) // y*log2(x)
fldl MO(one) // 1 : y*log2(x)
fscale // 2^(y*log2(x)) : y*log2(x)
addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
fstp %st(1) // 2^(y*log2(x))
ret
13: fldt 4(%esp) // load x == NaN
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
// x is ±inf
15: fstp %st(0) // y
// OK, the value is an integer, but is it odd?
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
andb $1, %al
jz 18f // jump if not odd
// It's an odd integer.
fldl MOX(minf_mzero, %edx, 8)
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
16: fcompl MO(zero)
addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
fnstsw
shrl $5, %eax
andl $8, %eax
fldl MOX(inf_zero, %eax, 1)
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
17: shll $30, %edx // sign bit for y in right position
addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
18: shrl $31, %edx
fldl MOX(inf_zero, %edx, 8)
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
// x is ±0
20: fstp %st(0) // y
// OK, the value is an integer, but is it odd?
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
andb $1, %al
jz 27f // jump if not odd
// It's an odd integer.
fchs
ret
+ cfi_adjust_cfa_offset (8)
25: fstp %st(0)
26: addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
27: // Raise divide-by-zero exception and get infinity value.
fldl MO(one)
fdivl MO(zero)
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
// x is ±0 and y is > 0. We must find out whether y is an odd integer.
21: testb $2, %dh
// OK, the value is an integer, but is it odd?
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
andb $1, %al
jz 24f // jump if not odd
// It's an odd integer.
fldl MO(mzero)
ret
+ cfi_adjust_cfa_offset (8)
22: fstp %st(0)
23: addl $8, %esp // Don't use 2 x pop
+ cfi_adjust_cfa_offset (-8)
24: fldl MO(zero)
ret
/* y is -inf */
1: fxam
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fnstsw
movl 8(%esp), %edx
2: fstp %st
fstp %st
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fldl MO(nan)
ret
/* y is -inf */
1: fxam
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fnstsw
movl 4(%esp), %edx
2: fstp %st
fstp %st
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fldl MO(nan)
ret
/* y is -inf */
1: fxam
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fnstsw
movl 12(%esp), %edx
2: fstp %st
fstp %st
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fldl MO(nan)
ret
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
fxch // |x| : log(2)
ja 3f // |x| > 2^28
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpl $0x40000000, %eax
ja 5f // |x| > 2
.align ALIGNARG(4)
2:
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
jecxz 4f
fchs // x
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1999, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
fxch // |x| : log(2)
ja 3f // |x| > 2^14
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpl $0x40000000, %eax
ja 5f // |x| > 2
.align ALIGNARG(4)
2:
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
jecxz 4f
fchs // x
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
fxch // |x| : log(2)
ja 3f // |x| > 2^34
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpl $0x4000, %eax
ja 5f // |x| > 2
.align ALIGNARG(4)
2:
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
jecxz 4f
fchs // x
/* Compute cubic root of double value.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Dirk Alboth <dirka@uni-paderborn.de> and
Ulrich Drepper <drepper@cygnus.com>, 1997.
#ifdef PIC
pushl %ebx
- call 3f
-3: popl %ebx
- addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ LOAD_PIC_REG (bx)
#endif
cmpl $0x00100000, %eax
fdivp %st, %st(1) /* u*(t2+2*xm)/(2*t2+xm) */
fmull MOX(16+factor,%ecx) /* u*(t2+2*xm)/(2*t2+xm)*FACT */
pushl %eax
+ cfi_adjust_cfa_offset (4)
fildl (%esp) /* xe/3 : u*(t2+2*xm)/(2*t2+xm)*FACT */
fxch /* u*(t2+2*xm)/(2*t2+xm)*FACT : xe/3 */
fscale /* u*(t2+2*xm)/(2*t2+xm)*FACT*2^xe/3 */
popl %edx
+ cfi_adjust_cfa_offset (-4)
#ifdef PIC
movl 12(%esp), %eax
popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
#else
movl 8(%esp), %eax
#endif
/* Compute cubic root of float value.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Dirk Alboth <dirka@uni-paderborn.de> and
Ulrich Drepper <drepper@cygnus.com>, 1997.
#ifdef PIC
pushl %ebx
- call 3f
-3: popl %ebx
- addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ LOAD_PIC_REG (bx)
#endif
cmpl $0x00800000, %eax
fdivp %st, %st(1) /* u*(t2+2*xm)/(2*t2+xm) */
fmull MOX(16+factor,%ecx) /* u*(t2+2*xm)/(2*t2+xm)*FACT */
pushl %eax
+ cfi_adjust_cfa_offset (4)
fildl (%esp) /* xe/3 : u*(t2+2*xm)/(2*t2+xm)*FACT */
fxch /* u*(t2+2*xm)/(2*t2+xm)*FACT : xe/3 */
fscale /* u*(t2+2*xm)/(2*t2+xm)*FACT*2^xe/3 */
popl %edx
+ cfi_adjust_cfa_offset (-4)
#ifdef PIC
movl 8(%esp), %eax
popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
#else
movl 4(%esp), %eax
#endif
/* Compute cubic root of long double value.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Dirk Alboth <dirka@uni-paderborn.de> and
Ulrich Drepper <drepper@cygnus.com>, 1997.
#ifdef PIC
pushl %ebx
- call 3f
-3: popl %ebx
- addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ LOAD_PIC_REG (bx)
#endif
cmpl $0, %eax
fldt MOX(32+factor,%ecx)
fmulp /* u*(t2+2*xm)/(2*t2+xm)*FACT */
pushl %eax
+ cfi_adjust_cfa_offset (4)
fildl (%esp) /* xe/3 : u*(t2+2*xm)/(2*t2+xm)*FACT */
fxch /* u*(t2+2*xm)/(2*t2+xm)*FACT : xe/3 */
fscale /* u*(t2+2*xm)/(2*t2+xm)*FACT*2^xe/3 */
popl %edx
+ cfi_adjust_cfa_offset (-4)
#ifdef PIC
movl 16(%esp), %eax
popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
#else
movl 12(%esp), %eax
#endif
/* ix87 specific implementation of complex exponential function for double.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
fnstsw
fldl 16(%esp) /* y : x */
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
movb %ah, %dh
andb $0x45, %ah
/* ix87 specific implementation of complex exponential function for double.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
fnstsw
flds 8(%esp) /* y : x */
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
movb %ah, %dh
andb $0x45, %ah
fmulp %st, %st(3) /* sin(y) : e^x : e^x * cos(y) */
fmulp %st, %st(1) /* e^x * sin(y) : e^x * cos(y) */
subl $8, %esp
+ cfi_adjust_cfa_offset (8)
fstps 4(%esp)
fstps (%esp)
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
ret
/* We have to reduce the argument to fsincos. */
fmulp %st, %st(3)
fmulp %st, %st(1)
subl $8, %esp
+ cfi_adjust_cfa_offset (8)
fstps 4(%esp)
fstps (%esp)
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
ret
/* The real part is +-inf. We must make further differences. */
+-Inf+-0i. */
.align ALIGNARG(4)
4: subl $4, %esp
+ cfi_adjust_cfa_offset (4)
fstps (%esp)
shrl $6, %edx
fstp %st(0)
andl $8, %edx
movl MOX(huge_nan_null_null,%edx,1), %eax
popl %edx
+ cfi_adjust_cfa_offset (-4)
ret
/* The real part is +-Inf, the imaginary is also is not finite. */
/* ix87 specific implementation of complex exponential function for double.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
fnstsw
fldt 20(%esp) /* y : x */
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
movb %ah, %dh
andb $0x45, %ah
/* ix87 specific implementation of exp(x)-1.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2005 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>.
cmpb $0x40, %ch
je 3f // If +-0, jump.
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpb $0x05, %ch
je 2f // If +-Inf, jump.
/* ix87 specific implementation of exp(x)-1.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2005 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>.
cmpb $0x40, %ch
je 3f // If +-0, jump.
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpb $0x05, %ch
je 2f // If +-Inf, jump.
/* ix87 specific implementation of exp(x)-1.
- Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2002, 2005 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>.
cmpb $0x40, %ch
je 3f // If +-0, jump.
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpb $0x05, %ch
je 2f // If +-Inf, jump.
/* ix87 specific frexp implementation for double.
- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2000, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
fldl VAL0(%esp)
#ifdef PIC
- call 3f
-3: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %edx
+ LOAD_PIC_REG (dx)
#endif
fmull MO(two54)
movl $-54, %ecx
/* ix87 specific frexp implementation for float.
- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2000, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
flds VAL(%esp)
#ifdef PIC
- call 3f
-3: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %edx
+ LOAD_PIC_REG (dx)
#endif
fmuls MO(two25)
movl $-25, %ecx
/* ix87 specific frexp implementation for long double.
- Copyright (C) 1997, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2000, 2001, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
fldt VAL0(%esp)
#ifdef PIC
- call 3f
-3: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %edx
+ LOAD_PIC_REG (dx)
#endif
fmull MO(two64) /* It's not necessary to use a 80bit factor */
fxtract
pushl %eax
+ cfi_adjust_cfa_offset (4)
fstp %st
fistpl (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
fxtract
pushl %eax
+ cfi_adjust_cfa_offset (4)
fstp %st
fistpl (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
fxtract
pushl %eax
+ cfi_adjust_cfa_offset (4)
fstp %st
fistpl (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
ENTRY(__llrint)
fldl 4(%esp)
subl $8, %esp
+ cfi_adjust_cfa_offset (8)
fistpll (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
ret
END(__llrint)
weak_alias (__llrint, llrint)
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
ENTRY(__llrintf)
flds 4(%esp)
subl $8, %esp
+ cfi_adjust_cfa_offset (8)
fistpll (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
ret
END(__llrintf)
weak_alias (__llrintf, llrintf)
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
ENTRY(__llrintl)
fldt 4(%esp)
subl $8, %esp
+ cfi_adjust_cfa_offset (8)
fistpll (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
ret
END(__llrintl)
weak_alias (__llrintl, llrintl)
fldl 4(%esp)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fxam
flds 4(%esp)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fxam
fldt 4(%esp)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fxam
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
ENTRY(__lrint)
fldl 4(%esp)
subl $4, %esp
+ cfi_adjust_cfa_offset (4)
fistpl (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
END(__lrint)
weak_alias (__lrint, lrint)
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
ENTRY(__lrintf)
flds 4(%esp)
subl $4, %esp
+ cfi_adjust_cfa_offset (4)
fistpl (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
END(__lrintf)
weak_alias (__lrintf, lrintf)
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
ENTRY(__lrintl)
fldt 4(%esp)
subl $4, %esp
+ cfi_adjust_cfa_offset (4)
fistpl (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
END(__lrintl)
weak_alias (__lrintl, lrintl)
ENTRY(__nearbyint)
fldl 4(%esp)
pushl %eax
+ cfi_adjust_cfa_offset (4)
pushl %ecx
+ cfi_adjust_cfa_offset (4)
fnstcw (%esp)
movl (%esp), %eax
orl $0x20, %eax
fclex
fldcw (%esp)
popl %ecx
+ cfi_adjust_cfa_offset (-4)
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
END (__nearbyint)
weak_alias (__nearbyint, nearbyint)
ENTRY(__nearbyintf)
flds 4(%esp)
pushl %eax
+ cfi_adjust_cfa_offset (4)
pushl %ecx
+ cfi_adjust_cfa_offset (4)
fnstcw (%esp)
movl (%esp), %eax
orl $0x20, %eax
fclex
fldcw (%esp)
popl %ecx
+ cfi_adjust_cfa_offset (-4)
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
END (__nearbyintf)
weak_alias (__nearbyintf, nearbyintf)
ENTRY(__nearbyintl)
fldt 4(%esp)
pushl %eax
+ cfi_adjust_cfa_offset (4)
pushl %ecx
+ cfi_adjust_cfa_offset (4)
fnstcw (%esp)
movl (%esp), %eax
orl $0x20, %eax
fclex
fldcw (%esp)
popl %ecx
+ cfi_adjust_cfa_offset (-4)
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
END (__nearbyintl)
weak_alias (__nearbyintl, nearbyintl)
ENTRY (BP_SYM (__mpn_addmul_1))
ENTER
- pushl %edi
+ pushl %res_ptr
cfi_adjust_cfa_offset (4)
- pushl %esi
+ pushl %s1_ptr
cfi_adjust_cfa_offset (4)
pushl %ebp
cfi_adjust_cfa_offset (4)
- pushl %ebx
+ pushl %s2_limb
cfi_adjust_cfa_offset (4)
movl RES(%esp), %res_ptr
adcl $0, %ebp
movl %ebp, %eax
- popl %ebx
+ popl %s2_limb
cfi_adjust_cfa_offset (-4)
- cfi_restore (ebx)
+ cfi_restore (s2_limb)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
- popl %esi
+ popl %s1_ptr
cfi_adjust_cfa_offset (-4)
- cfi_restore (esi)
- popl %edi
+ cfi_restore (s1_ptr)
+ popl %res_ptr
cfi_adjust_cfa_offset (-4)
- cfi_restore (edi)
+ cfi_restore (res_ptr)
LEAVE
ret
movl DEST(%esp), %edi
cfi_rel_offset (edi, 4)
movl SRC(%esp), %esi
- cfi_rel_offset (esi, 4)
+ cfi_rel_offset (esi, 0)
movl LEN(%esp), %ecx
CHECK_BOUNDS_BOTH_WIDE (%edi, DEST(%esp), %ecx)
CHECK_BOUNDS_BOTH_WIDE (%esi, SRC(%esp), %ecx)
ENTRY (BP_SYM (__mpn_mul_1))
ENTER
- pushl %edi
+ pushl %res_ptr
cfi_adjust_cfa_offset (4)
- pushl %esi
+ pushl %s1_ptr
cfi_adjust_cfa_offset (4)
pushl %ebp
cfi_adjust_cfa_offset (4)
- pushl %ebx
+ pushl %s2_limb
cfi_adjust_cfa_offset (4)
movl RES(%esp), %res_ptr
adcl $0, %ebp
movl %ebp, %eax
- popl %ebx
+ popl %s2_limb
cfi_adjust_cfa_offset (-4)
- cfi_restore (ebx)
+ cfi_restore (s2_limb)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
- popl %esi
+ popl %s1_ptr
cfi_adjust_cfa_offset (-4)
- cfi_restore (esi)
- popl %edi
+ cfi_restore (s1_ptr)
+ popl %res_ptr
cfi_adjust_cfa_offset (-4)
- cfi_restore (edi)
+ cfi_restore (res_ptr)
LEAVE
ret
cfi_rel_offset (edi, 12)
cfi_rel_offset (esi, 8)
cfi_rel_offset (ebp, 4)
- cfi_rel_offset (ebx, 3)
+ cfi_rel_offset (ebx, 0)
L(special):
leal -4(%edi,%ebx,4),%edi
leal -4(%esi,%ebx,4),%esi
CHECK_BOUNDS_BOTH_WIDE (%ebx, S2(%esp), %ecx)
shrl $2, %ecx
#endif
- cfi_rel_offset (ebp, 4)
movl (%ebx),%ebp
+ cfi_rel_offset (ebp, 4)
decl %ecx
movl %ecx,%edx
ENTRY (BP_SYM (__mpn_submul_1))
ENTER
- pushl %edi
+ pushl %res_ptr
cfi_adjust_cfa_offset (4)
- pushl %esi
+ pushl %s1_ptr
cfi_adjust_cfa_offset (4)
pushl %ebp
cfi_adjust_cfa_offset (4)
- pushl %ebx
+ pushl %s2_limb
cfi_adjust_cfa_offset (4)
movl RES(%esp), %res_ptr
adcl $0, %ebp
movl %ebp, %eax
- popl %ebx
+ popl %s2_limb
cfi_adjust_cfa_offset (-4)
- cfi_restore (ebx)
+ cfi_restore (s2_limb)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
- popl %esi
+ popl %s1_ptr
cfi_adjust_cfa_offset (-4)
- cfi_restore (esi)
- popl %edi
+ cfi_restore (s1_ptr)
+ popl %res_ptr
cfi_adjust_cfa_offset (-4)
- cfi_restore (edi)
+ cfi_restore (res_ptr)
LEAVE
ret
#define ENTRANCE pushl %ebx; cfi_adjust_cfa_offset (4); \
cfi_rel_offset (ebx, 0); ENTER
#define RETURN popl %ebx; cfi_adjust_cfa_offset (-4); \
- cfi_restore (ebx); LEAVE; ret
+ cfi_restore (ebx); LEAVE; ret; \
+ cfi_adjust_cfa_offset (4); cfi_rel_offset (ebx, 0);
/* Load an entry in a jump table into EBX. TABLE is a jump table
with relative offsets. INDEX is a register contains the index
sbbl $-1, %eax
RETURN
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
L(not_1):
jl L(bye) /* LEN == 0 */
xorl %eax, %eax
RETURN
- cfi_adjust_cfa_offset (4)
+ cfi_adjust_cfa_offset (8)
cfi_rel_offset (esi, 0)
+ cfi_rel_offset (ebx, 4)
L(29bytes):
movl -29(%esi), %eax
movl -29(%edx), %ecx
xorl %eax, %eax
RETURN
- cfi_adjust_cfa_offset (4)
+ cfi_adjust_cfa_offset (8)
cfi_rel_offset (esi, 0)
+ cfi_rel_offset (ebx, 4)
L(30bytes):
movl -30(%esi), %eax
movl -30(%edx), %ecx
xorl %eax, %eax
RETURN
- cfi_adjust_cfa_offset (4)
+ cfi_adjust_cfa_offset (8)
cfi_rel_offset (esi, 0)
+ cfi_rel_offset (ebx, 4)
L(31bytes):
movl -31(%esi), %eax
movl -31(%edx), %ecx
xorl %eax, %eax
RETURN
- cfi_adjust_cfa_offset (4)
+ cfi_adjust_cfa_offset (8)
cfi_rel_offset (esi, 0)
+ cfi_rel_offset (ebx, 4)
ALIGN (4)
/* ECX >= 32. */
L(32bytesormore):
LEAVE
RET_PTR
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (edi, 0)
+ cfi_register (esi, edx)
+
/* Backward copying. */
3: std
leal -1(%edi, %ecx), %edi
ENTRY (BP_SYM (__mpn_mul_1))
ENTER
- pushl %edi
+ pushl %res_ptr
cfi_adjust_cfa_offset (4)
- pushl %esi
+ pushl %s1_ptr
cfi_adjust_cfa_offset (4)
pushl %ebp
cfi_adjust_cfa_offset (4)
- pushl %ebx
+ pushl %s2_limb
cfi_adjust_cfa_offset (4)
movl RES(%esp), %res_ptr
jnz L(oop)
movl %ebp, %eax
- popl %ebx
+ popl %s2_limb
cfi_adjust_cfa_offset (-4)
- cfi_restore (ebx)
+ cfi_restore (s2_limb)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
- popl %esi
+ popl %s1_ptr
cfi_adjust_cfa_offset (-4)
- cfi_restore (esi)
- popl %edi
+ cfi_restore (s1_ptr)
+ popl %res_ptr
cfi_adjust_cfa_offset (-4)
- cfi_restore (edi)
+ cfi_restore (res_ptr)
LEAVE
ret
cfi_adjust_cfa_offset (4)
call L(here)
cfi_adjust_cfa_offset (4)
- cfi_rel_offset (ebx, 4)
+ cfi_rel_offset (ebx, 0)
L(here):
popl %ebx
cfi_adjust_cfa_offset (-4)
/* Calculate start address in loop for PIC. Due to limitations in some
assemblers, Loop-L0-3 cannot be put into the leal */
call L(0)
+ cfi_adjust_cfa_offset (4)
L(0): leal (%eax,%eax,8),%eax
addl (%esp),%eax
addl $(L(oop)-L(0)-3),%eax
addl $4,%esp
+ cfi_adjust_cfa_offset (-4)
#else
/* Calculate start address in loop for non-PIC. */
leal (L(oop) - 3)(%eax,%eax,8),%eax
cfi_adjust_cfa_offset (4)
pushl %ebx
cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (edi, 12)
+ cfi_rel_offset (esi, 8)
+ cfi_rel_offset (ebp, 4)
+ cfi_rel_offset (ebx, 0)
movl RES(%esp), %res_ptr
- cfi_rel_offset (res_ptr, 12)
movl S1(%esp), %s1_ptr
- cfi_rel_offset (s1_ptr, 8)
movl SIZE(%esp), %sizeP
movl S2LIMB(%esp), %s2_limb
- cfi_rel_offset (s2_limb, 0)
#if __BOUNDED_POINTERS__
shll $2, %sizeP /* convert limbs to bytes */
CHECK_BOUNDS_BOTH_WIDE (%res_ptr, RES(%esp), %sizeP)
leal (%s1_ptr,%sizeP,4), %s1_ptr
negl %sizeP
xorl %ebp, %ebp
- cfi_rel_offset (ebp, 4)
ALIGN (3)
L(oop):
movl (%s1_ptr,%sizeP,4), %eax
cfi_adjust_cfa_offset (4)
pushl %edi
cfi_adjust_cfa_offset (4)
+
movl TLS+12(%esp),%esi
cfi_rel_offset (esi, 4)
movl PTID+12(%esp),%edx
movl %ebx, (%ecx)
#endif
+ /* End FDE now, because in the child the unwind info will be
+ wrong. */
+ cfi_endproc
+
int $0x80
popl %edi
- cfi_adjust_cfa_offset (-4)
- cfi_restore (edi)
popl %esi
- cfi_adjust_cfa_offset (-4)
- cfi_restore (esi)
popl %ebx
- cfi_adjust_cfa_offset (-4)
- cfi_restore (ebx)
test %eax,%eax
jl SYSCALL_ERROR_LABEL
call *%ebx
#ifdef PIC
call L(here)
- cfi_adjust_cfa_offset (4)
L(here):
popl %ebx
- cfi_adjust_cfa_offset (-4)
addl $_GLOBAL_OFFSET_TABLE_+[.-L(here)], %ebx
#endif
movl %eax, %ebx
.previous
#endif
+ cfi_startproc
PSEUDO_END (BP_SYM (__clone))
weak_alias (BP_SYM (__clone), BP_SYM (clone))
/* Save current context.
- Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
/* Save the current signal mask. */
pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
leal oSIGMASK(%eax), %edx
xorl %ecx, %ecx
movl $SIG_BLOCK, %ebx
movl $__NR_sigprocmask, %eax
ENTER_KERNEL
popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
cmpl $-4095, %eax /* Check %eax for error. */
jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
/* Create new context.
- Copyright (C) 2001,02 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
below). */
#ifdef PIC
call 1f
+ cfi_adjust_cfa_offset (4)
1: popl %ecx
+ cfi_adjust_cfa_offset (-4)
addl $L(exitcode)-1b, %ecx
movl %ecx, (%edx)
#else
the context 'makecontext' manipulated at the time of the
'makecontext' call. If the pointer is NULL the process must
terminate. */
+ cfi_endproc
L(exitcode):
/* This removes the parameters passed to the function given to
'makecontext' from the stack. EBX contains the number of
/* The 'exit' call should never return. In case it does cause
the process to terminate. */
hlt
+ cfi_startproc
END(__makecontext)
weak_alias(__makecontext, makecontext)
ENTRY (__mmap)
-/* I don't think it is worthwhile trzing to use mmap2 whenever it
+/* I don't think it is worthwhile trying to use mmap2 whenever it
is available. Only use it when we are sure the syscall exists. */
#ifdef __ASSUME_MMAP2_SYSCALL
/* Save registers. */
movl %ebx, %edx
+ cfi_register (ebx, edx)
movl $SYS_ify(mmap), %eax /* System call number in %eax. */
/* Restore registers. */
movl %edx, %ebx
+ cfi_restore (ebx)
#endif
3:
/* Save registers. */
movl %ebx, %edx
+ cfi_register (ebx, edx)
cmpl $0, OFFHI-SVRSP(%esp)
jne L(einval2)
/* Restore registers. */
movl %edx, %ebx
+ cfi_restore (ebx)
/* If 0 > %eax > -4096 there was an error. */
cmpl $-4096, %eax
#endif
ret
+ cfi_register (ebx, edx)
L(einval2):
movl %edx, %ebx
+ cfi_restore (ebx)
movl $-EINVAL, %eax
jmp SYSCALL_ERROR_LABEL
#endif
movl oEIP(%eax), %ecx
/* Load the new stack pointer. */
+ cfi_def_cfa (eax, 0)
+ cfi_offset (edi, oEDI)
+ cfi_offset (esi, oESI)
+ cfi_offset (ebp, oEBP)
+ cfi_offset (ebx, oEBX)
+ cfi_offset (edx, oEDX)
+ cfi_offset (ecx, oECX)
movl oESP(%eax), %esp
/* Push the return address on the new stack so we can return there. */
movl oECX(%eax), %ecx
movl oEAX(%eax), %eax
+ /* End FDE here, we fall into another context. */
+ cfi_endproc
+ cfi_startproc
+
/* The following 'ret' will pop the address of the code and jump
to it. */
.previous
# else
# define SETUP_PIC_REG(reg) \
+ .ifndef __i686.get_pc_thunk.reg; \
.section .gnu.linkonce.t.__i686.get_pc_thunk.reg,"ax",@progbits; \
.globl __i686.get_pc_thunk.reg; \
.hidden __i686.get_pc_thunk.reg; \
ret; \
.size __i686.get_pc_thunk.reg, . - __i686.get_pc_thunk.reg; \
.previous; \
+ .endif; \
call __i686.get_pc_thunk.reg
# endif
+# define LOAD_PIC_REG(reg) \
+ SETUP_PIC_REG(reg); addl $_GLOBAL_OFFSET_TABLE_, %e##reg
+
# if RTLD_PRIVATE_ERRNO
# define SYSCALL_ERROR_HANDLER \
0:SETUP_PIC_REG(cx); \
-/* Copyright (C) 1999, 2002, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2002, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Schwab <schwab@gnu.org>.
/* Pop the return PC value into ECX. */
popl %ecx
+ cfi_adjust_cfa_offset (-4)
#ifdef SAVE_PID
SAVE_PID
disturbs the branch target cache. Instead push the return
address back on the stack. */
pushl %ecx
+ cfi_adjust_cfa_offset (4)
#ifdef RESTORE_PID
RESTORE_PID