* 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.
This commit is contained in:
Ulrich Drepper 2005-05-04 17:58:13 +00:00
parent 1ad9da69c6
commit fee732e531
78 changed files with 417 additions and 252 deletions

View File

@ -1,3 +1,91 @@
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> 2005-05-03 Ulrich Drepper <drepper@redhat.com>
* sysdeps/i386/add_n.S: Add call frame information. * sysdeps/i386/add_n.S: Add call frame information.

View File

@ -87,9 +87,9 @@ $(objpfx)tst-codeset.out: tst-codeset.sh $(objpfx)tst-codeset
$(objpfx)tst-gettext3.out: tst-gettext3.sh $(objpfx)tst-gettext3 $(objpfx)tst-gettext3.out: tst-gettext3.sh $(objpfx)tst-gettext3
$(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/ $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/
$(objpfx)tst-gettext4.out: tst-gettext4.sh $(objpfx)tst-gettext4 $(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 $(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
endif endif

View File

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Test of gettext functions. # 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. # This file is part of the GNU C Library.
# #
@ -26,7 +26,7 @@ LC_ALL=C
export LC_ALL export LC_ALL
# Generate the test data. # Generate the test data.
test -d ${objpfx}domaindir || mkdir ${objpfx}domaindir mkdir -p ${objpfx}domaindir
# Create the locale directories. # Create the locale directories.
test -d ${objpfx}domaindir/lang1 || { test -d ${objpfx}domaindir/lang1 || {
mkdir ${objpfx}domaindir/lang1 mkdir ${objpfx}domaindir/lang1

View File

@ -21,18 +21,15 @@
# 02111-1307 USA. # 02111-1307 USA.
common_objpfx=$1 common_objpfx=$1
objpfx=$2 run_program_prefix=$2
objpfx=$3
LC_ALL=C LC_ALL=C
export LC_ALL export LC_ALL
# Generate the test data.
test -d ${objpfx}domaindir || mkdir ${objpfx}domaindir
# Create the domain directories. # Create the domain directories.
test -d ${objpfx}domaindir/de_DE || mkdir ${objpfx}domaindir/de_DE mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES
test -d ${objpfx}domaindir/de_DE/LC_MESSAGES || mkdir ${objpfx}domaindir/de_DE/LC_MESSAGES mkdir -p ${objpfx}domaindir/fr_FR/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
# Populate them. # Populate them.
msgfmt -o ${objpfx}domaindir/de_DE/LC_MESSAGES/multithread.mo tst-gettext4-de.po 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 msgfmt -o ${objpfx}domaindir/fr_FR/LC_MESSAGES/multithread.mo tst-gettext4-fr.po
@ -42,7 +39,6 @@ export GCONV_PATH
LOCPATH=${common_objpfx}localedata LOCPATH=${common_objpfx}localedata
export LOCPATH export LOCPATH
${common_objpfx}elf/ld.so --library-path $common_objpfx \ ${run_program_prefix} ${objpfx}tst-gettext4 > ${objpfx}tst-gettext4.out
${objpfx}tst-gettext4 > ${objpfx}tst-gettext4.out
exit $? exit $?

View File

@ -22,16 +22,14 @@
# 02111-1307 USA. # 02111-1307 USA.
common_objpfx=$1 common_objpfx=$1
objpfx=$2 run_program_prefix=$2
objpfx=$3
LC_ALL=C LC_ALL=C
export LC_ALL export LC_ALL
# Generate the test data.
test -d ${objpfx}domaindir || mkdir ${objpfx}domaindir
# Create the domain directories. # Create the domain directories.
test -d ${objpfx}domaindir/de_DE || mkdir ${objpfx}domaindir/de_DE mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES
test -d ${objpfx}domaindir/de_DE/LC_MESSAGES || mkdir ${objpfx}domaindir/de_DE/LC_MESSAGES
# Populate them. # Populate them.
msgfmt -o ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo tstcodeset.po msgfmt -o ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo tstcodeset.po
@ -40,7 +38,6 @@ export GCONV_PATH
LOCPATH=${common_objpfx}localedata LOCPATH=${common_objpfx}localedata
export LOCPATH export LOCPATH
${common_objpfx}elf/ld.so --library-path $common_objpfx \ ${run_program_prefix} ${objpfx}tst-gettext5 > ${objpfx}tst-gettext5.out
${objpfx}tst-gettext5 > ${objpfx}tst-gettext5.out
exit $? exit $?

View File

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Test of transliteration in gettext functions. # 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. # This file is part of the GNU C Library.
# #
@ -25,6 +25,9 @@ objpfx=$2
LC_ALL=C LC_ALL=C
export LC_ALL 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 \ msgfmt -o ${objpfx}domaindir/existing-locale/LC_MESSAGES/translit.mo \
translit.po translit.po

View File

@ -38,13 +38,13 @@
ENTRY (BP_SYM (__mpn_addmul_1)) ENTRY (BP_SYM (__mpn_addmul_1))
ENTER ENTER
pushl %edi pushl %res_ptr
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %esi pushl %s1_ptr
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %ebp pushl %ebp
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %ebx pushl %s2_limb
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
movl RES(%esp), %res_ptr movl RES(%esp), %res_ptr
@ -79,18 +79,18 @@ L(oop):
jnz L(oop) jnz L(oop)
movl %ebp, %eax movl %ebp, %eax
popl %ebx popl %s2_limb
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (ebx) cfi_restore (s2_limb)
popl %ebp popl %ebp
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (ebp) cfi_restore (ebp)
popl %esi popl %s1_ptr
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (esi) cfi_restore (s1_ptr)
popl %edi popl %res_ptr
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (edi) cfi_restore (res_ptr)
LEAVE LEAVE
ret ret

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -50,9 +50,7 @@ ENTRY(__ieee754_acosh)
cmpl $0x41b00000, %ecx cmpl $0x41b00000, %ecx
ja 3f // x > 2^28 ja 3f // x > 2^28
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
cmpl $0x40000000, %ecx cmpl $0x40000000, %ecx
ja 4f // x > 2 ja 4f // x > 2

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -50,9 +50,7 @@ ENTRY(__ieee754_acoshf)
cmpl $0x47000000, %ecx cmpl $0x47000000, %ecx
ja 3f // x > 2^14 ja 3f // x > 2^14
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
cmpl $0x40000000, %ecx cmpl $0x40000000, %ecx
ja 4f // x > 2 ja 4f // x > 2

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -57,9 +57,7 @@ ENTRY(__ieee754_acoshl)
cmpl $0x4020, %ecx cmpl $0x4020, %ecx
ja 3f // x > 2^34 ja 3f // x > 2^34
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
cmpl $0x4000, %ecx cmpl $0x4000, %ecx
ja 4f // x > 2 ja 4f // x > 2

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of arctanh function. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -58,7 +58,9 @@ ENTRY(__ieee754_atanh)
#ifdef PIC #ifdef PIC
call 1f call 1f
cfi_adjust_cfa_offset (4)
1: popl %edx 1: popl %edx
cfi_adjust_cfa_offset (-4)
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of arctanh function. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -57,9 +57,7 @@ ENTRY(__ieee754_atanhf)
ja 5f ja 5f
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
andl $0x80000000, %ecx // ECX == 0 iff X >= 0 andl $0x80000000, %ecx // ECX == 0 iff X >= 0

View File

@ -64,9 +64,7 @@ ENTRY(__ieee754_atanhl)
7: 7:
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
andl $0x8000, %ecx // ECX == 0 iff X >= 0 andl $0x8000, %ecx // ECX == 0 iff X >= 0

View File

@ -37,9 +37,7 @@ ENTRY(__ieee754_log)
fldln2 // log(2) fldln2 // log(2)
fldl 4(%esp) // x : log(2) fldl 4(%esp) // x : log(2)
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
fld %st // x : x : log(2) fld %st // x : x : log(2)
fsubl MO(one) // x-1 : x : log(2) fsubl MO(one) // x-1 : x : log(2)

View File

@ -37,9 +37,7 @@ ENTRY(__ieee754_log10)
fldlg2 // log10(2) fldlg2 // log10(2)
fldl 4(%esp) // x : log10(2) fldl 4(%esp) // x : log10(2)
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
fxam fxam
fnstsw fnstsw

View File

@ -38,9 +38,7 @@ ENTRY(__ieee754_log10f)
fldlg2 // log10(2) fldlg2 // log10(2)
flds 4(%esp) // x : log10(2) flds 4(%esp) // x : log10(2)
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
fxam fxam
fnstsw fnstsw

View File

@ -39,9 +39,7 @@ ENTRY(__ieee754_log10l)
fldlg2 // log10(2) fldlg2 // log10(2)
fldt 4(%esp) // x : log10(2) fldt 4(%esp) // x : log10(2)
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
fxam fxam
fnstsw fnstsw

View File

@ -34,9 +34,7 @@ limit: .double 0.29
.text .text
ENTRY(__ieee754_log2) ENTRY(__ieee754_log2)
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
fldl MO(one) fldl MO(one)
fldl 4(%esp) // x : 1 fldl 4(%esp) // x : 1

View File

@ -34,9 +34,7 @@ limit: .double 0.29
.text .text
ENTRY(__ieee754_log2f) ENTRY(__ieee754_log2f)
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
fldl MO(one) fldl MO(one)
flds 4(%esp) // x : 1 flds 4(%esp) // x : 1

View File

@ -34,9 +34,7 @@ limit: .double 0.29
.text .text
ENTRY(__ieee754_log2l) ENTRY(__ieee754_log2l)
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
fldl MO(one) fldl MO(one)
fldt 4(%esp) // x : 1 fldt 4(%esp) // x : 1

View File

@ -38,9 +38,7 @@ ENTRY(__ieee754_logf)
fldln2 // log(2) fldln2 // log(2)
flds 4(%esp) // x : log(2) flds 4(%esp) // x : log(2)
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
fld %st // x : x : log(2) fld %st // x : x : log(2)
fsubl MO(one) // x-1 : x : log(2) fsubl MO(one) // x-1 : x : log(2)

View File

@ -38,9 +38,7 @@ ENTRY(__ieee754_logl)
fldln2 // log(2) fldln2 // log(2)
fldt 4(%esp) // x : log(2) fldt 4(%esp) // x : log(2)
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
fld %st // x : x : log(2) fld %st // x : x : log(2)
fsubl MO(one) // x-1 : x : log(2) fsubl MO(one) // x-1 : x : log(2)

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of pow function. /* 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. Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -67,9 +67,7 @@ ENTRY(__ieee754_pow)
fxam fxam
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (cx)
1: popl %ecx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
#endif #endif
fnstsw fnstsw
@ -87,6 +85,7 @@ ENTRY(__ieee754_pow)
fldl 4(%esp) // x : y fldl 4(%esp) // x : y
subl $8,%esp subl $8,%esp
cfi_adjust_cfa_offset (8)
fxam fxam
fnstsw fnstsw
@ -120,7 +119,9 @@ ENTRY(__ieee754_pow)
/* OK, we have an integer value for y. */ /* OK, we have an integer value for y. */
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
orl $0, %edx orl $0, %edx
fstp %st(0) // x fstp %st(0) // x
jns 4f // y >= 0, jump jns 4f // y >= 0, jump
@ -155,6 +156,7 @@ ENTRY(__ieee754_pow)
31: fstp %st(1) 31: fstp %st(1)
ret ret
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4) .align ALIGNARG(4)
2: /* y is a real number. */ 2: /* y is a real number. */
fxch // x : y fxch // x : y
@ -181,6 +183,7 @@ ENTRY(__ieee754_pow)
faddl MO(one) // 2^fract(y*log2(x)) : int(y*log2(x)) 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)) fscale // 2^fract(y*log2(x))*2^int(y*log2(x)) : int(y*log2(x))
addl $8, %esp addl $8, %esp
cfi_adjust_cfa_offset (-8)
fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x)) fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x))
ret ret
@ -219,6 +222,7 @@ ENTRY(__ieee754_pow)
13: fldl 4(%esp) // load x == NaN 13: fldl 4(%esp) // load x == NaN
ret ret
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4) .align ALIGNARG(4)
// x is ±inf // x is ±inf
15: fstp %st(0) // y 15: fstp %st(0) // y
@ -237,7 +241,9 @@ ENTRY(__ieee754_pow)
// OK, the value is an integer, but is the number of bits small // OK, the value is an integer, but is the number of bits small
// enough so that all are coming from the mantissa? // enough so that all are coming from the mantissa?
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
andb $1, %al andb $1, %al
jz 18f // jump if not odd jz 18f // jump if not odd
movl %edx, %eax movl %edx, %eax
@ -251,22 +257,27 @@ ENTRY(__ieee754_pow)
fldl MOX(minf_mzero, %edx, 8) fldl MOX(minf_mzero, %edx, 8)
ret ret
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4) .align ALIGNARG(4)
16: fcompl MO(zero) 16: fcompl MO(zero)
addl $8, %esp addl $8, %esp
cfi_adjust_cfa_offset (-8)
fnstsw fnstsw
shrl $5, %eax shrl $5, %eax
andl $8, %eax andl $8, %eax
fldl MOX(inf_zero, %eax, 1) fldl MOX(inf_zero, %eax, 1)
ret ret
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4) .align ALIGNARG(4)
17: shll $30, %edx // sign bit for y in right position 17: shll $30, %edx // sign bit for y in right position
addl $8, %esp addl $8, %esp
cfi_adjust_cfa_offset (-8)
18: shrl $31, %edx 18: shrl $31, %edx
fldl MOX(inf_zero, %edx, 8) fldl MOX(inf_zero, %edx, 8)
ret ret
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4) .align ALIGNARG(4)
// x is ±0 // x is ±0
20: fstp %st(0) // y 20: fstp %st(0) // y
@ -288,7 +299,9 @@ ENTRY(__ieee754_pow)
// OK, the value is an integer, but is the number of bits small // OK, the value is an integer, but is the number of bits small
// enough so that all are coming from the mantissa? // enough so that all are coming from the mantissa?
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
andb $1, %al andb $1, %al
jz 27f // jump if not odd jz 27f // jump if not odd
cmpl $0xffe00000, %edx cmpl $0xffe00000, %edx
@ -300,13 +313,16 @@ ENTRY(__ieee754_pow)
fchs fchs
ret ret
cfi_adjust_cfa_offset (8)
25: fstp %st(0) 25: fstp %st(0)
26: addl $8, %esp 26: addl $8, %esp
cfi_adjust_cfa_offset (-8)
27: // Raise divide-by-zero exception and get infinity value. 27: // Raise divide-by-zero exception and get infinity value.
fldl MO(one) fldl MO(one)
fdivl MO(zero) fdivl MO(zero)
ret ret
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4) .align ALIGNARG(4)
// x is ±0 and y is > 0. We must find out whether y is an odd integer. // x is ±0 and y is > 0. We must find out whether y is an odd integer.
21: testb $2, %dh 21: testb $2, %dh
@ -323,7 +339,9 @@ ENTRY(__ieee754_pow)
// OK, the value is an integer, but is the number of bits small // OK, the value is an integer, but is the number of bits small
// enough so that all are coming from the mantissa? // enough so that all are coming from the mantissa?
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
andb $1, %al andb $1, %al
jz 24f // jump if not odd jz 24f // jump if not odd
cmpl $0xffe00000, %edx cmpl $0xffe00000, %edx
@ -332,8 +350,10 @@ ENTRY(__ieee754_pow)
fldl MO(mzero) fldl MO(mzero)
ret ret
cfi_adjust_cfa_offset (8)
22: fstp %st(0) 22: fstp %st(0)
23: addl $8, %esp // Don't use 2 x pop 23: addl $8, %esp // Don't use 2 x pop
cfi_adjust_cfa_offset (-8)
24: fldl MO(zero) 24: fldl MO(zero)
ret ret

