Merge "Add missing cfi directives for x86 assembler."
This commit is contained in:
commit
a529efac4e
@ -3,8 +3,14 @@
|
|||||||
// pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg);
|
// pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg);
|
||||||
ENTRY(__bionic_clone)
|
ENTRY(__bionic_clone)
|
||||||
pushl %ebx
|
pushl %ebx
|
||||||
|
.cfi_adjust_cfa_offset 4
|
||||||
|
.cfi_rel_offset ebx, 0
|
||||||
pushl %esi
|
pushl %esi
|
||||||
|
.cfi_adjust_cfa_offset 4
|
||||||
|
.cfi_rel_offset esi, 0
|
||||||
pushl %edi
|
pushl %edi
|
||||||
|
.cfi_adjust_cfa_offset 4
|
||||||
|
.cfi_rel_offset edi, 0
|
||||||
|
|
||||||
# Load system call arguments into registers.
|
# Load system call arguments into registers.
|
||||||
movl 16(%esp), %ebx # flags
|
movl 16(%esp), %ebx # flags
|
||||||
@ -46,8 +52,14 @@ ENTRY(__bionic_clone)
|
|||||||
# We're the parent; nothing to do.
|
# We're the parent; nothing to do.
|
||||||
.L_bc_return:
|
.L_bc_return:
|
||||||
popl %edi
|
popl %edi
|
||||||
|
.cfi_adjust_cfa_offset -4
|
||||||
|
.cfi_restore edi
|
||||||
popl %esi
|
popl %esi
|
||||||
|
.cfi_adjust_cfa_offset -4
|
||||||
|
.cfi_restore esi
|
||||||
popl %ebx
|
popl %ebx
|
||||||
|
.cfi_adjust_cfa_offset -4
|
||||||
|
.cfi_restore ebx
|
||||||
ret
|
ret
|
||||||
END(__bionic_clone)
|
END(__bionic_clone)
|
||||||
.hidden __bionic_clone
|
.hidden __bionic_clone
|
||||||
|
@ -15,9 +15,17 @@
|
|||||||
ENTRY(syscall)
|
ENTRY(syscall)
|
||||||
# Push the callee save registers.
|
# Push the callee save registers.
|
||||||
push %ebx
|
push %ebx
|
||||||
|
.cfi_adjust_cfa_offset 4
|
||||||
|
.cfi_rel_offset ebx, 0
|
||||||
push %esi
|
push %esi
|
||||||
|
.cfi_adjust_cfa_offset 4
|
||||||
|
.cfi_rel_offset esi, 0
|
||||||
push %edi
|
push %edi
|
||||||
|
.cfi_adjust_cfa_offset 4
|
||||||
|
.cfi_rel_offset edi, 0
|
||||||
push %ebp
|
push %ebp
|
||||||
|
.cfi_adjust_cfa_offset 4
|
||||||
|
.cfi_rel_offset ebp, 0
|
||||||
|
|
||||||
# Load all the arguments from the calling frame.
|
# Load all the arguments from the calling frame.
|
||||||
# (Not all will be valid, depending on the syscall.)
|
# (Not all will be valid, depending on the syscall.)
|
||||||
@ -43,8 +51,16 @@ ENTRY(syscall)
|
|||||||
1:
|
1:
|
||||||
# Restore the callee save registers.
|
# Restore the callee save registers.
|
||||||
pop %ebp
|
pop %ebp
|
||||||
|
.cfi_adjust_cfa_offset -4
|
||||||
|
.cfi_restore ebp, 0
|
||||||
pop %edi
|
pop %edi
|
||||||
|
.cfi_adjust_cfa_offset -4
|
||||||
|
.cfi_restore edi, 0
|
||||||
pop %esi
|
pop %esi
|
||||||
|
.cfi_adjust_cfa_offset -4
|
||||||
|
.cfi_restore esi, 0
|
||||||
pop %ebx
|
pop %ebx
|
||||||
|
.cfi_adjust_cfa_offset -4
|
||||||
|
.cfi_restore ebx, 0
|
||||||
ret
|
ret
|
||||||
END(syscall)
|
END(syscall)
|
||||||
|
@ -32,6 +32,8 @@
|
|||||||
|
|
||||||
ENTRY(vfork)
|
ENTRY(vfork)
|
||||||
popl %ecx // Grab the return address.
|
popl %ecx // Grab the return address.
|
||||||
|
.cfi_adjust_cfa_offset 4
|
||||||
|
.cfi_rel_offset ecx, 0
|
||||||
movl $__NR_vfork, %eax
|
movl $__NR_vfork, %eax
|
||||||
int $0x80
|
int $0x80
|
||||||
cmpl $-MAX_ERRNO, %eax
|
cmpl $-MAX_ERRNO, %eax
|
||||||
|
Loading…
x
Reference in New Issue
Block a user