OSDN Git Service

Always reset CFI state.
authorIan Rogers <irogers@google.com>
Tue, 11 Mar 2014 23:29:07 +0000 (16:29 -0700)
committerIan Rogers <irogers@google.com>
Tue, 11 Mar 2014 23:29:07 +0000 (16:29 -0700)
.cfi_startproc simple may do even less than .cfi_startproc, so don't rely on
it. Instead, use regular .cfi_startporc and always set up the expected entry
state.

Change-Id: I6d3e8b8e4a07621bc99c062359a109eb76f85184

runtime/arch/arm/asm_support_arm.S
runtime/arch/mips/asm_support_mips.S
runtime/arch/x86/asm_support_x86.S
runtime/arch/x86_64/asm_support_x86_64.S

index b421024..fb85feb 100644 (file)
@@ -42,7 +42,9 @@
     /* Cache alignment for function entry */
     .balign 16
 \name:
-    .cfi_startproc simple
+    .cfi_startproc
+     /* Ensure we get a sane starting CFA. */
+    .cfi_def_cfa sp,0
     .fnstart
 .endm
 
index a14593b..d110b95 100644 (file)
@@ -25,7 +25,9 @@
     .global \name
     .balign 16
 \name:
-    .cfi_startproc simple
+    .cfi_startproc
+     /* Ensure we get a sane starting CFA. */
+    .cfi_def_cfa $sp,0
 .endm
 
 .macro END name
index 5bf7c55..e329530 100644 (file)
@@ -104,8 +104,7 @@ MACRO1(DEFINE_FUNCTION, c_name)
     ALIGN_FUNCTION_ENTRY
 VAR(c_name, 0):
     CFI_STARTPROC
-    // TODO: we reset the CFA state here. It'd be better to use ".cfi_startproc simple" above but
-    // clang 3.4 doesn't support this.
+    // Ensure we get a sane starting CFA.
     CFI_DEF_CFA(esp, 4)
 END_MACRO
 
index df2afb2..ca2489c 100644 (file)
@@ -104,8 +104,7 @@ MACRO1(DEFINE_FUNCTION, c_name)
     ALIGN_FUNCTION_ENTRY
 VAR(c_name, 0):
     CFI_STARTPROC
-    // TODO: we reset the CFA state here. It'd be better to use ".cfi_startproc simple" above but
-    // clang 3.4 doesn't support this.
+    // Ensure we get a sane starting CFA.
     CFI_DEF_CFA(rsp, 8)
 END_MACRO