PERFORCE change 31748 for review
Peter Wemm
peter at FreeBSD.org
Fri May 23 18:11:56 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=31748
Change 31748 by peter at peter_hammer on 2003/05/23 18:11:46
Take a shot at _rtld_bind_start
Affected files ...
.. //depot/projects/hammer/libexec/rtld-elf/amd64/rtld_start.S#8 edit
Differences ...
==== //depot/projects/hammer/libexec/rtld-elf/amd64/rtld_start.S#8 (text+ko) ====
@@ -60,26 +60,52 @@
* We are careful to preserve all registers, even the the caller-save
* registers. That is because this code may be invoked by low-level
* assembly-language code that is not ABI-compliant.
+ *
+ * Stack map:
+ * obj 0x58
+ * reloff 0x50
+ * return addr 0x48
+ * rflags 0x40
+ * rax 0x38
+ * rdx 0x30
+ * rcx 0x28
+ * rdi 0x20
+ * r8 0x18
+ * r9 0x10
+ * r10 0x8
+ * r11 0x0
*/
.align 4
.globl _rtld_bind_start
.type _rtld_bind_start, at function
_rtld_bind_start:
- pushfq # Save eflags
+ pushfq # Save rflags
pushq %rax # Save %rax
pushq %rdx # Save %rdx
pushq %rcx # Save %rcx
- pushq 20(%rsp) # Copy reloff argument
- pushq 20(%rsp) # Copy obj argument
+ pushq %rsi # Save %rsi
+ pushq %rdi # Save %rdi
+ pushq %r8 # Save %r8
+ pushq %r9 # Save %r9
+ pushq %r10 # Save %r10
+ pushq %r11 # Save %r11
+
+ movq 0x58(%rsp),%rdi # Fetch obj argument
+ movq 0x50(%rsp),%rsi # Fetch reloff argument
call _rtld_bind at PLT # Transfer control to the binder
/* Now %rax contains the entry point of the function being called. */
- addq $16,%rsp # Discard binder arguments
- movq %rax,20(%rsp) # Store target over obj argument
+ movq %rax,0x58(%rsp) # Store target over obj argument
+ popq %r11 # Restore %r11
+ popq %r10 # Restore %r10
+ popq %r9 # Restore %r9
+ popq %r8 # Restore %r8
+ popq %rdi # Restore %rdi
+ popq %rsi # Restore %rsi
popq %rcx # Restore %rcx
popq %rdx # Restore %rdx
popq %rax # Restore %rax
- popfq # Restore eflags
- leaq 8(%rsp),%rsp # Discard reloff, do not change eflags
+ popfq # Restore rflags
+ leaq 8(%rsp),%rsp # Discard reloff, do not change rflags
ret # "Return" to target address
More information about the p4-projects
mailing list