Always reset CFI state.
.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
diff --git a/runtime/arch/arm/asm_support_arm.S b/runtime/arch/arm/asm_support_arm.S
index b421024..fb85feb 100644
--- a/runtime/arch/arm/asm_support_arm.S
+++ b/runtime/arch/arm/asm_support_arm.S
@@ -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
diff --git a/runtime/arch/mips/asm_support_mips.S b/runtime/arch/mips/asm_support_mips.S
index a14593b..d110b95 100644
--- a/runtime/arch/mips/asm_support_mips.S
+++ b/runtime/arch/mips/asm_support_mips.S
@@ -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
diff --git a/runtime/arch/x86/asm_support_x86.S b/runtime/arch/x86/asm_support_x86.S
index 5bf7c55..e329530 100644
--- a/runtime/arch/x86/asm_support_x86.S
+++ b/runtime/arch/x86/asm_support_x86.S
@@ -104,8 +104,7 @@
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
diff --git a/runtime/arch/x86_64/asm_support_x86_64.S b/runtime/arch/x86_64/asm_support_x86_64.S
index df2afb2..ca2489c 100644
--- a/runtime/arch/x86_64/asm_support_x86_64.S
+++ b/runtime/arch/x86_64/asm_support_x86_64.S
@@ -104,8 +104,7 @@
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