View File

@ -1,5 +1,6 @@
/* ix87 specific implementation of pow function. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -66,9 +67,7 @@ ENTRY(__ieee754_powf)
fxam fxam
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (cx)
1: popl %ecx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
#endif #endif
fnstsw fnstsw
@ -86,6 +85,7 @@ ENTRY(__ieee754_powf)
flds 4(%esp) // x : y flds 4(%esp) // x : y
subl $4, %esp subl $4, %esp
cfi_adjust_cfa_offset (4)
fxam fxam
fnstsw fnstsw
@ -119,6 +119,7 @@ ENTRY(__ieee754_powf)
/* OK, we have an integer value for y. */ /* OK, we have an integer value for y. */
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
orl $0, %edx orl $0, %edx
fstp %st(0) // x fstp %st(0) // x
jns 4f // y >= 0, jump jns 4f // y >= 0, jump
@ -149,6 +150,7 @@ ENTRY(__ieee754_powf)
31: fstp %st(1) 31: fstp %st(1)
ret ret
cfi_adjust_cfa_offset (4)
.align ALIGNARG(4) .align ALIGNARG(4)
2: /* y is a real number. */ 2: /* y is a real number. */
fxch // x : y fxch // x : y
@ -175,6 +177,7 @@ ENTRY(__ieee754_powf)
faddl MO(one) // 2^fract(y*log2(x)) : int(y*log2(x)) 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)) fscale // 2^fract(y*log2(x))*2^int(y*log2(x)) : int(y*log2(x))
addl $4, %esp addl $4, %esp
cfi_adjust_cfa_offset (-4)
fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x)) fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x))
ret ret
@ -213,6 +216,7 @@ ENTRY(__ieee754_powf)
13: flds 4(%esp) // load x == NaN 13: flds 4(%esp) // load x == NaN
ret ret
cfi_adjust_cfa_offset (4)
.align ALIGNARG(4) .align ALIGNARG(4)
// x is ±inf // x is ±inf
15: fstp %st(0) // y 15: fstp %st(0) // y
@ -231,6 +235,7 @@ ENTRY(__ieee754_powf)
// OK, the value is an integer, but is the number of bits small // OK, the value is an integer, but is the number of bits small
// enough so that all are coming from the mantissa? // enough so that all are coming from the mantissa?
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
testb $1, %dl testb $1, %dl
jz 18f // jump if not odd jz 18f // jump if not odd
movl %edx, %eax movl %edx, %eax
@ -244,22 +249,27 @@ ENTRY(__ieee754_powf)
fldl MOX(minf_mzero, %edx, 8) fldl MOX(minf_mzero, %edx, 8)
ret ret
cfi_adjust_cfa_offset (4)
.align ALIGNARG(4) .align ALIGNARG(4)
16: fcompl MO(zero) 16: fcompl MO(zero)
addl $4, %esp addl $4, %esp
cfi_adjust_cfa_offset (-4)
fnstsw fnstsw
shrl $5, %eax shrl $5, %eax
andl $8, %eax andl $8, %eax
fldl MOX(inf_zero, %eax, 1) fldl MOX(inf_zero, %eax, 1)
ret ret
cfi_adjust_cfa_offset (4)
.align ALIGNARG(4) .align ALIGNARG(4)
17: shll $30, %edx // sign bit for y in right position 17: shll $30, %edx // sign bit for y in right position
addl $4, %esp addl $4, %esp
cfi_adjust_cfa_offset (-4)
18: shrl $31, %edx 18: shrl $31, %edx
fldl MOX(inf_zero, %edx, 8) fldl MOX(inf_zero, %edx, 8)
ret ret
cfi_adjust_cfa_offset (4)
.align ALIGNARG(4) .align ALIGNARG(4)
// x is ±0 // x is ±0
20: fstp %st(0) // y 20: fstp %st(0) // y
@ -281,6 +291,7 @@ ENTRY(__ieee754_powf)
// OK, the value is an integer, but is the number of bits small // OK, the value is an integer, but is the number of bits small
// enough so that all are coming from the mantissa? // enough so that all are coming from the mantissa?
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
testb $1, %dl testb $1, %dl
jz 27f // jump if not odd jz 27f // jump if not odd
cmpl $0xff000000, %edx cmpl $0xff000000, %edx
@ -292,13 +303,16 @@ ENTRY(__ieee754_powf)
fchs fchs
ret ret
cfi_adjust_cfa_offset (4)
25: fstp %st(0) 25: fstp %st(0)
26: addl $4, %esp 26: addl $4, %esp
cfi_adjust_cfa_offset (-4)
27: // Raise divide-by-zero exception and get infinity value. 27: // Raise divide-by-zero exception and get infinity value.
fldl MO(one) fldl MO(one)
fdivl MO(zero) fdivl MO(zero)
ret ret
cfi_adjust_cfa_offset (4)
.align ALIGNARG(4) .align ALIGNARG(4)
// x is ±0 and y is > 0. We must find out whether y is an odd integer. // x is ±0 and y is > 0. We must find out whether y is an odd integer.
21: testb $2, %dh 21: testb $2, %dh
@ -315,6 +329,7 @@ ENTRY(__ieee754_powf)
// OK, the value is an integer, but is the number of bits small // OK, the value is an integer, but is the number of bits small
// enough so that all are coming from the mantissa? // enough so that all are coming from the mantissa?
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
testb $1, %dl testb $1, %dl
jz 24f // jump if not odd jz 24f // jump if not odd
cmpl $0xff000000, %edx cmpl $0xff000000, %edx
@ -323,8 +338,10 @@ ENTRY(__ieee754_powf)
fldl MO(mzero) fldl MO(mzero)
ret ret
cfi_adjust_cfa_offset (4)
22: fstp %st(0) 22: fstp %st(0)
23: addl $4, %esp // Don't use pop. 23: addl $4, %esp // Don't use pop.
cfi_adjust_cfa_offset (-4)
24: fldl MO(zero) 24: fldl MO(zero)
ret ret

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of pow function. /* 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. Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -67,9 +67,7 @@ ENTRY(__ieee754_powl)
fxam fxam
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (cx)
1: popl %ecx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
#endif #endif
fnstsw fnstsw
@ -87,6 +85,7 @@ ENTRY(__ieee754_powl)
fldt 4(%esp) // x : y fldt 4(%esp) // x : y
subl $8,%esp subl $8,%esp
cfi_adjust_cfa_offset (8)
fxam fxam
fnstsw fnstsw
@ -120,7 +119,9 @@ ENTRY(__ieee754_powl)
/* OK, we have an integer value for y. */ /* OK, we have an integer value for y. */
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
orl $0, %edx orl $0, %edx
fstp %st(0) // x fstp %st(0) // x
jns 4f // y >= 0, jump jns 4f // y >= 0, jump
@ -155,6 +156,7 @@ ENTRY(__ieee754_powl)
31: fstp %st(1) 31: fstp %st(1)
ret ret
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4) .align ALIGNARG(4)
2: /* y is a real number. */ 2: /* y is a real number. */
fxch // x : y fxch // x : y
@ -186,13 +188,16 @@ ENTRY(__ieee754_powl)
faddl MO(one) // 2^fract(y*log2(x)) : int(y*log2(x)) 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)) fscale // 2^fract(y*log2(x))*2^int(y*log2(x)) : int(y*log2(x))
addl $8, %esp addl $8, %esp
cfi_adjust_cfa_offset (-8)
fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x)) fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x))
ret ret
cfi_adjust_cfa_offset (8)
28: fstp %st(1) // y*log2(x) 28: fstp %st(1) // y*log2(x)
fldl MO(one) // 1 : y*log2(x) fldl MO(one) // 1 : y*log2(x)
fscale // 2^(y*log2(x)) : y*log2(x) fscale // 2^(y*log2(x)) : y*log2(x)
addl $8, %esp addl $8, %esp
cfi_adjust_cfa_offset (-8)
fstp %st(1) // 2^(y*log2(x)) fstp %st(1) // 2^(y*log2(x))
ret ret
@ -230,6 +235,7 @@ ENTRY(__ieee754_powl)
13: fldt 4(%esp) // load x == NaN 13: fldt 4(%esp) // load x == NaN
ret ret
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4) .align ALIGNARG(4)
// x is ±inf // x is ±inf
15: fstp %st(0) // y 15: fstp %st(0) // y
@ -247,7 +253,9 @@ ENTRY(__ieee754_powl)
// OK, the value is an integer, but is it odd? // OK, the value is an integer, but is it odd?
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
andb $1, %al andb $1, %al
jz 18f // jump if not odd jz 18f // jump if not odd
// It's an odd integer. // It's an odd integer.
@ -255,22 +263,27 @@ ENTRY(__ieee754_powl)
fldl MOX(minf_mzero, %edx, 8) fldl MOX(minf_mzero, %edx, 8)
ret ret
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4) .align ALIGNARG(4)
16: fcompl MO(zero) 16: fcompl MO(zero)
addl $8, %esp addl $8, %esp
cfi_adjust_cfa_offset (-8)
fnstsw fnstsw
shrl $5, %eax shrl $5, %eax
andl $8, %eax andl $8, %eax
fldl MOX(inf_zero, %eax, 1) fldl MOX(inf_zero, %eax, 1)
ret ret
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4) .align ALIGNARG(4)
17: shll $30, %edx // sign bit for y in right position 17: shll $30, %edx // sign bit for y in right position
addl $8, %esp addl $8, %esp
cfi_adjust_cfa_offset (-8)
18: shrl $31, %edx 18: shrl $31, %edx
fldl MOX(inf_zero, %edx, 8) fldl MOX(inf_zero, %edx, 8)
ret ret
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4) .align ALIGNARG(4)
// x is ±0 // x is ±0
20: fstp %st(0) // y 20: fstp %st(0) // y
@ -291,7 +304,9 @@ ENTRY(__ieee754_powl)
// OK, the value is an integer, but is it odd? // OK, the value is an integer, but is it odd?
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
andb $1, %al andb $1, %al
jz 27f // jump if not odd jz 27f // jump if not odd
// It's an odd integer. // It's an odd integer.
@ -301,13 +316,16 @@ ENTRY(__ieee754_powl)
fchs fchs
ret ret
cfi_adjust_cfa_offset (8)
25: fstp %st(0) 25: fstp %st(0)
26: addl $8, %esp 26: addl $8, %esp
cfi_adjust_cfa_offset (-8)
27: // Raise divide-by-zero exception and get infinity value. 27: // Raise divide-by-zero exception and get infinity value.
fldl MO(one) fldl MO(one)
fdivl MO(zero) fdivl MO(zero)
ret ret
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4) .align ALIGNARG(4)
// x is ±0 and y is > 0. We must find out whether y is an odd integer. // x is ±0 and y is > 0. We must find out whether y is an odd integer.
21: testb $2, %dh 21: testb $2, %dh
@ -323,15 +341,19 @@ ENTRY(__ieee754_powl)
// OK, the value is an integer, but is it odd? // OK, the value is an integer, but is it odd?
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
andb $1, %al andb $1, %al
jz 24f // jump if not odd jz 24f // jump if not odd
// It's an odd integer. // It's an odd integer.
fldl MO(mzero) fldl MO(mzero)
ret ret
cfi_adjust_cfa_offset (8)
22: fstp %st(0) 22: fstp %st(0)
23: addl $8, %esp // Don't use 2 x pop 23: addl $8, %esp // Don't use 2 x pop
cfi_adjust_cfa_offset (-8)
24: fldl MO(zero) 24: fldl MO(zero)
ret ret

