Index: tests/toolchain/call_with_misaligned_stack.S |
diff --git a/tests/toolchain/call_with_misaligned_stack.S b/tests/toolchain/call_with_misaligned_stack.S |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7727f3e5c8d85e50c244934997f9ac25f62d79cc |
--- /dev/null |
+++ b/tests/toolchain/call_with_misaligned_stack.S |
@@ -0,0 +1,21 @@ |
+/* |
+ * Copyright (c) 2014 The Native Client Authors. All rights reserved. |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+/* |
+ * Call the argument with a stack pointer 4 bytes below its value on entry. |
+ * This will ensure that (assuming it's aligned on a 16-byte boundary on entry) |
+ * it will be misaligned on entry to the callee. |
+*/ |
+ .text |
+ .p2align 5 |
+ .globl call_with_misaligned_stack |
+ .type call_with_misaligned_stack, @function |
+call_with_misaligned_stack: |
+ movl 4(%esp), %ecx /* call target */ |
+ naclcall %ecx |
+ pop %ecx |
+ nacljmp %ecx |
+ .p2align 5 |