From f4b59fd62358f28e23bae2fa8756913fd758299a Mon Sep 17 00:00:00 2001 From: joseph Date: Wed, 28 Mar 2012 22:24:59 +0000 Subject: Merge changes between r17700 and r17813 from /fsf/trunk. git-svn-id: svn://svn.eglibc.org/trunk@17814 7b3dc134-2b1b-0410-93df-9e9f96275f8d --- libc/sysdeps/sparc/Makefile | 3 + libc/sysdeps/sparc/configure | 93 +++++++++++++++++ libc/sysdeps/sparc/configure.in | 73 +++++++++++++ libc/sysdeps/sparc/elf/configure | 177 -------------------------------- libc/sysdeps/sparc/elf/configure.in | 75 -------------- libc/sysdeps/sparc/fpu/libm-test-ulps | 148 ++++++++++++++------------ libc/sysdeps/sparc/sparc32/Makefile | 2 +- libc/sysdeps/sparc/sparc32/elf/Makefile | 4 - libc/sysdeps/sparc/sparc32/elf/start.S | 100 ------------------ libc/sysdeps/sparc/sparc32/start.S | 100 ++++++++++++++++++ libc/sysdeps/sparc/sparc64/elf/Makefile | 4 - libc/sysdeps/sparc/sparc64/elf/start.S | 101 ------------------ libc/sysdeps/sparc/sparc64/start.S | 101 ++++++++++++++++++ 13 files changed, 454 insertions(+), 527 deletions(-) delete mode 100644 libc/sysdeps/sparc/elf/configure delete mode 100644 libc/sysdeps/sparc/elf/configure.in delete mode 100644 libc/sysdeps/sparc/sparc32/elf/Makefile delete mode 100644 libc/sysdeps/sparc/sparc32/elf/start.S create mode 100644 libc/sysdeps/sparc/sparc32/start.S delete mode 100644 libc/sysdeps/sparc/sparc64/elf/Makefile delete mode 100644 libc/sysdeps/sparc/sparc64/elf/start.S create mode 100644 libc/sysdeps/sparc/sparc64/start.S (limited to 'libc/sysdeps/sparc') diff --git a/libc/sysdeps/sparc/Makefile b/libc/sysdeps/sparc/Makefile index 1dd70e8b5..3f0c09640 100644 --- a/libc/sysdeps/sparc/Makefile +++ b/libc/sysdeps/sparc/Makefile @@ -15,3 +15,6 @@ ifeq ($(subdir),csu) CPPFLAGS-crti.S += -fPIC CPPFLAGS-crtn.S += -fPIC endif + +# The assembler on SPARC needs the -fPIC flag even when it's assembler code. +ASFLAGS-.os += -fPIC diff --git a/libc/sysdeps/sparc/configure b/libc/sysdeps/sparc/configure index 9ce761b3b..13d9c63b9 100644 --- a/libc/sysdeps/sparc/configure +++ b/libc/sysdeps/sparc/configure @@ -122,3 +122,96 @@ if test $libc_cv_sparc_as_vis3 = yes; then $as_echo "#define HAVE_AS_VIS3_SUPPORT 1" >>confdefs.h fi + +# Check for support of thread-local storage handling in assembler and linker. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sparc TLS support" >&5 +$as_echo_n "checking for sparc TLS support... " >&6; } +if ${libc_cv_sparc_tls+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat > conftest.S <<\EOF + .section ".tdata", "awT", @progbits + .globl foo +foo: .word 1 + .section ".tbss", "awT", @nobits + .globl bar +bar: .skip 4 + .text +baz: sethi %tgd_hi22(foo), %l1 + add %l1, %tgd_lo10(foo), %l1 + add %l7, %l1, %o0, %tgd_add(foo) + call __tls_get_addr, %tgd_call(foo) + sethi %tldm_hi22(bar), %l1 + add %l1, %tldm_lo10(bar), %l1 + add %l7, %l1, %o0, %tldm_add(bar) + call __tls_get_addr, %tldm_call(bar) + sethi %tldo_hix22(bar), %l1 + xor %l1, %tldo_lox10(bar), %l1 + add %o0, %l1, %l1, %tldo_add(bar) + sethi %tie_hi22(foo), %l1 + add %l1, %tie_lo10(foo), %l1 +#ifdef __arch64__ + ldx [%l7 + %l1], %l1, %tie_ldx(foo) +#else + ld [%l7 + %l1], %l1, %tie_ld(foo) +#endif + add %g7, %l1, %l1, %tie_add(foo) + sethi %tle_hix22(foo), %l1 + xor %l1, %tle_lox10(foo), %l1 +EOF +if { ac_try='${CC-cc} -c $CFLAGS conftest.S 1>&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + libc_cv_sparc_tls=yes +else + libc_cv_sparc_tls=no +fi +rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_sparc_tls" >&5 +$as_echo "$libc_cv_sparc_tls" >&6; } +if test $libc_cv_sparc_tls = no; then + as_fn_error $? "the assembler must support TLS" "$LINENO" 5 +fi + +# Check for a GCC emitting GOTDATA relocations. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sparc gcc GOTDATA reloc support" >&5 +$as_echo_n "checking for sparc gcc GOTDATA reloc support... " >&6; } +if ${libc_cv_sparc_gcc_gotdata+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat > conftest.c <<\EOF +int data; +int foo(void) +{ + return data; +} +EOF +libc_cv_sparc_gcc_gotdata=no +if { ac_try='${CC-cc} -S $CFLAGS -O2 -fPIC conftest.c 1>&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + if grep -q 'gdop_hix22' conftest.s \ + && grep -q 'gdop_lox10' conftest.s; then + libc_cv_sparc_gcc_gotdata=yes + fi +fi +rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_sparc_gcc_gotdata" >&5 +$as_echo "$libc_cv_sparc_gcc_gotdata" >&6; } +if test $libc_cv_sparc_gcc_gotdata = yes; then + $as_echo "#define HAVE_GCC_GOTDATA 1" >>confdefs.h + +fi + +if test $libc_cv_sparc_gcc_gotdata = yes; then + $as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h + +fi diff --git a/libc/sysdeps/sparc/configure.in b/libc/sysdeps/sparc/configure.in index b80d9cbf5..a85d0544f 100644 --- a/libc/sysdeps/sparc/configure.in +++ b/libc/sysdeps/sparc/configure.in @@ -28,3 +28,76 @@ rm -f conftest*]) if test $libc_cv_sparc_as_vis3 = yes; then AC_DEFINE(HAVE_AS_VIS3_SUPPORT) fi + +# Check for support of thread-local storage handling in assembler and linker. +AC_CACHE_CHECK(for sparc TLS support, libc_cv_sparc_tls, [dnl +changequote(,)dnl +cat > conftest.S <<\EOF + .section ".tdata", "awT", @progbits + .globl foo +foo: .word 1 + .section ".tbss", "awT", @nobits + .globl bar +bar: .skip 4 + .text +baz: sethi %tgd_hi22(foo), %l1 + add %l1, %tgd_lo10(foo), %l1 + add %l7, %l1, %o0, %tgd_add(foo) + call __tls_get_addr, %tgd_call(foo) + sethi %tldm_hi22(bar), %l1 + add %l1, %tldm_lo10(bar), %l1 + add %l7, %l1, %o0, %tldm_add(bar) + call __tls_get_addr, %tldm_call(bar) + sethi %tldo_hix22(bar), %l1 + xor %l1, %tldo_lox10(bar), %l1 + add %o0, %l1, %l1, %tldo_add(bar) + sethi %tie_hi22(foo), %l1 + add %l1, %tie_lo10(foo), %l1 +#ifdef __arch64__ + ldx [%l7 + %l1], %l1, %tie_ldx(foo) +#else + ld [%l7 + %l1], %l1, %tie_ld(foo) +#endif + add %g7, %l1, %l1, %tie_add(foo) + sethi %tle_hix22(foo), %l1 + xor %l1, %tle_lox10(foo), %l1 +EOF +changequote([,])dnl +dnl +if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.S 1>&AS_MESSAGE_LOG_FD); then + libc_cv_sparc_tls=yes +else + libc_cv_sparc_tls=no +fi +rm -f conftest*]) +if test $libc_cv_sparc_tls = no; then + AC_MSG_ERROR([the assembler must support TLS]) +fi + +# Check for a GCC emitting GOTDATA relocations. +AC_CACHE_CHECK(for sparc gcc GOTDATA reloc support, libc_cv_sparc_gcc_gotdata, [dnl +changequote(,)dnl +cat > conftest.c <<\EOF +int data; +int foo(void) +{ + return data; +} +EOF +changequote([,])dnl +dnl +libc_cv_sparc_gcc_gotdata=no +if AC_TRY_COMMAND(${CC-cc} -S $CFLAGS -O2 -fPIC conftest.c 1>&AS_MESSAGE_LOG_FD); then + if grep -q 'gdop_hix22' conftest.s \ + && grep -q 'gdop_lox10' conftest.s; then + libc_cv_sparc_gcc_gotdata=yes + fi +fi +rm -f conftest*]) +if test $libc_cv_sparc_gcc_gotdata = yes; then + AC_DEFINE(HAVE_GCC_GOTDATA) +fi + +if test $libc_cv_sparc_gcc_gotdata = yes; then + AC_DEFINE(PI_STATIC_AND_HIDDEN) +fi diff --git a/libc/sysdeps/sparc/elf/configure b/libc/sysdeps/sparc/elf/configure deleted file mode 100644 index 355344417..000000000 --- a/libc/sysdeps/sparc/elf/configure +++ /dev/null @@ -1,177 +0,0 @@ - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -# This file is generated from configure.in by Autoconf. DO NOT EDIT! - # Local configure fragment for sysdeps/sparc/elf. - -# Check for support of thread-local storage handling in assembler and linker. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sparc TLS support" >&5 -$as_echo_n "checking for sparc TLS support... " >&6; } -if ${libc_cv_sparc_tls+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat > conftest.S <<\EOF - .section ".tdata", "awT", @progbits - .globl foo -foo: .word 1 - .section ".tbss", "awT", @nobits - .globl bar -bar: .skip 4 - .text -baz: sethi %tgd_hi22(foo), %l1 - add %l1, %tgd_lo10(foo), %l1 - add %l7, %l1, %o0, %tgd_add(foo) - call __tls_get_addr, %tgd_call(foo) - sethi %tldm_hi22(bar), %l1 - add %l1, %tldm_lo10(bar), %l1 - add %l7, %l1, %o0, %tldm_add(bar) - call __tls_get_addr, %tldm_call(bar) - sethi %tldo_hix22(bar), %l1 - xor %l1, %tldo_lox10(bar), %l1 - add %o0, %l1, %l1, %tldo_add(bar) - sethi %tie_hi22(foo), %l1 - add %l1, %tie_lo10(foo), %l1 -#ifdef __arch64__ - ldx [%l7 + %l1], %l1, %tie_ldx(foo) -#else - ld [%l7 + %l1], %l1, %tie_ld(foo) -#endif - add %g7, %l1, %l1, %tie_add(foo) - sethi %tle_hix22(foo), %l1 - xor %l1, %tle_lox10(foo), %l1 -EOF -if { ac_try='${CC-cc} -c $CFLAGS conftest.S 1>&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 - (eval $ac_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - libc_cv_sparc_tls=yes -else - libc_cv_sparc_tls=no -fi -rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_sparc_tls" >&5 -$as_echo "$libc_cv_sparc_tls" >&6; } -if test $libc_cv_sparc_tls = no; then - as_fn_error $? "the assembler must support TLS" "$LINENO" 5 -fi - -# Check for a GCC emitting GOTDATA relocations. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sparc gcc GOTDATA reloc support" >&5 -$as_echo_n "checking for sparc gcc GOTDATA reloc support... " >&6; } -if ${libc_cv_sparc_gcc_gotdata+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat > conftest.c <<\EOF -int data; -int foo(void) -{ - return data; -} -EOF -libc_cv_sparc_gcc_gotdata=no -if { ac_try='${CC-cc} -S $CFLAGS -O2 -fPIC conftest.c 1>&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 - (eval $ac_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - if grep -q 'gdop_hix22' conftest.s \ - && grep -q 'gdop_lox10' conftest.s; then - libc_cv_sparc_gcc_gotdata=yes - fi -fi -rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_sparc_gcc_gotdata" >&5 -$as_echo "$libc_cv_sparc_gcc_gotdata" >&6; } -if test $libc_cv_sparc_gcc_gotdata = yes; then - $as_echo "#define HAVE_GCC_GOTDATA 1" >>confdefs.h - -fi - -if test $libc_cv_sparc_gcc_gotdata = yes; then - $as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h - -fi diff --git a/libc/sysdeps/sparc/elf/configure.in b/libc/sysdeps/sparc/elf/configure.in deleted file mode 100644 index ec683455c..000000000 --- a/libc/sysdeps/sparc/elf/configure.in +++ /dev/null @@ -1,75 +0,0 @@ -GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. -# Local configure fragment for sysdeps/sparc/elf. - -# Check for support of thread-local storage handling in assembler and linker. -AC_CACHE_CHECK(for sparc TLS support, libc_cv_sparc_tls, [dnl -changequote(,)dnl -cat > conftest.S <<\EOF - .section ".tdata", "awT", @progbits - .globl foo -foo: .word 1 - .section ".tbss", "awT", @nobits - .globl bar -bar: .skip 4 - .text -baz: sethi %tgd_hi22(foo), %l1 - add %l1, %tgd_lo10(foo), %l1 - add %l7, %l1, %o0, %tgd_add(foo) - call __tls_get_addr, %tgd_call(foo) - sethi %tldm_hi22(bar), %l1 - add %l1, %tldm_lo10(bar), %l1 - add %l7, %l1, %o0, %tldm_add(bar) - call __tls_get_addr, %tldm_call(bar) - sethi %tldo_hix22(bar), %l1 - xor %l1, %tldo_lox10(bar), %l1 - add %o0, %l1, %l1, %tldo_add(bar) - sethi %tie_hi22(foo), %l1 - add %l1, %tie_lo10(foo), %l1 -#ifdef __arch64__ - ldx [%l7 + %l1], %l1, %tie_ldx(foo) -#else - ld [%l7 + %l1], %l1, %tie_ld(foo) -#endif - add %g7, %l1, %l1, %tie_add(foo) - sethi %tle_hix22(foo), %l1 - xor %l1, %tle_lox10(foo), %l1 -EOF -changequote([,])dnl -dnl -if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.S 1>&AS_MESSAGE_LOG_FD); then - libc_cv_sparc_tls=yes -else - libc_cv_sparc_tls=no -fi -rm -f conftest*]) -if test $libc_cv_sparc_tls = no; then - AC_MSG_ERROR([the assembler must support TLS]) -fi - -# Check for a GCC emitting GOTDATA relocations. -AC_CACHE_CHECK(for sparc gcc GOTDATA reloc support, libc_cv_sparc_gcc_gotdata, [dnl -changequote(,)dnl -cat > conftest.c <<\EOF -int data; -int foo(void) -{ - return data; -} -EOF -changequote([,])dnl -dnl -libc_cv_sparc_gcc_gotdata=no -if AC_TRY_COMMAND(${CC-cc} -S $CFLAGS -O2 -fPIC conftest.c 1>&AS_MESSAGE_LOG_FD); then - if grep -q 'gdop_hix22' conftest.s \ - && grep -q 'gdop_lox10' conftest.s; then - libc_cv_sparc_gcc_gotdata=yes - fi -fi -rm -f conftest*]) -if test $libc_cv_sparc_gcc_gotdata = yes; then - AC_DEFINE(HAVE_GCC_GOTDATA) -fi - -if test $libc_cv_sparc_gcc_gotdata = yes; then - AC_DEFINE(PI_STATIC_AND_HIDDEN) -fi diff --git a/libc/sysdeps/sparc/fpu/libm-test-ulps b/libc/sysdeps/sparc/fpu/libm-test-ulps index c07a26a4d..60a53aa43 100644 --- a/libc/sysdeps/sparc/fpu/libm-test-ulps +++ b/libc/sysdeps/sparc/fpu/libm-test-ulps @@ -525,6 +525,9 @@ float: 1 ifloat: 1 # cexp +Test "Imaginary part of: cexp (-10000 + 0x1p16383 i) == 1.045876464564882298442774542991176546722e-4343 + 4.421154026488516836023811173959413420548e-4344 i": +ildouble: 1 +ldouble: 1 Test "Real part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i": ildouble: 1 ldouble: 1 @@ -533,12 +536,55 @@ float: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: cexp (-720 + 0.75 i) == 1.486960657116368433685753325516638551722e-313 + 1.385247284245720590980701226843815229385e-313 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i": +double: 1 +idouble: 1 Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i": float: 1 ifloat: 1 Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i": ildouble: 1 ldouble: 1 +Test "Imaginary part of: cexp (1440 + 0x1p-1074 i) == inf + 1.196295853897226111293303155636183216483e302 i plus overflow exception": +double: 1 +idouble: 1 +Test "Imaginary part of: cexp (22730 + 0x1p-16434 i) == inf + 2.435706297811211974162115164702304105374e4924 i plus overflow exception": +ildouble: 1 +ldouble: 1 +Test "Real part of: cexp (50 + 0x1p127 i) == 4.053997150228616856622417636046265337193e21 + 3.232070315463388524466674772633810238819e21 i": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (50 + 0x1p127 i) == 4.053997150228616856622417636046265337193e21 + 3.232070315463388524466674772633810238819e21 i": +double: 1 +idouble: 1 +Test "Real part of: cexp (500 + 0x1p1023 i) == -1.159886268932754433233243794561351783426e217 + 7.904017694554466595359379965081774849708e216 i": +double: 1 +idouble: 1 +Test "Real part of: cexp (709.8125 + 0.75 i) == 1.355121963080879535248452862759108365762e308 + 1.262426823598609432507811340856186873507e308 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cexp (709.8125 + 0.75 i) == 1.355121963080879535248452862759108365762e308 + 1.262426823598609432507811340856186873507e308 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cexp (88.75 + 0.75 i) == 2.558360358486542817001900410314204322891e38 + 2.383359453227311447654736314679677655100e38 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (88.75 + 0.75 i) == 2.558360358486542817001900410314204322891e38 + 2.383359453227311447654736314679677655100e38 i": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 # clog Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i": @@ -685,8 +731,6 @@ ifloat: 1 Test "cos (M_PI_6l * 2.0) == 0.5": double: 1 idouble: 1 -ildouble: 1 -ldouble: 1 Test "cos (M_PI_6l * 4.0) == -0.5": double: 2 float: 1 @@ -699,8 +743,6 @@ ldouble: 1 Test "cos_downward (1) == 0.5403023058681397174009366074429766037323": float: 1 ifloat: 1 -ildouble: 1 -ldouble: 1 Test "cos_downward (10) == -0.8390715290764524522588639478240648345199": ildouble: 1 ldouble: 1 @@ -717,8 +759,6 @@ ldouble: 1 Test "cos_downward (4) == -0.6536436208636119146391681830977503814241": float: 1 ifloat: 1 -ildouble: 1 -ldouble: 1 Test "cos_downward (5) == 0.2836621854632262644666391715135573083344": float: 1 ifloat: 1 @@ -744,9 +784,6 @@ float: 1 ifloat: 1 # cos_towardzero -Test "cos_towardzero (1) == 0.5403023058681397174009366074429766037323": -ildouble: 1 -ldouble: 1 Test "cos_towardzero (10) == -0.8390715290764524522588639478240648345199": ildouble: 1 ldouble: 1 @@ -760,9 +797,6 @@ float: 1 ifloat: 1 ildouble: 1 ldouble: 1 -Test "cos_towardzero (4) == -0.6536436208636119146391681830977503814241": -ildouble: 1 -ldouble: 1 Test "cos_towardzero (5) == 0.2836621854632262644666391715135573083344": float: 1 ifloat: 1 @@ -783,9 +817,15 @@ ildouble: 2 ldouble: 2 # cos_upward +Test "cos_upward (1) == 0.5403023058681397174009366074429766037323": +ildouble: 1 +ldouble: 1 Test "cos_upward (10) == -0.8390715290764524522588639478240648345199": float: 1 ifloat: 1 +Test "cos_upward (4) == -0.6536436208636119146391681830977503814241": +ildouble: 1 +ldouble: 1 Test "cos_upward (6) == 0.9601702866503660205456522979229244054519": float: 1 ifloat: 1 @@ -863,9 +903,6 @@ ifloat: 4 ildouble: 4 ldouble: 4 Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i": -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i": ildouble: 1 ldouble: 1 Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i": @@ -873,8 +910,8 @@ double: 2 float: 3 idouble: 2 ifloat: 3 -ildouble: 10 -ldouble: 10 +ildouble: 11 +ldouble: 11 Test "Real part of: cpow (2 + 0 i, 10 + 0 i) == 1024.0 + 0.0 i": ildouble: 2 ldouble: 2 @@ -883,8 +920,8 @@ double: 1 float: 4 idouble: 1 ifloat: 4 -ildouble: 3 -ldouble: 3 +ildouble: 2 +ldouble: 2 Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": float: 2 ifloat: 2 @@ -991,6 +1028,11 @@ ifloat: 1 Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": double: 1 idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": +ildouble: 1 +ldouble: 1 # erf Test "erf (1.25) == 0.922900128256458230136523481197281140": @@ -1039,9 +1081,9 @@ ildouble: 1 ldouble: 1 # exp2 -Test "exp2 (10) == 1024": -ildouble: 2 -ldouble: 2 +Test "exp2 (100.5) == 1.792728671193156477399422023278661496394e+30": +ildouble: 1 +ldouble: 1 # exp_downward Test "exp_downward (2) == e^2": @@ -1412,15 +1454,7 @@ ifloat: 1 ildouble: 1 ldouble: 1 -# sin -Test "sin (0x1p1023) == 0.5631277798508840134529434079444683477104": -ildouble: 1 -ldouble: 1 - # sin_downward -Test "sin_downward (1) == 0.8414709848078965066525023216302989996226": -ildouble: 1 -ldouble: 1 Test "sin_downward (10) == -0.5440211108893698134047476618513772816836": float: 1 ifloat: 1 @@ -1443,9 +1477,10 @@ ldouble: 1 Test "sin_downward (6) == -0.2794154981989258728115554466118947596280": float: 1 ifloat: 1 +Test "sin_downward (8) == 0.9893582466233817778081235982452886721164": ildouble: 1 ldouble: 1 -Test "sin_downward (8) == 0.9893582466233817778081235982452886721164": +Test "sin_downward (9) == 0.4121184852417565697562725663524351793439": ildouble: 1 ldouble: 1 @@ -1453,17 +1488,9 @@ ldouble: 1 Test "sin_tonearest (1) == 0.8414709848078965066525023216302989996226": float: 1 ifloat: 1 -ildouble: 1 -ldouble: 1 Test "sin_tonearest (3) == 0.1411200080598672221007448028081102798469": ildouble: 1 ldouble: 1 -Test "sin_tonearest (6) == -0.2794154981989258728115554466118947596280": -ildouble: 1 -ldouble: 1 -Test "sin_tonearest (9) == 0.4121184852417565697562725663524351793439": -ildouble: 1 -ldouble: 1 # sin_towardzero Test "sin_towardzero (1) == 0.8414709848078965066525023216302989996226": @@ -1481,22 +1508,21 @@ ldouble: 1 Test "sin_towardzero (4) == -0.7568024953079282513726390945118290941359": float: 1 ifloat: 1 +ildouble: 1 +ldouble: 1 Test "sin_towardzero (5) == -0.9589242746631384688931544061559939733525": float: 1 ifloat: 1 ildouble: 1 ldouble: 1 -Test "sin_towardzero (6) == -0.2794154981989258728115554466118947596280": -ildouble: 1 -ldouble: 1 Test "sin_towardzero (8) == 0.9893582466233817778081235982452886721164": ildouble: 1 ldouble: 1 Test "sin_towardzero (9) == 0.4121184852417565697562725663524351793439": float: 1 ifloat: 1 -ildouble: 2 -ldouble: 2 +ildouble: 1 +ldouble: 1 # sin_upward Test "sin_upward (1) == 0.8414709848078965066525023216302989996226": @@ -1516,6 +1542,7 @@ ldouble: 1 Test "sin_upward (4) == -0.7568024953079282513726390945118290941359": float: 1 ifloat: 1 +Test "sin_upward (6) == -0.2794154981989258728115554466118947596280": ildouble: 1 ldouble: 1 Test "sin_upward (7) == 0.6569865987187890903969990915936351779369": @@ -1524,25 +1551,16 @@ ldouble: 1 Test "sin_upward (9) == 0.4121184852417565697562725663524351793439": float: 1 ifloat: 1 -ildouble: 1 -ldouble: 1 # sincos -Test "sincos (0x1p1023, &sin_res, &cos_res) puts 0.5631277798508840134529434079444683477104 in sin_res": -ildouble: 1 -ldouble: 1 Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": double: 1 idouble: 1 -ildouble: 1 -ldouble: 1 Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": double: 1 float: 1 idouble: 1 ifloat: 1 -ildouble: 1 -ldouble: 1 Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": float: 1 ifloat: 1 @@ -2014,14 +2032,18 @@ ildouble: 1 ldouble: 1 Function: Real part of "cexp": +double: 2 float: 1 +idouble: 2 ifloat: 1 ildouble: 1 ldouble: 1 Function: Imaginary part of "cexp": -float: 1 -ifloat: 1 +double: 1 +float: 2 +idouble: 1 +ifloat: 2 ildouble: 1 ldouble: 1 @@ -2104,8 +2126,8 @@ double: 2 float: 4 idouble: 2 ifloat: 4 -ildouble: 10 -ldouble: 10 +ildouble: 11 +ldouble: 11 Function: Imaginary part of "cpow": double: 2 @@ -2196,8 +2218,8 @@ ildouble: 1 ldouble: 1 Function: "exp2": -ildouble: 2 -ldouble: 2 +ildouble: 1 +ldouble: 1 Function: "exp_downward": float: 1 @@ -2297,10 +2319,6 @@ ifloat: 1 ildouble: 1 ldouble: 1 -Function: "sin": -ildouble: 1 -ldouble: 1 - Function: "sin_downward": float: 1 ifloat: 1 @@ -2316,8 +2334,8 @@ ldouble: 1 Function: "sin_towardzero": float: 1 ifloat: 1 -ildouble: 2 -ldouble: 2 +ildouble: 1 +ldouble: 1 Function: "sin_upward": float: 2 diff --git a/libc/sysdeps/sparc/sparc32/Makefile b/libc/sysdeps/sparc/sparc32/Makefile index fb1adafcd..fb7132ee9 100644 --- a/libc/sysdeps/sparc/sparc32/Makefile +++ b/libc/sysdeps/sparc/sparc32/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 1991-1998, 2000, 2011 Free Software Foundation, Inc. +# Copyright (C) 1991-1998, 2000, 2011, 2012 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or diff --git a/libc/sysdeps/sparc/sparc32/elf/Makefile b/libc/sysdeps/sparc/sparc32/elf/Makefile deleted file mode 100644 index a995e6cdf..000000000 --- a/libc/sysdeps/sparc/sparc32/elf/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -# Sparc/ELF specific definitions. - -# The assembler on SPARC needs the -fPIC flag even when it's assembler code. -ASFLAGS-.os = -fPIC diff --git a/libc/sysdeps/sparc/sparc32/elf/start.S b/libc/sysdeps/sparc/sparc32/elf/start.S deleted file mode 100644 index 1efa8e839..000000000 --- a/libc/sysdeps/sparc/sparc32/elf/start.S +++ /dev/null @@ -1,100 +0,0 @@ -/* Startup code for elf32-sparc - Copyright (C) 1997, 1998, 2002, 2004, 2007, 2009 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Richard Henderson , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - In addition to the permissions in the GNU Lesser General Public - License, the Free Software Foundation gives you unlimited - permission to link the compiled version of this file with other - programs, and to distribute those programs without any restriction - coming from the use of this file. (The GNU Lesser General Public - License restrictions do apply in other respects; for example, they - cover modification of the file, and distribution when not linked - into another program.) - - Note that people who make modified versions of this file are not - obligated to grant this special exception for their modified - versions; it is their choice whether to do so. The GNU Lesser - General Public License gives permission to release a modified - version without this exception; this exception also makes it - possible to release a modified version which carries forward this - exception. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include - - - .section ".text" - .align 4 - .global _start - .type _start,#function -_start: -#ifdef SHARED - SETUP_PIC_REG(l7) -#endif - - /* Terminate the stack frame, and reserve space for functions to - drop their arguments. */ - mov %g0, %fp - sub %sp, 6*4, %sp - - /* Extract the arguments and environment as encoded on the stack. The - argument info starts after one register window (16 words) past the SP. */ - ld [%sp+22*4], %o1 - add %sp, 23*4, %o2 - - /* Load the addresses of the user entry points. */ -#ifndef SHARED - sethi %hi(main), %o0 - sethi %hi(__libc_csu_init), %o3 - sethi %hi(__libc_csu_fini), %o4 - or %o0, %lo(main), %o0 - or %o3, %lo(__libc_csu_init), %o3 - or %o4, %lo(__libc_csu_fini), %o4 -#else - sethi %gdop_hix22(main), %o0 - sethi %gdop_hix22(__libc_csu_init), %o3 - sethi %gdop_hix22(__libc_csu_fini), %o4 - xor %o0, %gdop_lox10(main), %o0 - xor %o3, %gdop_lox10(__libc_csu_init), %o3 - xor %o4, %gdop_lox10(__libc_csu_fini), %o4 - ld [%l7 + %o0], %o0, %gdop(main) - ld [%l7 + %o3], %o3, %gdop(__libc_csu_init) - ld [%l7 + %o4], %o4, %gdop(__libc_csu_fini) -#endif - - /* When starting a binary via the dynamic linker, %g1 contains the - address of the shared library termination function, which will be - registered with atexit(). If we are statically linked, this will - be NULL. */ - mov %g1, %o5 - - /* Let libc do the rest of the initialization, and call main. */ - call __libc_start_main - nop - - /* Die very horribly if exit returns. */ - unimp - - .size _start, .-_start - -/* Define a symbol for the first piece of initialized data. */ - .data - .globl __data_start -__data_start: - .long 0 -weak_alias (__data_start, data_start) diff --git a/libc/sysdeps/sparc/sparc32/start.S b/libc/sysdeps/sparc/sparc32/start.S new file mode 100644 index 000000000..1efa8e839 --- /dev/null +++ b/libc/sysdeps/sparc/sparc32/start.S @@ -0,0 +1,100 @@ +/* Startup code for elf32-sparc + Copyright (C) 1997, 1998, 2002, 2004, 2007, 2009 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Richard Henderson , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file with other + programs, and to distribute those programs without any restriction + coming from the use of this file. (The GNU Lesser General Public + License restrictions do apply in other respects; for example, they + cover modification of the file, and distribution when not linked + into another program.) + + Note that people who make modified versions of this file are not + obligated to grant this special exception for their modified + versions; it is their choice whether to do so. The GNU Lesser + General Public License gives permission to release a modified + version without this exception; this exception also makes it + possible to release a modified version which carries forward this + exception. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + + + .section ".text" + .align 4 + .global _start + .type _start,#function +_start: +#ifdef SHARED + SETUP_PIC_REG(l7) +#endif + + /* Terminate the stack frame, and reserve space for functions to + drop their arguments. */ + mov %g0, %fp + sub %sp, 6*4, %sp + + /* Extract the arguments and environment as encoded on the stack. The + argument info starts after one register window (16 words) past the SP. */ + ld [%sp+22*4], %o1 + add %sp, 23*4, %o2 + + /* Load the addresses of the user entry points. */ +#ifndef SHARED + sethi %hi(main), %o0 + sethi %hi(__libc_csu_init), %o3 + sethi %hi(__libc_csu_fini), %o4 + or %o0, %lo(main), %o0 + or %o3, %lo(__libc_csu_init), %o3 + or %o4, %lo(__libc_csu_fini), %o4 +#else + sethi %gdop_hix22(main), %o0 + sethi %gdop_hix22(__libc_csu_init), %o3 + sethi %gdop_hix22(__libc_csu_fini), %o4 + xor %o0, %gdop_lox10(main), %o0 + xor %o3, %gdop_lox10(__libc_csu_init), %o3 + xor %o4, %gdop_lox10(__libc_csu_fini), %o4 + ld [%l7 + %o0], %o0, %gdop(main) + ld [%l7 + %o3], %o3, %gdop(__libc_csu_init) + ld [%l7 + %o4], %o4, %gdop(__libc_csu_fini) +#endif + + /* When starting a binary via the dynamic linker, %g1 contains the + address of the shared library termination function, which will be + registered with atexit(). If we are statically linked, this will + be NULL. */ + mov %g1, %o5 + + /* Let libc do the rest of the initialization, and call main. */ + call __libc_start_main + nop + + /* Die very horribly if exit returns. */ + unimp + + .size _start, .-_start + +/* Define a symbol for the first piece of initialized data. */ + .data + .globl __data_start +__data_start: + .long 0 +weak_alias (__data_start, data_start) diff --git a/libc/sysdeps/sparc/sparc64/elf/Makefile b/libc/sysdeps/sparc/sparc64/elf/Makefile deleted file mode 100644 index a995e6cdf..000000000 --- a/libc/sysdeps/sparc/sparc64/elf/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -# Sparc/ELF specific definitions. - -# The assembler on SPARC needs the -fPIC flag even when it's assembler code. -ASFLAGS-.os = -fPIC diff --git a/libc/sysdeps/sparc/sparc64/elf/start.S b/libc/sysdeps/sparc/sparc64/elf/start.S deleted file mode 100644 index 7924fb482..000000000 --- a/libc/sysdeps/sparc/sparc64/elf/start.S +++ /dev/null @@ -1,101 +0,0 @@ -/* Startup code for elf64-sparc - Copyright (C) 1997, 1998, 2002, 2004, 2007, 2009 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Richard Henderson , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - In addition to the permissions in the GNU Lesser General Public - License, the Free Software Foundation gives you unlimited - permission to link the compiled version of this file with other - programs, and to distribute those programs without any restriction - coming from the use of this file. (The GNU Lesser General Public - License restrictions do apply in other respects; for example, they - cover modification of the file, and distribution when not linked - into another program.) - - Note that people who make modified versions of this file are not - obligated to grant this special exception for their modified - versions; it is their choice whether to do so. The GNU Lesser - General Public License gives permission to release a modified - version without this exception; this exception also makes it - possible to release a modified version which carries forward this - exception. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include - - - .section ".text" - .align 4 - .global _start - .type _start,#function -_start: -#ifdef SHARED - SETUP_PIC_REG(l7) -#endif - - /* Terminate the stack frame, and reserve space for functions to - drop their arguments. */ - mov %g0, %fp - sub %sp, 6*8, %sp - - /* Extract the arguments and environment as encoded on the stack. The - argument info starts after one register window (16 words) past the SP, - plus the bias we added, plus the magic v9 STACK_BIAS. */ - ldx [%sp+STACK_BIAS+22*8], %o1 - add %sp, STACK_BIAS+23*8, %o2 - - /* Load the addresses of the user entry points. */ -#ifndef SHARED - sethi %hi(main), %o0 - sethi %hi(__libc_csu_init), %o3 - sethi %hi(__libc_csu_fini), %o4 - or %o0, %lo(main), %o0 - or %o3, %lo(__libc_csu_init), %o3 - or %o4, %lo(__libc_csu_fini), %o4 -#else - sethi %gdop_hix22(main), %o0 - sethi %gdop_hix22(__libc_csu_init), %o3 - sethi %gdop_hix22(__libc_csu_fini), %o4 - xor %o0, %gdop_lox10(main), %o0 - xor %o3, %gdop_lox10(__libc_csu_init), %o3 - xor %o4, %gdop_lox10(__libc_csu_fini), %o4 - ldx [%l7 + %o0], %o0, %gdop(main) - ldx [%l7 + %o3], %o3, %gdop(__libc_csu_init) - ldx [%l7 + %o4], %o4, %gdop(__libc_csu_fini) -#endif - - /* When starting a binary via the dynamic linker, %g1 contains the - address of the shared library termination function, which will be - registered with atexit(). If we are statically linked, this will - be NULL. */ - mov %g1, %o5 - - /* Let libc do the rest of the initialization, and call main. */ - call __libc_start_main - nop - - /* Die very horribly if exit returns. */ - illtrap 0 - - .size _start, .-_start - -/* Define a symbol for the first piece of initialized data. */ - .data - .globl __data_start -__data_start: - .long 0 -weak_alias (__data_start, data_start) diff --git a/libc/sysdeps/sparc/sparc64/start.S b/libc/sysdeps/sparc/sparc64/start.S new file mode 100644 index 000000000..7924fb482 --- /dev/null +++ b/libc/sysdeps/sparc/sparc64/start.S @@ -0,0 +1,101 @@ +/* Startup code for elf64-sparc + Copyright (C) 1997, 1998, 2002, 2004, 2007, 2009 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Richard Henderson , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file with other + programs, and to distribute those programs without any restriction + coming from the use of this file. (The GNU Lesser General Public + License restrictions do apply in other respects; for example, they + cover modification of the file, and distribution when not linked + into another program.) + + Note that people who make modified versions of this file are not + obligated to grant this special exception for their modified + versions; it is their choice whether to do so. The GNU Lesser + General Public License gives permission to release a modified + version without this exception; this exception also makes it + possible to release a modified version which carries forward this + exception. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + + + .section ".text" + .align 4 + .global _start + .type _start,#function +_start: +#ifdef SHARED + SETUP_PIC_REG(l7) +#endif + + /* Terminate the stack frame, and reserve space for functions to + drop their arguments. */ + mov %g0, %fp + sub %sp, 6*8, %sp + + /* Extract the arguments and environment as encoded on the stack. The + argument info starts after one register window (16 words) past the SP, + plus the bias we added, plus the magic v9 STACK_BIAS. */ + ldx [%sp+STACK_BIAS+22*8], %o1 + add %sp, STACK_BIAS+23*8, %o2 + + /* Load the addresses of the user entry points. */ +#ifndef SHARED + sethi %hi(main), %o0 + sethi %hi(__libc_csu_init), %o3 + sethi %hi(__libc_csu_fini), %o4 + or %o0, %lo(main), %o0 + or %o3, %lo(__libc_csu_init), %o3 + or %o4, %lo(__libc_csu_fini), %o4 +#else + sethi %gdop_hix22(main), %o0 + sethi %gdop_hix22(__libc_csu_init), %o3 + sethi %gdop_hix22(__libc_csu_fini), %o4 + xor %o0, %gdop_lox10(main), %o0 + xor %o3, %gdop_lox10(__libc_csu_init), %o3 + xor %o4, %gdop_lox10(__libc_csu_fini), %o4 + ldx [%l7 + %o0], %o0, %gdop(main) + ldx [%l7 + %o3], %o3, %gdop(__libc_csu_init) + ldx [%l7 + %o4], %o4, %gdop(__libc_csu_fini) +#endif + + /* When starting a binary via the dynamic linker, %g1 contains the + address of the shared library termination function, which will be + registered with atexit(). If we are statically linked, this will + be NULL. */ + mov %g1, %o5 + + /* Let libc do the rest of the initialization, and call main. */ + call __libc_start_main + nop + + /* Die very horribly if exit returns. */ + illtrap 0 + + .size _start, .-_start + +/* Define a symbol for the first piece of initialized data. */ + .data + .globl __data_start +__data_start: + .long 0 +weak_alias (__data_start, data_start) -- cgit v1.2.3