View File

@ -64,9 +64,7 @@ ENTRY(__ieee754_scalb)
/* y is -inf */ /* y is -inf */
1: fxam 1: fxam
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (cx)
1: popl %ecx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
#endif #endif
fnstsw fnstsw
movl 8(%esp), %edx movl 8(%esp), %edx
@ -86,9 +84,7 @@ ENTRY(__ieee754_scalb)
2: fstp %st 2: fstp %st
fstp %st fstp %st
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (cx)
1: popl %ecx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
#endif #endif
fldl MO(nan) fldl MO(nan)
ret ret

View File

@ -66,9 +66,7 @@ ENTRY(__ieee754_scalbf)
/* y is -inf */ /* y is -inf */
1: fxam 1: fxam
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (cx)
1: popl %ecx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
#endif #endif
fnstsw fnstsw
movl 4(%esp), %edx movl 4(%esp), %edx
@ -88,9 +86,7 @@ ENTRY(__ieee754_scalbf)
2: fstp %st 2: fstp %st
fstp %st fstp %st
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (cx)
1: popl %ecx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
#endif #endif
fldl MO(nan) fldl MO(nan)
ret ret

View File

@ -66,9 +66,7 @@ ENTRY(__ieee754_scalbl)
/* y is -inf */ /* y is -inf */
1: fxam 1: fxam
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (cx)
1: popl %ecx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
#endif #endif
fnstsw fnstsw
movl 12(%esp), %edx movl 12(%esp), %edx
@ -88,9 +86,7 @@ ENTRY(__ieee754_scalbl)
2: fstp %st 2: fstp %st
fstp %st fstp %st
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (cx)
1: popl %ecx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
#endif #endif
fldl MO(nan) fldl MO(nan)
ret ret

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -62,9 +62,7 @@ ENTRY(__asinh)
fxch // |x| : log(2) fxch // |x| : log(2)
ja 3f // |x| > 2^28 ja 3f // |x| > 2^28
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
cmpl $0x40000000, %eax cmpl $0x40000000, %eax
ja 5f // |x| > 2 ja 5f // |x| > 2
@ -100,9 +98,7 @@ ENTRY(__asinh)
.align ALIGNARG(4) .align ALIGNARG(4)
2: 2:
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
jecxz 4f jecxz 4f
fchs // x fchs // x

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -62,9 +62,7 @@ ENTRY(__asinhf)
fxch // |x| : log(2) fxch // |x| : log(2)
ja 3f // |x| > 2^14 ja 3f // |x| > 2^14
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
cmpl $0x40000000, %eax cmpl $0x40000000, %eax
ja 5f // |x| > 2 ja 5f // |x| > 2
@ -100,9 +98,7 @@ ENTRY(__asinhf)
.align ALIGNARG(4) .align ALIGNARG(4)
2: 2:
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
jecxz 4f jecxz 4f
fchs // x fchs // x

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -69,9 +69,7 @@ ENTRY(__asinhl)
fxch // |x| : log(2) fxch // |x| : log(2)
ja 3f // |x| > 2^34 ja 3f // |x| > 2^34
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
cmpl $0x4000, %eax cmpl $0x4000, %eax
ja 5f // |x| > 2 ja 5f // |x| > 2
@ -107,9 +105,7 @@ ENTRY(__asinhl)
.align ALIGNARG(4) .align ALIGNARG(4)
2: 2:
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
jecxz 4f jecxz 4f
fchs // x fchs // x

