diff options
author | Andreas Schwab <schwab@redhat.com> | 2009-11-24 17:36:39 +0100 |
---|---|---|
committer | Andreas Schwab <schwab@redhat.com> | 2009-11-24 17:36:39 +0100 |
commit | b127b8513f55a7d1a9312f32740914ed764f080c (patch) | |
tree | 1f97b06cf407715ae087bc055d524a222f19cc27 | |
parent | 1476362866e78841d73a2843f1b3628d6dfc2843 (diff) |
Re-install CFI in x86/x86_64 clone
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/clone.S | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/x86_64/clone.S | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/clone.S b/sysdeps/unix/sysv/linux/i386/clone.S index 54524ec120..f73a4b5195 100644 --- a/sysdeps/unix/sysv/linux/i386/clone.S +++ b/sysdeps/unix/sysv/linux/i386/clone.S @@ -120,6 +120,9 @@ L(pseudo_end): ret L(thread_start): + cfi_startproc; + /* Clearing frame pointer is insufficient, use CFI. */ + cfi_undefined (eip); /* Note: %esi is zero. */ movl %esi,%ebp /* terminate the stack frame */ #ifdef RESET_PID @@ -152,6 +155,7 @@ L(nomoregetpid): jmp L(haspid) .previous #endif + cfi_endproc; cfi_startproc PSEUDO_END (BP_SYM (__clone)) diff --git a/sysdeps/unix/sysv/linux/x86_64/clone.S b/sysdeps/unix/sysv/linux/x86_64/clone.S index 8a12b09035..db42f209c9 100644 --- a/sysdeps/unix/sysv/linux/x86_64/clone.S +++ b/sysdeps/unix/sysv/linux/x86_64/clone.S @@ -89,6 +89,9 @@ L(pseudo_end): ret L(thread_start): + cfi_startproc; + /* Clearing frame pointer is insufficient, use CFI. */ + cfi_undefined (rip); /* Clear the frame pointer. The ABI suggests this be done, to mark the outermost frame obviously. */ xorl %ebp, %ebp @@ -113,6 +116,7 @@ L(thread_start): /* Call exit with return value from function call. */ movq %rax, %rdi call HIDDEN_JUMPTARGET (_exit) + cfi_endproc; cfi_startproc; PSEUDO_END (BP_SYM (__clone)) |