Ensure functions start with clean CFA state.

.cfi_startproc doesn't reset CFA state and so delivering exceptions and the
like can leave the CFA with an incorrect offset. Reset the state in the
DEFINE_FUNCTION macro.
Also fix using test/run-test with --gdb for the target.

Change-Id: I4c03768e118ef1e06d34fedce856919e6ecba0c4
diff --git a/runtime/arch/arm/asm_support_arm.S b/runtime/arch/arm/asm_support_arm.S
index ee4484b..b421024 100644
--- a/runtime/arch/arm/asm_support_arm.S
+++ b/runtime/arch/arm/asm_support_arm.S
@@ -42,7 +42,7 @@
     /* Cache alignment for function entry */
     .balign 16
 \name:
-    .cfi_startproc
+    .cfi_startproc simple
     .fnstart
 .endm
 
diff --git a/runtime/arch/mips/asm_support_mips.S b/runtime/arch/mips/asm_support_mips.S
index fe932d2..a14593b 100644
--- a/runtime/arch/mips/asm_support_mips.S
+++ b/runtime/arch/mips/asm_support_mips.S
@@ -25,7 +25,7 @@
     .global \name
     .balign 16
 \name:
-    .cfi_startproc
+    .cfi_startproc simple
 .endm
 
 .macro END name
diff --git a/runtime/arch/x86/asm_support_x86.S b/runtime/arch/x86/asm_support_x86.S
index 267717a..5bf7c55 100644
--- a/runtime/arch/x86/asm_support_x86.S
+++ b/runtime/arch/x86/asm_support_x86.S
@@ -104,6 +104,9 @@
     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.
+    CFI_DEF_CFA(esp, 4)
 END_MACRO
 
 MACRO1(END_FUNCTION, c_name)
diff --git a/runtime/arch/x86_64/asm_support_x86_64.S b/runtime/arch/x86_64/asm_support_x86_64.S
index 14975da..df2afb2 100644
--- a/runtime/arch/x86_64/asm_support_x86_64.S
+++ b/runtime/arch/x86_64/asm_support_x86_64.S
@@ -104,6 +104,9 @@
     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.
+    CFI_DEF_CFA(rsp, 8)
 END_MACRO
 
 MACRO1(END_FUNCTION, c_name)
diff --git a/test/etc/push-and-run-test-jar b/test/etc/push-and-run-test-jar
index a218a42..2a2aa70 100755
--- a/test/etc/push-and-run-test-jar
+++ b/test/etc/push-and-run-test-jar
@@ -131,7 +131,7 @@
 
 if [ "$GDB" = "y" ]; then
     gdb="gdbserver :5039"
-    gdbargs="--args $exe"
+    gdbargs="$exe"
 fi
 
 if [ "$INTERPRETER" = "y" ]; then