View File

@ -1,5 +1,5 @@
/* Compute cubic root of double value. /* 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. This file is part of the GNU C Library.
Contributed by Dirk Alboth <dirka@uni-paderborn.de> and Contributed by Dirk Alboth <dirka@uni-paderborn.de> and
Ulrich Drepper <drepper@cygnus.com>, 1997. Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -89,9 +89,9 @@ ENTRY(__cbrt)
#ifdef PIC #ifdef PIC
pushl %ebx pushl %ebx
call 3f cfi_adjust_cfa_offset (4)
3: popl %ebx cfi_rel_offset (ebx, 0)
addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %ebx LOAD_PIC_REG (bx)
#endif #endif
cmpl $0x00100000, %eax cmpl $0x00100000, %eax
@ -178,13 +178,17 @@ ENTRY(__cbrt)
fdivp %st, %st(1) /* u*(t2+2*xm)/(2*t2+xm) */ fdivp %st, %st(1) /* u*(t2+2*xm)/(2*t2+xm) */
fmull MOX(16+factor,%ecx) /* u*(t2+2*xm)/(2*t2+xm)*FACT */ fmull MOX(16+factor,%ecx) /* u*(t2+2*xm)/(2*t2+xm)*FACT */
pushl %eax pushl %eax
cfi_adjust_cfa_offset (4)
fildl (%esp) /* xe/3 : u*(t2+2*xm)/(2*t2+xm)*FACT */ fildl (%esp) /* xe/3 : u*(t2+2*xm)/(2*t2+xm)*FACT */
fxch /* u*(t2+2*xm)/(2*t2+xm)*FACT : xe/3 */ fxch /* u*(t2+2*xm)/(2*t2+xm)*FACT : xe/3 */
fscale /* u*(t2+2*xm)/(2*t2+xm)*FACT*2^xe/3 */ fscale /* u*(t2+2*xm)/(2*t2+xm)*FACT*2^xe/3 */
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
#ifdef PIC #ifdef PIC
movl 12(%esp), %eax movl 12(%esp), %eax
popl %ebx popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
#else #else
movl 8(%esp), %eax movl 8(%esp), %eax
#endif #endif

View File

@ -1,5 +1,5 @@
/* Compute cubic root of float value. /* 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. This file is part of the GNU C Library.
Contributed by Dirk Alboth <dirka@uni-paderborn.de> and Contributed by Dirk Alboth <dirka@uni-paderborn.de> and
Ulrich Drepper <drepper@cygnus.com>, 1997. Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -76,9 +76,9 @@ ENTRY(__cbrtf)
#ifdef PIC #ifdef PIC
pushl %ebx pushl %ebx
call 3f cfi_adjust_cfa_offset (4)
3: popl %ebx cfi_rel_offset (ebx, 0)
addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %ebx LOAD_PIC_REG (bx)
#endif #endif
cmpl $0x00800000, %eax cmpl $0x00800000, %eax
@ -155,13 +155,17 @@ ENTRY(__cbrtf)
fdivp %st, %st(1) /* u*(t2+2*xm)/(2*t2+xm) */ fdivp %st, %st(1) /* u*(t2+2*xm)/(2*t2+xm) */
fmull MOX(16+factor,%ecx) /* u*(t2+2*xm)/(2*t2+xm)*FACT */ fmull MOX(16+factor,%ecx) /* u*(t2+2*xm)/(2*t2+xm)*FACT */
pushl %eax pushl %eax
cfi_adjust_cfa_offset (4)
fildl (%esp) /* xe/3 : u*(t2+2*xm)/(2*t2+xm)*FACT */ fildl (%esp) /* xe/3 : u*(t2+2*xm)/(2*t2+xm)*FACT */
fxch /* u*(t2+2*xm)/(2*t2+xm)*FACT : xe/3 */ fxch /* u*(t2+2*xm)/(2*t2+xm)*FACT : xe/3 */
fscale /* u*(t2+2*xm)/(2*t2+xm)*FACT*2^xe/3 */ fscale /* u*(t2+2*xm)/(2*t2+xm)*FACT*2^xe/3 */
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
#ifdef PIC #ifdef PIC
movl 8(%esp), %eax movl 8(%esp), %eax
popl %ebx popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
#else #else
movl 4(%esp), %eax movl 4(%esp), %eax
#endif #endif

View File

