Merge "Add missing cfi directives for x86 assembler."

This commit is contained in:
Christopher Ferris 2015-04-14 23:43:09 +00:00 committed by Gerrit Code Review
commit a529efac4e
3 changed files with 30 additions and 0 deletions

View File

@ -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

View File

@ -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)

View File

@ -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