* sysdeps/i386/dl-trampoline.S (_dl_runtime_resolve): Avoid
authorUlrich Drepper <drepper@redhat.com>
Fri, 24 Aug 2007 02:03:29 +0000 (02:03 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 24 Aug 2007 02:03:29 +0000 (02:03 +0000)
implicit atomic operation when storing function pointer.
(_dl_runtime_profile): Likewise.

ChangeLog
sysdeps/i386/dl-trampoline.S

index f02bd4b..58df898 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-08-23  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/i386/dl-trampoline.S (_dl_runtime_resolve): Avoid
+       implicit atomic operation when storing function pointer.
+       (_dl_runtime_profile): Likewise.
+
 2007-08-17  Jakub Jelinek  <jakub@redhat.com>
 
        * nis/nis_table.c (nis_list): Don't fail if __follow_path returned
index f991797..5856a2f 100644 (file)
@@ -37,10 +37,10 @@ _dl_runtime_resolve:
        call _dl_fixup          # Call resolver.
        popl %edx               # Get register content back.
        cfi_adjust_cfa_offset (-4)
-       popl %ecx
-       cfi_adjust_cfa_offset (-4)
-       xchgl %eax, (%esp)      # Get %eax contents end store function address.
-       ret $                 # Jump to function address.
+       movl (%esp), %ecx
+       movl %eax, (%esp)       # Store the function address.
+       movl 4(%esp), %eax
+       ret $12                 # Jump to function address.
        cfi_endproc
        .size _dl_runtime_resolve, .-_dl_runtime_resolve
 
@@ -83,10 +83,10 @@ _dl_runtime_profile:
        cfi_adjust_cfa_offset (-4)
        popl %edx               # Get register content back.
        cfi_adjust_cfa_offset (-4)
-       popl %ecx
-       cfi_adjust_cfa_offset (-4)
-       xchgl %eax, (%esp)      # Get %eax contents end store function address.
-       ret $16                 # Jump to function address.
+       movl (%esp), %ecx
+       movl %eax, (%esp)       # Store the function address.
+       movl 4(%esp), %eax
+       ret $20                 # Jump to function address.
 
        /*
            +32     return address