@ -1,5 +1,5 @@
/* Compute cubic root of long double value. /* 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. This file is part of the GNU C Library.
Contributed by Dirk Alboth <dirka@uni-paderborn.de> and Contributed by Dirk Alboth <dirka@uni-paderborn.de> and
Ulrich Drepper <drepper@cygnus.com>, 1997. Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -108,9 +108,9 @@ ENTRY(__cbrtl)
#ifdef PIC #ifdef PIC
pushl %ebx pushl %ebx
call 3f cfi_adjust_cfa_offset (4)
3: popl %ebx cfi_rel_offset (ebx, 0)
addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %ebx LOAD_PIC_REG (bx)
#endif #endif
cmpl $0, %eax cmpl $0, %eax
@ -206,13 +206,17 @@ ENTRY(__cbrtl)
fldt MOX(32+factor,%ecx) fldt MOX(32+factor,%ecx)
fmulp /* u*(t2+2*xm)/(2*t2+xm)*FACT */ fmulp /* u*(t2+2*xm)/(2*t2+xm)*FACT */
pushl %eax pushl %eax
cfi_adjust_cfa_offset (4)
fildl (%esp) /* xe/3 : u*(t2+2*xm)/(2*t2+xm)*FACT */ fildl (%esp) /* xe/3 : u*(t2+2*xm)/(2*t2+xm)*FACT */
fxch /* u*(t2+2*xm)/(2*t2+xm)*FACT : xe/3 */ fxch /* u*(t2+2*xm)/(2*t2+xm)*FACT : xe/3 */
fscale /* u*(t2+2*xm)/(2*t2+xm)*FACT*2^xe/3 */ fscale /* u*(t2+2*xm)/(2*t2+xm)*FACT*2^xe/3 */
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
#ifdef PIC #ifdef PIC
movl 16(%esp), %eax movl 16(%esp), %eax
popl %ebx popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
#else #else
movl 12(%esp), %eax movl 12(%esp), %eax
#endif #endif

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of complex exponential function for double. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -71,9 +71,7 @@ ENTRY(__cexp)
fnstsw fnstsw
fldl 16(%esp) /* y : x */ fldl 16(%esp) /* y : x */
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (cx)
1: popl %ecx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
#endif #endif
movb %ah, %dh movb %ah, %dh
andb $0x45, %ah andb $0x45, %ah

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of complex exponential function for double. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -71,9 +71,7 @@ ENTRY(__cexpf)
fnstsw fnstsw
flds 8(%esp) /* y : x */ flds 8(%esp) /* y : x */
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (cx)
1: popl %ecx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
#endif #endif
movb %ah, %dh movb %ah, %dh
andb $0x45, %ah andb $0x45, %ah
@ -114,10 +112,13 @@ ENTRY(__cexpf)
fmulp %st, %st(3) /* sin(y) : e^x : e^x * cos(y) */ fmulp %st, %st(3) /* sin(y) : e^x : e^x * cos(y) */
fmulp %st, %st(1) /* e^x * sin(y) : e^x * cos(y) */ fmulp %st, %st(1) /* e^x * sin(y) : e^x * cos(y) */
subl $8, %esp subl $8, %esp
cfi_adjust_cfa_offset (8)
fstps 4(%esp) fstps 4(%esp)
fstps (%esp) fstps (%esp)
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
ret ret
/* We have to reduce the argument to fsincos. */ /* We have to reduce the argument to fsincos. */
@ -133,10 +134,13 @@ ENTRY(__cexpf)
fmulp %st, %st(3) fmulp %st, %st(3)
fmulp %st, %st(1) fmulp %st, %st(1)
subl $8, %esp subl $8, %esp
cfi_adjust_cfa_offset (8)
fstps 4(%esp) fstps 4(%esp)
fstps (%esp) fstps (%esp)
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
ret ret
/* The real part is +-inf. We must make further differences. */ /* The real part is +-inf. We must make further differences. */
@ -210,12 +214,14 @@ ENTRY(__cexpf)
+-Inf+-0i. */ +-Inf+-0i. */
.align ALIGNARG(4) .align ALIGNARG(4)
4: subl $4, %esp 4: subl $4, %esp
cfi_adjust_cfa_offset (4)
fstps (%esp) fstps (%esp)
shrl $6, %edx shrl $6, %edx
fstp %st(0) fstp %st(0)
andl $8, %edx andl $8, %edx
movl MOX(huge_nan_null_null,%edx,1), %eax movl MOX(huge_nan_null_null,%edx,1), %eax
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
ret ret
/* The real part is +-Inf, the imaginary is also is not finite. */ /* The real part is +-Inf, the imaginary is also is not finite. */

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of complex exponential function for double. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -71,9 +71,7 @@ ENTRY(__cexpl)
fnstsw fnstsw
fldt 20(%esp) /* y : x */ fldt 20(%esp) /* y : x */
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (cx)
1: popl %ecx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
#endif #endif
movb %ah, %dh movb %ah, %dh
andb $0x45, %ah andb $0x45, %ah

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of exp(x)-1. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>. Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>.
@ -56,9 +56,7 @@ ENTRY(__expm1)
cmpb $0x40, %ch cmpb $0x40, %ch
je 3f // If +-0, jump. je 3f // If +-0, jump.
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
cmpb $0x05, %ch cmpb $0x05, %ch
je 2f // If +-Inf, jump. je 2f // If +-Inf, jump.

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of exp(x)-1. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>. Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>.
@ -56,9 +56,7 @@ ENTRY(__expm1f)
cmpb $0x40, %ch cmpb $0x40, %ch
je 3f // If +-0, jump. je 3f // If +-0, jump.
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
cmpb $0x05, %ch cmpb $0x05, %ch
je 2f // If +-Inf, jump. je 2f // If +-Inf, jump.

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of exp(x)-1. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>. Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>.
@ -56,9 +56,7 @@ ENTRY(__expm1l)
cmpb $0x40, %ch cmpb $0x40, %ch
je 3f // If +-0, jump. je 3f // If +-0, jump.
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
cmpb $0x05, %ch cmpb $0x05, %ch
je 2f // If +-Inf, jump. je 2f // If +-Inf, jump.

View File

@ -1,5 +1,5 @@
/* ix87 specific frexp implementation for double. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -63,9 +63,7 @@ ENTRY (BP_SYM (__frexp))
fldl VAL0(%esp) fldl VAL0(%esp)
#ifdef PIC #ifdef PIC
call 3f LOAD_PIC_REG (dx)
3: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %edx
#endif #endif
fmull MO(two54) fmull MO(two54)
movl $-54, %ecx movl $-54, %ecx

View File

@ -1,5 +1,5 @@
/* ix87 specific frexp implementation for float. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -60,9 +60,7 @@ ENTRY (BP_SYM (__frexpf))
flds VAL(%esp) flds VAL(%esp)
#ifdef PIC #ifdef PIC
call 3f LOAD_PIC_REG (dx)
3: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %edx
#endif #endif
fmuls MO(two25) fmuls MO(two25)
movl $-25, %ecx movl $-25, %ecx

View File

@ -1,5 +1,5 @@
/* ix87 specific frexp implementation for long double. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -65,9 +65,7 @@ ENTRY (BP_SYM (__frexpl))
fldt VAL0(%esp) fldt VAL0(%esp)
#ifdef PIC #ifdef PIC
call 3f LOAD_PIC_REG (dx)
3: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %edx
#endif #endif
fmull MO(two64) /* It's not necessary to use a 80bit factor */ fmull MO(two64) /* It's not necessary to use a 80bit factor */

View File

@ -21,11 +21,13 @@ ENTRY(__ilogb)
fxtract fxtract
pushl %eax pushl %eax
cfi_adjust_cfa_offset (4)
fstp %st fstp %st
fistpl (%esp) fistpl (%esp)
fwait fwait
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
ret ret

View File

@ -21,11 +21,13 @@ ENTRY(__ilogbf)
fxtract fxtract
pushl %eax pushl %eax
cfi_adjust_cfa_offset (4)
fstp %st fstp %st
fistpl (%esp) fistpl (%esp)
fwait fwait
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
ret ret

View File

@ -22,11 +22,13 @@ ENTRY(__ilogbl)
fxtract fxtract
pushl %eax pushl %eax
cfi_adjust_cfa_offset (4)
fstp %st fstp %st
fistpl (%esp) fistpl (%esp)
fwait fwait
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
ret ret

View File

