diff options
author | Jakub Jelinek <jakub@redhat.com> | 2007-10-17 20:24:59 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2007-10-17 20:24:59 +0000 |
commit | e2ff293ba10d38af29b08307d6bf90d11143596f (patch) | |
tree | 4f57da23acb1a50b8fcc4940d173195fd44d21d3 /nptl | |
parent | 378e8bab9688c447e7567b5066ef26482a4fd8f1 (diff) |
Updated to fedora-glibc-20071017T2007
Diffstat (limited to 'nptl')
-rw-r--r-- | nptl/ChangeLog | 10 | ||||
-rw-r--r-- | nptl/init.c | 2 | ||||
-rwxr-xr-x | nptl/sysdeps/pthread/configure | 82 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S | 21 |
4 files changed, 69 insertions, 46 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index a5bce5f682..62e6ae3120 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,13 @@ +2007-10-17 Jakub Jelinek <jakub@redhat.com> + + * sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__old_sem_post): New + routine instead of an alias to __new_sem_post. + +2007-10-15 Jakub Jelinek <jakub@redhat.com> + + * init.c (__pthread_initialize_minimal): Initialize word to appease + valgrind. + 2007-10-10 Jakub Jelinek <jakub@redhat.com> * sysdeps/pthread/bits/libc-lock.h (__libc_rwlock_init): Inside of diff --git a/nptl/init.c b/nptl/init.c index ffb50b4cca..d445de0795 100644 --- a/nptl/init.c +++ b/nptl/init.c @@ -284,7 +284,7 @@ __pthread_initialize_minimal_internal (void) /* Private futexes are always used (at least internally) so that doing the test once this early is beneficial. */ { - int word; + int word = 0; word = INTERNAL_SYSCALL (futex, err, 3, &word, FUTEX_WAKE | FUTEX_PRIVATE_FLAG, 1); if (!INTERNAL_SYSCALL_ERROR_P (word, err)) diff --git a/nptl/sysdeps/pthread/configure b/nptl/sysdeps/pthread/configure index 3cbe55e14f..2396dbf9bc 100755 --- a/nptl/sysdeps/pthread/configure +++ b/nptl/sysdeps/pthread/configure @@ -24,8 +24,8 @@ echo "$as_me: error: CFI directive support in assembler is required" >&2;} fi -echo "$as_me:$LINENO: checking for forced unwind support" >&5 -echo $ECHO_N "checking for forced unwind support... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for forced unwind support" >&5 +echo $ECHO_N "checking for forced unwind support... $ECHO_C" >&6; } if test "${libc_cv_forced_unwind+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -48,39 +48,36 @@ _Unwind_GetCFA (context) } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then libc_cv_forced_unwind=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -libc_cv_forced_unwind=no + libc_cv_forced_unwind=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $libc_cv_forced_unwind" >&5 -echo "${ECHO_T}$libc_cv_forced_unwind" >&6 +{ echo "$as_me:$LINENO: result: $libc_cv_forced_unwind" >&5 +echo "${ECHO_T}$libc_cv_forced_unwind" >&6; } if test $libc_cv_forced_unwind = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_FORCED_UNWIND 1 @@ -88,8 +85,8 @@ _ACEOF old_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror -fexceptions" - echo "$as_me:$LINENO: checking for C cleanup handling" >&5 -echo $ECHO_N "checking for C cleanup handling... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for C cleanup handling" >&5 +echo $ECHO_N "checking for C cleanup handling... $ECHO_C" >&6; } if test "${libc_cv_c_cleanup+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -113,39 +110,36 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then libc_cv_c_cleanup=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -libc_cv_c_cleanup=no + libc_cv_c_cleanup=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $libc_cv_c_cleanup" >&5 -echo "${ECHO_T}$libc_cv_c_cleanup" >&6 +{ echo "$as_me:$LINENO: result: $libc_cv_c_cleanup" >&5 +echo "${ECHO_T}$libc_cv_c_cleanup" >&6; } CFLAGS="$old_CFLAGS" if test $libc_cv_c_cleanup = no; then { { echo "$as_me:$LINENO: error: the compiler must support C cleanup handling" >&5 diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S index 8f656b4e0f..ac045b6e34 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S @@ -86,7 +86,26 @@ __new_sem_post: versioned_symbol(libpthread, __new_sem_post, sem_post, GLIBC_2_1) #if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1) .global __old_sem_post -__old_sem_post = __new_sem_post + .type __old_sem_post,@function +__old_sem_post: + pushl %ebx + + movl 8(%esp), %ebx + LOCK + addl $1, (%ebx) + + movl $SYS_futex, %eax + movl $FUTEX_WAKE, %ecx + movl $1, %edx + ENTER_KERNEL + + testl %eax, %eax + js 1b + + xorl %eax, %eax + popl %ebx + ret + .size __old_sem_post,.-__old_sem_post compat_symbol(libpthread, __old_sem_post, sem_post, GLIBC_2_0) #endif |