[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[commits] r3253 - in /fsf/trunk/libc: ChangeLog sysdeps/i386/dl-trampoline.S sysdeps/x86_64/dl-trampoline.S
- To: commits@xxxxxxxxxx
- Subject: [commits] r3253 - in /fsf/trunk/libc: ChangeLog sysdeps/i386/dl-trampoline.S sysdeps/x86_64/dl-trampoline.S
- From: eglibc@xxxxxxxxxx
- Date: Fri, 24 Aug 2007 07:03:31 -0000
Author: eglibc
Date: Fri Aug 24 00:03:30 2007
New Revision: 3253
Log:
Import glibc-mainline for 2007-08-24
Modified:
fsf/trunk/libc/ChangeLog
fsf/trunk/libc/sysdeps/i386/dl-trampoline.S
fsf/trunk/libc/sysdeps/x86_64/dl-trampoline.S
Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Fri Aug 24 00:03:30 2007
@@ -1,3 +1,16 @@
+2007-08-23 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Correctly
+ align stack for call if pltexit is to be used.
+
+ [BZ #3924]
+ * sysdeps/i386/dl-trampoline.S (_dl_runtime_profile): Correctly
+ align for function call in case pltexit has to be called later.
+
+ * 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@xxxxxxxxxx>
* nis/nis_table.c (nis_list): Don't fail if __follow_path returned
Modified: fsf/trunk/libc/sysdeps/i386/dl-trampoline.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/dl-trampoline.S (original)
+++ fsf/trunk/libc/sysdeps/i386/dl-trampoline.S Fri Aug 24 00:03:30 2007
@@ -37,10 +37,10 @@
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 $8 # 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 @@
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
@@ -111,9 +111,10 @@
cfi_rel_offset (esi, 0)
leal 44(%esp), %esi
movl %ebx, %ecx
+ orl $4, %ebx # Increase frame size if necessary to align
+ # stack for the function call
movl %esp, %edi
subl %ebx, %edi
- andl $0xfffffff0, %edi # Align stack
movl %esp, %ebx
cfi_def_cfa_register (ebx)
movl %edi, %esp
Modified: fsf/trunk/libc/sysdeps/x86_64/dl-trampoline.S
==============================================================================
--- fsf/trunk/libc/sysdeps/x86_64/dl-trampoline.S (original)
+++ fsf/trunk/libc/sysdeps/x86_64/dl-trampoline.S Fri Aug 24 00:03:30 2007
@@ -1,5 +1,5 @@
/* PLT trampolines. x86-64 version.
- Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2007 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
@@ -120,13 +120,14 @@
leaq 104(%rsp), %rsi
movq %rsp, %rbx
cfi_def_cfa_register (1)
+ movq %r10, %rcx
+ addq $8, %r10
+ andq $0xfffffffffffffff0, %r10
subq %r10, %rsp
movq %rsp, %rdi
- movq %r10, %rcx
shrq $3, %rcx
rep
movsq
- andq $0xfffffffffffffff0, %rsp
movq 32(%rbx), %rcx
movq 40(%rbx), %rsi
movq 48(%rbx), %rdi