@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding /* Round argument to nearest integral value according to current rounding
direction. 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -25,10 +25,13 @@
ENTRY(__llrint) ENTRY(__llrint)
fldl 4(%esp) fldl 4(%esp)
subl $8, %esp subl $8, %esp
cfi_adjust_cfa_offset (8)
fistpll (%esp) fistpll (%esp)
fwait fwait
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
ret ret
END(__llrint) END(__llrint)
weak_alias (__llrint, llrint) weak_alias (__llrint, llrint)

View File

@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding /* Round argument to nearest integral value according to current rounding
direction. 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -25,10 +25,13 @@
ENTRY(__llrintf) ENTRY(__llrintf)
flds 4(%esp) flds 4(%esp)
subl $8, %esp subl $8, %esp
cfi_adjust_cfa_offset (8)
fistpll (%esp) fistpll (%esp)
fwait fwait
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
ret ret
END(__llrintf) END(__llrintf)
weak_alias (__llrintf, llrintf) weak_alias (__llrintf, llrintf)

View File

@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding /* Round argument to nearest integral value according to current rounding
direction. 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -25,10 +25,13 @@
ENTRY(__llrintl) ENTRY(__llrintl)
fldt 4(%esp) fldt 4(%esp)
subl $8, %esp subl $8, %esp
cfi_adjust_cfa_offset (8)
fistpll (%esp) fistpll (%esp)
fwait fwait
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
popl %edx popl %edx
cfi_adjust_cfa_offset (-4)
ret ret
END(__llrintl) END(__llrintl)
weak_alias (__llrintl, llrintl) weak_alias (__llrintl, llrintl)

View File

@ -31,9 +31,7 @@ ENTRY(__log1p)
fldl 4(%esp) fldl 4(%esp)
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
fxam fxam

View File

@ -31,9 +31,7 @@ ENTRY(__log1pf)
flds 4(%esp) flds 4(%esp)
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
fxam fxam

View File

@ -36,9 +36,7 @@ ENTRY(__log1pl)
fldt 4(%esp) fldt 4(%esp)
#ifdef PIC #ifdef PIC
call 1f LOAD_PIC_REG (dx)
1: popl %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif #endif
fxam fxam

View File

@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding /* Round argument to nearest integral value according to current rounding
direction. 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -25,9 +25,11 @@
ENTRY(__lrint) ENTRY(__lrint)
fldl 4(%esp) fldl 4(%esp)
subl $4, %esp subl $4, %esp
cfi_adjust_cfa_offset (4)
fistpl (%esp) fistpl (%esp)
fwait fwait
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
ret ret
END(__lrint) END(__lrint)
weak_alias (__lrint, lrint) weak_alias (__lrint, lrint)

View File

@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding /* Round argument to nearest integral value according to current rounding
direction. 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -25,9 +25,11 @@
ENTRY(__lrintf) ENTRY(__lrintf)
flds 4(%esp) flds 4(%esp)
subl $4, %esp subl $4, %esp
cfi_adjust_cfa_offset (4)
fistpl (%esp) fistpl (%esp)
fwait fwait
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
ret ret
END(__lrintf) END(__lrintf)
weak_alias (__lrintf, lrintf) weak_alias (__lrintf, lrintf)

View File

@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding /* Round argument to nearest integral value according to current rounding
direction. 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -25,9 +25,11 @@
ENTRY(__lrintl) ENTRY(__lrintl)
fldt 4(%esp) fldt 4(%esp)
subl $4, %esp subl $4, %esp
cfi_adjust_cfa_offset (4)
fistpl (%esp) fistpl (%esp)
fwait fwait
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
ret ret
END(__lrintl) END(__lrintl)
weak_alias (__lrintl, lrintl) weak_alias (__lrintl, lrintl)

View File

@ -9,7 +9,9 @@
ENTRY(__nearbyint) ENTRY(__nearbyint)
fldl 4(%esp) fldl 4(%esp)
pushl %eax pushl %eax
cfi_adjust_cfa_offset (4)
pushl %ecx pushl %ecx
cfi_adjust_cfa_offset (4)
fnstcw (%esp) fnstcw (%esp)
movl (%esp), %eax movl (%esp), %eax
orl $0x20, %eax orl $0x20, %eax
@ -19,7 +21,9 @@ ENTRY(__nearbyint)
fclex fclex
fldcw (%esp) fldcw (%esp)
popl %ecx popl %ecx
cfi_adjust_cfa_offset (-4)
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
ret ret
END (__nearbyint) END (__nearbyint)
weak_alias (__nearbyint, nearbyint) weak_alias (__nearbyint, nearbyint)

View File

@ -9,7 +9,9 @@
ENTRY(__nearbyintf) ENTRY(__nearbyintf)
flds 4(%esp) flds 4(%esp)
pushl %eax pushl %eax
cfi_adjust_cfa_offset (4)
pushl %ecx pushl %ecx
cfi_adjust_cfa_offset (4)
fnstcw (%esp) fnstcw (%esp)
movl (%esp), %eax movl (%esp), %eax
orl $0x20, %eax orl $0x20, %eax
@ -19,7 +21,9 @@ ENTRY(__nearbyintf)
fclex fclex
fldcw (%esp) fldcw (%esp)
popl %ecx popl %ecx
cfi_adjust_cfa_offset (-4)
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
ret ret
END (__nearbyintf) END (__nearbyintf)
weak_alias (__nearbyintf, nearbyintf) weak_alias (__nearbyintf, nearbyintf)

View File

@ -9,7 +9,9 @@
ENTRY(__nearbyintl) ENTRY(__nearbyintl)
fldt 4(%esp) fldt 4(%esp)
pushl %eax pushl %eax
cfi_adjust_cfa_offset (4)
pushl %ecx pushl %ecx
cfi_adjust_cfa_offset (4)
fnstcw (%esp) fnstcw (%esp)
movl (%esp), %eax movl (%esp), %eax
orl $0x20, %eax orl $0x20, %eax
@ -19,7 +21,9 @@ ENTRY(__nearbyintl)
fclex fclex
fldcw (%esp) fldcw (%esp)
popl %ecx popl %ecx
cfi_adjust_cfa_offset (-4)
popl %eax popl %eax
cfi_adjust_cfa_offset (-4)
ret ret
END (__nearbyintl) END (__nearbyintl)
weak_alias (__nearbyintl, nearbyintl) weak_alias (__nearbyintl, nearbyintl)

View File

@ -38,13 +38,13 @@
ENTRY (BP_SYM (__mpn_addmul_1)) ENTRY (BP_SYM (__mpn_addmul_1))
ENTER ENTER
pushl %edi pushl %res_ptr
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %esi pushl %s1_ptr
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %ebp pushl %ebp
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %ebx pushl %s2_limb
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
movl RES(%esp), %res_ptr movl RES(%esp), %res_ptr
@ -86,18 +86,18 @@ L(oop): adcl $0, %ebp
adcl $0, %ebp adcl $0, %ebp
movl %ebp, %eax movl %ebp, %eax
popl %ebx popl %s2_limb
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (ebx) cfi_restore (s2_limb)
popl %ebp popl %ebp
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (ebp) cfi_restore (ebp)
popl %esi popl %s1_ptr
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (esi) cfi_restore (s1_ptr)
popl %edi popl %res_ptr
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (edi) cfi_restore (res_ptr)
LEAVE LEAVE
ret ret

View File

@ -46,7 +46,7 @@ ENTRY (BP_SYM (memcpy))
movl DEST(%esp), %edi movl DEST(%esp), %edi
cfi_rel_offset (edi, 4) cfi_rel_offset (edi, 4)
movl SRC(%esp), %esi movl SRC(%esp), %esi
cfi_rel_offset (esi, 4) cfi_rel_offset (esi, 0)
movl LEN(%esp), %ecx movl LEN(%esp), %ecx
CHECK_BOUNDS_BOTH_WIDE (%edi, DEST(%esp), %ecx) CHECK_BOUNDS_BOTH_WIDE (%edi, DEST(%esp), %ecx)
CHECK_BOUNDS_BOTH_WIDE (%esi, SRC(%esp), %ecx) CHECK_BOUNDS_BOTH_WIDE (%esi, SRC(%esp), %ecx)

View File

@ -38,13 +38,13 @@
ENTRY (BP_SYM (__mpn_mul_1)) ENTRY (BP_SYM (__mpn_mul_1))
ENTER ENTER
pushl %edi pushl %res_ptr
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %esi pushl %s1_ptr
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %ebp pushl %ebp
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %ebx pushl %s2_limb
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
movl RES(%esp), %res_ptr movl RES(%esp), %res_ptr
@ -82,18 +82,18 @@ L(oop): adcl $0, %ebp
adcl $0, %ebp adcl $0, %ebp
movl %ebp, %eax movl %ebp, %eax
popl %ebx popl %s2_limb
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (ebx) cfi_restore (s2_limb)
popl %ebp popl %ebp
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (ebp) cfi_restore (ebp)
popl %esi popl %s1_ptr
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (esi) cfi_restore (s1_ptr)
popl %edi popl %res_ptr
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (edi) cfi_restore (res_ptr)
LEAVE LEAVE
ret ret

View File

@ -165,7 +165,7 @@ L(end2):
cfi_rel_offset (edi, 12) cfi_rel_offset (edi, 12)
cfi_rel_offset (esi, 8) cfi_rel_offset (esi, 8)
cfi_rel_offset (ebp, 4) cfi_rel_offset (ebp, 4)
cfi_rel_offset (ebx, 3) cfi_rel_offset (ebx, 0)
L(special): L(special):
leal -4(%edi,%ebx,4),%edi leal -4(%edi,%ebx,4),%edi
leal -4(%esi,%ebx,4),%esi leal -4(%esi,%ebx,4),%esi

View File

@ -56,8 +56,8 @@ ENTRY (BP_SYM (__mpn_sub_n))
CHECK_BOUNDS_BOTH_WIDE (%ebx, S2(%esp), %ecx) CHECK_BOUNDS_BOTH_WIDE (%ebx, S2(%esp), %ecx)
shrl $2, %ecx shrl $2, %ecx
#endif #endif
cfi_rel_offset (ebp, 4)
movl (%ebx),%ebp movl (%ebx),%ebp
cfi_rel_offset (ebp, 4)
decl %ecx decl %ecx
movl %ecx,%edx movl %ecx,%edx

View File

@ -38,13 +38,13 @@
ENTRY (BP_SYM (__mpn_submul_1)) ENTRY (BP_SYM (__mpn_submul_1))
ENTER ENTER
pushl %edi pushl %res_ptr
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %esi pushl %s1_ptr
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %ebp pushl %ebp
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %ebx pushl %s2_limb
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
movl RES(%esp), %res_ptr movl RES(%esp), %res_ptr
@ -86,18 +86,18 @@ L(oop): adcl $0, %ebp
adcl $0, %ebp adcl $0, %ebp
movl %ebp, %eax movl %ebp, %eax
popl %ebx popl %s2_limb
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (ebx) cfi_restore (s2_limb)
popl %ebp popl %ebp
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (ebp) cfi_restore (ebp)
popl %esi popl %s1_ptr
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (esi) cfi_restore (s1_ptr)
popl %edi popl %res_ptr
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (edi) cfi_restore (res_ptr)
LEAVE LEAVE
ret ret

View File

@ -29,7 +29,8 @@
#define ENTRANCE pushl %ebx; cfi_adjust_cfa_offset (4); \ #define ENTRANCE pushl %ebx; cfi_adjust_cfa_offset (4); \
cfi_rel_offset (ebx, 0); ENTER cfi_rel_offset (ebx, 0); ENTER
#define RETURN popl %ebx; cfi_adjust_cfa_offset (-4); \ #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 /* Load an entry in a jump table into EBX. TABLE is a jump table
with relative offsets. INDEX is a register contains the index with relative offsets. INDEX is a register contains the index
@ -79,6 +80,8 @@ L(neq):
sbbl $-1, %eax sbbl $-1, %eax
RETURN RETURN
cfi_adjust_cfa_offset (4)
cfi_rel_offset (ebx, 0)
L(not_1): L(not_1):
jl L(bye) /* LEN == 0 */ jl L(bye) /* LEN == 0 */
@ -137,8 +140,9 @@ L(0bytes):
xorl %eax, %eax xorl %eax, %eax
RETURN RETURN
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (8)
cfi_rel_offset (esi, 0) cfi_rel_offset (esi, 0)
cfi_rel_offset (ebx, 4)
L(29bytes): L(29bytes):
movl -29(%esi), %eax movl -29(%esi), %eax
movl -29(%edx), %ecx movl -29(%edx), %ecx
@ -184,8 +188,9 @@ L(1bytes):
xorl %eax, %eax xorl %eax, %eax
RETURN RETURN
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (8)
cfi_rel_offset (esi, 0) cfi_rel_offset (esi, 0)
cfi_rel_offset (ebx, 4)
L(30bytes): L(30bytes):
movl -30(%esi), %eax movl -30(%esi), %eax
movl -30(%edx), %ecx movl -30(%edx), %ecx
@ -234,8 +239,9 @@ L(2bytes):
xorl %eax, %eax xorl %eax, %eax
RETURN RETURN
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (8)
cfi_rel_offset (esi, 0) cfi_rel_offset (esi, 0)
cfi_rel_offset (ebx, 4)
L(31bytes): L(31bytes):
movl -31(%esi), %eax movl -31(%esi), %eax
movl -31(%edx), %ecx movl -31(%edx), %ecx
@ -287,8 +293,9 @@ L(3bytes):
xorl %eax, %eax xorl %eax, %eax
RETURN RETURN
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (8)
cfi_rel_offset (esi, 0) cfi_rel_offset (esi, 0)
cfi_rel_offset (ebx, 4)
ALIGN (4) ALIGN (4)
/* ECX >= 32. */ /* ECX >= 32. */
L(32bytesormore): L(32bytesormore):

View File

@ -79,6 +79,10 @@ ENTRY (BP_SYM (memmove))
LEAVE LEAVE
RET_PTR RET_PTR
cfi_adjust_cfa_offset (4)
cfi_rel_offset (edi, 0)
cfi_register (esi, edx)
/* Backward copying. */ /* Backward copying. */
3: std 3: std
leal -1(%edi, %ecx), %edi leal -1(%edi, %ecx), %edi

View File

@ -38,13 +38,13 @@
ENTRY (BP_SYM (__mpn_mul_1)) ENTRY (BP_SYM (__mpn_mul_1))
ENTER ENTER
pushl %edi pushl %res_ptr
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %esi pushl %s1_ptr
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %ebp pushl %ebp
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %ebx pushl %s2_limb
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
movl RES(%esp), %res_ptr movl RES(%esp), %res_ptr
@ -78,18 +78,18 @@ L(oop):
jnz L(oop) jnz L(oop)
movl %ebp, %eax movl %ebp, %eax
popl %ebx popl %s2_limb
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (ebx) cfi_restore (s2_limb)
popl %ebp popl %ebp
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (ebp) cfi_restore (ebp)
popl %esi popl %s1_ptr
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (esi) cfi_restore (s1_ptr)
popl %edi popl %res_ptr
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
cfi_restore (edi) cfi_restore (res_ptr)
LEAVE LEAVE
ret ret

View File

@ -81,7 +81,7 @@ ENTRY (BP_SYM (FUNCTION))
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
call L(here) call L(here)
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
cfi_rel_offset (ebx, 4) cfi_rel_offset (ebx, 0)
L(here): L(here):
popl %ebx popl %ebx
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)

View File

@ -67,10 +67,12 @@ ENTRY (BP_SYM (__mpn_sub_n))
/* Calculate start address in loop for PIC. Due to limitations in some /* Calculate start address in loop for PIC. Due to limitations in some
assemblers, Loop-L0-3 cannot be put into the leal */ assemblers, Loop-L0-3 cannot be put into the leal */
call L(0) call L(0)
cfi_adjust_cfa_offset (4)
L(0): leal (%eax,%eax,8),%eax L(0): leal (%eax,%eax,8),%eax
addl (%esp),%eax addl (%esp),%eax
addl $(L(oop)-L(0)-3),%eax addl $(L(oop)-L(0)-3),%eax
addl $4,%esp addl $4,%esp
cfi_adjust_cfa_offset (-4)
#else #else
/* Calculate start address in loop for non-PIC. */ /* Calculate start address in loop for non-PIC. */
leal (L(oop) - 3)(%eax,%eax,8),%eax leal (L(oop) - 3)(%eax,%eax,8),%eax

View File

@ -46,14 +46,15 @@ ENTRY (BP_SYM (__mpn_submul_1))
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %ebx pushl %ebx
cfi_adjust_cfa_offset (4) 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 movl RES(%esp), %res_ptr
cfi_rel_offset (res_ptr, 12)
movl S1(%esp), %s1_ptr movl S1(%esp), %s1_ptr
cfi_rel_offset (s1_ptr, 8)
movl SIZE(%esp), %sizeP movl SIZE(%esp), %sizeP
movl S2LIMB(%esp), %s2_limb movl S2LIMB(%esp), %s2_limb
cfi_rel_offset (s2_limb, 0)
#if __BOUNDED_POINTERS__ #if __BOUNDED_POINTERS__
shll $2, %sizeP /* convert limbs to bytes */ shll $2, %sizeP /* convert limbs to bytes */
CHECK_BOUNDS_BOTH_WIDE (%res_ptr, RES(%esp), %sizeP) CHECK_BOUNDS_BOTH_WIDE (%res_ptr, RES(%esp), %sizeP)
@ -64,7 +65,6 @@ ENTRY (BP_SYM (__mpn_submul_1))
leal (%s1_ptr,%sizeP,4), %s1_ptr leal (%s1_ptr,%sizeP,4), %s1_ptr
negl %sizeP negl %sizeP
xorl %ebp, %ebp xorl %ebp, %ebp
cfi_rel_offset (ebp, 4)
ALIGN (3) ALIGN (3)
L(oop): L(oop):
movl (%s1_ptr,%sizeP,4), %eax movl (%s1_ptr,%sizeP,4), %eax

View File

@ -88,6 +88,7 @@ ENTRY (BP_SYM (__clone))
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
pushl %edi pushl %edi
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
movl TLS+12(%esp),%esi movl TLS+12(%esp),%esi
cfi_rel_offset (esi, 4) cfi_rel_offset (esi, 4)
movl PTID+12(%esp),%edx movl PTID+12(%esp),%edx
@ -102,16 +103,14 @@ ENTRY (BP_SYM (__clone))
movl %ebx, (%ecx) movl %ebx, (%ecx)
#endif #endif
/* End FDE now, because in the child the unwind info will be
wrong. */
cfi_endproc
int $0x80 int $0x80
popl %edi popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
popl %esi popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %ebx popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
test %eax,%eax test %eax,%eax
jl SYSCALL_ERROR_LABEL jl SYSCALL_ERROR_LABEL
@ -131,10 +130,8 @@ L(haspid):
call *%ebx call *%ebx
#ifdef PIC #ifdef PIC
call L(here) call L(here)
cfi_adjust_cfa_offset (4)
L(here): L(here):
popl %ebx popl %ebx
cfi_adjust_cfa_offset (-4)
addl $_GLOBAL_OFFSET_TABLE_+[.-L(here)], %ebx addl $_GLOBAL_OFFSET_TABLE_+[.-L(here)], %ebx
#endif #endif
movl %eax, %ebx movl %eax, %ebx
@ -156,6 +153,7 @@ L(nomoregetpid):
.previous .previous
#endif #endif
cfi_startproc
PSEUDO_END (BP_SYM (__clone)) PSEUDO_END (BP_SYM (__clone))
weak_alias (BP_SYM (__clone), BP_SYM (clone)) weak_alias (BP_SYM (__clone), BP_SYM (clone))

View File

@ -1,5 +1,5 @@
/* Save current context. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2001. Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
@ -63,12 +63,16 @@ ENTRY(__getcontext)
/* Save the current signal mask. */ /* Save the current signal mask. */
pushl %ebx pushl %ebx
cfi_adjust_cfa_offset (4)
cfi_rel_offset (ebx, 0)
leal oSIGMASK(%eax), %edx leal oSIGMASK(%eax), %edx
xorl %ecx, %ecx xorl %ecx, %ecx
movl $SIG_BLOCK, %ebx movl $SIG_BLOCK, %ebx
movl $__NR_sigprocmask, %eax movl $__NR_sigprocmask, %eax
ENTER_KERNEL ENTER_KERNEL
popl %ebx popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
cmpl $-4095, %eax /* Check %eax for error. */ cmpl $-4095, %eax /* Check %eax for error. */
jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */ jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */

View File

@ -1,5 +1,5 @@
/* Create new context. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2001. Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
@ -68,7 +68,9 @@ ENTRY(__makecontext)
below). */ below). */
#ifdef PIC #ifdef PIC
call 1f call 1f
cfi_adjust_cfa_offset (4)
1: popl %ecx 1: popl %ecx
cfi_adjust_cfa_offset (-4)
addl $L(exitcode)-1b, %ecx addl $L(exitcode)-1b, %ecx
movl %ecx, (%edx) movl %ecx, (%edx)
#else #else
@ -83,6 +85,7 @@ ENTRY(__makecontext)
the context 'makecontext' manipulated at the time of the the context 'makecontext' manipulated at the time of the
'makecontext' call. If the pointer is NULL the process must 'makecontext' call. If the pointer is NULL the process must
terminate. */ terminate. */
cfi_endproc
L(exitcode): L(exitcode):
/* This removes the parameters passed to the function given to /* This removes the parameters passed to the function given to
'makecontext' from the stack. EBX contains the number of 'makecontext' from the stack. EBX contains the number of
@ -108,6 +111,7 @@ L(exitcode):
/* The 'exit' call should never return. In case it does cause /* The 'exit' call should never return. In case it does cause
the process to terminate. */ the process to terminate. */
hlt hlt
cfi_startproc
END(__makecontext) END(__makecontext)
weak_alias(__makecontext, makecontext) weak_alias(__makecontext, makecontext)

View File

@ -26,7 +26,7 @@
ENTRY (__mmap) 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. */ is available. Only use it when we are sure the syscall exists. */
#ifdef __ASSUME_MMAP2_SYSCALL #ifdef __ASSUME_MMAP2_SYSCALL
@ -78,6 +78,7 @@ L(skip):
/* Save registers. */ /* Save registers. */
movl %ebx, %edx movl %ebx, %edx
cfi_register (ebx, edx)
movl $SYS_ify(mmap), %eax /* System call number in %eax. */ movl $SYS_ify(mmap), %eax /* System call number in %eax. */
@ -88,6 +89,7 @@ L(skip):
/* Restore registers. */ /* Restore registers. */
movl %edx, %ebx movl %edx, %ebx
cfi_restore (ebx)
#endif #endif

View File

@ -130,6 +130,7 @@ L(einval):
3: 3:
/* Save registers. */ /* Save registers. */
movl %ebx, %edx movl %ebx, %edx
cfi_register (ebx, edx)
cmpl $0, OFFHI-SVRSP(%esp) cmpl $0, OFFHI-SVRSP(%esp)
jne L(einval2) jne L(einval2)
@ -143,6 +144,7 @@ L(einval):
/* Restore registers. */ /* Restore registers. */
movl %edx, %ebx movl %edx, %ebx
cfi_restore (ebx)
/* If 0 > %eax > -4096 there was an error. */ /* If 0 > %eax > -4096 there was an error. */
cmpl $-4096, %eax cmpl $-4096, %eax
@ -154,8 +156,10 @@ L(pseudo_end):
#endif #endif
ret ret
cfi_register (ebx, edx)
L(einval2): L(einval2):
movl %edx, %ebx movl %edx, %ebx
cfi_restore (ebx)
movl $-EINVAL, %eax movl $-EINVAL, %eax
jmp SYSCALL_ERROR_LABEL jmp SYSCALL_ERROR_LABEL
#endif #endif

View File

@ -61,6 +61,13 @@ ENTRY(__setcontext)
movl oEIP(%eax), %ecx movl oEIP(%eax), %ecx
/* Load the new stack pointer. */ /* 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 movl oESP(%eax), %esp
/* Push the return address on the new stack so we can return there. */ /* Push the return address on the new stack so we can return there. */
@ -76,6 +83,10 @@ ENTRY(__setcontext)
movl oECX(%eax), %ecx movl oECX(%eax), %ecx
movl oEAX(%eax), %eax 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 /* The following 'ret' will pop the address of the code and jump
to it. */ to it. */

View File

@ -118,6 +118,7 @@
.previous .previous
# else # else
# define SETUP_PIC_REG(reg) \ # define SETUP_PIC_REG(reg) \
.ifndef __i686.get_pc_thunk.reg; \
.section .gnu.linkonce.t.__i686.get_pc_thunk.reg,"ax",@progbits; \ .section .gnu.linkonce.t.__i686.get_pc_thunk.reg,"ax",@progbits; \
.globl __i686.get_pc_thunk.reg; \ .globl __i686.get_pc_thunk.reg; \
.hidden __i686.get_pc_thunk.reg; \ .hidden __i686.get_pc_thunk.reg; \
@ -127,9 +128,13 @@ __i686.get_pc_thunk.reg: \
ret; \ ret; \
.size __i686.get_pc_thunk.reg, . - __i686.get_pc_thunk.reg; \ .size __i686.get_pc_thunk.reg, . - __i686.get_pc_thunk.reg; \
.previous; \ .previous; \
.endif; \
call __i686.get_pc_thunk.reg call __i686.get_pc_thunk.reg
# endif # endif
# define LOAD_PIC_REG(reg) \
SETUP_PIC_REG(reg); addl $_GLOBAL_OFFSET_TABLE_, %e##reg
# if RTLD_PRIVATE_ERRNO # if RTLD_PRIVATE_ERRNO
# define SYSCALL_ERROR_HANDLER \ # define SYSCALL_ERROR_HANDLER \
0:SETUP_PIC_REG(cx); \ 0:SETUP_PIC_REG(cx); \

View File

@ -1,4 +1,4 @@
/* 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. This file is part of the GNU C Library.
Contributed by Andreas Schwab <schwab@gnu.org>. Contributed by Andreas Schwab <schwab@gnu.org>.
@ -33,6 +33,7 @@ ENTRY (__vfork)
/* Pop the return PC value into ECX. */ /* Pop the return PC value into ECX. */
popl %ecx popl %ecx
cfi_adjust_cfa_offset (-4)
#ifdef SAVE_PID #ifdef SAVE_PID
SAVE_PID SAVE_PID
@ -46,6 +47,7 @@ ENTRY (__vfork)
disturbs the branch target cache. Instead push the return disturbs the branch target cache. Instead push the return
address back on the stack. */ address back on the stack. */
pushl %ecx pushl %ecx
cfi_adjust_cfa_offset (4)
#ifdef RESTORE_PID #ifdef RESTORE_PID
RESTORE_PID RESTORE_PID