--- old/usr/src/common/saveargs/tests/testmatch/data.s	2013-03-04 20:43:37.930422281 -0500
+++ /dev/null	2013-03-04 20:43:35.000000000 -0500
@@ -1,396 +0,0 @@
-/*
- * This file and its contents are supplied under the terms of the
- * Common Development and Distribution License ("CDDL"), version 1.0.
- * You may only use this file in accordance with the terms of version
- * 1.0 of the CDDL.
- *
- * A full copy of the text of the CDDL should have accompanied this
- * source.  A copy of the CDDL is also available via the Internet at
- * http://www.illumos.org/license/CDDL.
- */
-
-/*
- * Copyright 2012, Richard Lowe.
- */
-
-#define	FUNC(x) \
-	.text; \
-	.align	16; \
-	.globl	x; \
-	.type	x, @function; \
-x:
-
-#define	SET_SIZE(x, x_size) \
-	.size	x, [.-x]; \
-        .globl x_size; \
-        .type  x_size, @object; \
-x_size:
-
-/*
- * Extracted versions of the functional tests
- *
- * Named of the form <compiler>-<prologue style>-<nature of test>
- * basic			-- A regular function
- * align			-- odd number of arguments needing save-area
- * 				   alignment
- * big-struct-ret		-- returns a > 16byte structure by value
- * big-struct-ret-and-spill	-- returns a > 16byte structure by value and
- * 				   spills args to the stack
- * small-struct-ret		-- returns a < 16byte structure by value
- * small-struct-ret-and-spill	-- returns a < 16byte structure by value and
- * 				   spills args to the stack
- * stack-spill			-- spills arguments to the stack
- */
-FUNC(gcc_mov_align)
-pushq	%rbp
-movq	%rsp, %rbp
-movq	%rbx, -0x38(%rbp)
-movq	%r8, -0x28(%rbp)
-movq	%rcx, -0x20(%rbp)
-movq	%rdx, -0x18(%rbp)
-movq	%rsi, -0x10(%rbp)
-movq	%rdi, -0x8(%rbp)
-subq	$0x70, %rsp
-SET_SIZE(gcc_mov_align, gcc_mov_align_end)
-
-FUNC(gcc_mov_basic)
-pushq	%rbp
-movq	%rsp, %rbp
-movq	%rbx,-0x28(%rbp)
-movq    %rcx,-0x20(%rbp)
-movq    %rdx,-0x18(%rbp)
-movq    %rsi,-0x10(%rbp)
-movq    %rdi,-0x8(%rbp)
-subq    $0x50,%rsp
-SET_SIZE(gcc_mov_basic, gcc_mov_basic_end)
-
-FUNC(gcc_mov_big_struct_ret)
-pushq   %rbp
-movq    %rsp,%rbp
-movq    %rbx,-0x28(%rbp)
-movq    %r8,-0x20(%rbp)
-movq    %rcx,-0x18(%rbp)
-movq    %rdx,-0x10(%rbp)
-movq    %rsi,-0x8(%rbp)
-subq    $0x50,%rsp
-SET_SIZE(gcc_mov_big_struct_ret, gcc_mov_big_struct_ret_end)
-
-FUNC(gcc_mov_big_struct_ret_and_spill)
-pushq   %rbp
-movq    %rsp,%rbp
-movq    %rbx,-0x38(%rbp)
-movq    %r9,-0x28(%rbp)
-movq    %r8,-0x20(%rbp)
-movq    %rcx,-0x18(%rbp)
-movq    %rdx,-0x10(%rbp)
-movq    %rsi,-0x8(%rbp)
-subq    $0x90,%rsp
-SET_SIZE(gcc_mov_big_struct_ret_and_spill, gcc_mov_big_struct_ret_and_spill_end)
-
-FUNC(gcc_mov_small_struct_ret)
-pushq   %rbp
-movq    %rsp,%rbp
-movq    %rbx,-0x28(%rbp)
-movq    %rcx,-0x20(%rbp)
-movq    %rdx,-0x18(%rbp)
-movq    %rsi,-0x10(%rbp)
-movq    %rdi,-0x8(%rbp)
-subq    $0x50,%rsp
-SET_SIZE(gcc_mov_small_struct_ret, gcc_mov_small_struct_ret_end)
-
-FUNC(gcc_mov_small_struct_ret_and_spill)
-pushq   %rbp
-movq    %rsp,%rbp
-movq    %rbx,-0x38(%rbp)
-movq    %r9,-0x30(%rbp)
-movq    %r8,-0x28(%rbp)
-movq    %rcx,-0x20(%rbp)
-movq    %rdx,-0x18(%rbp)
-movq    %rsi,-0x10(%rbp)
-movq    %rdi,-0x8(%rbp)
-subq    $0x90,%rsp
-SET_SIZE(gcc_mov_small_struct_ret_and_spill, gcc_mov_small_struct_ret_and_spill_end)
-
-FUNC(gcc_mov_stack_spill)
-pushq   %rbp
-movq    %rsp,%rbp
-movq    %rbx,-0x38(%rbp)
-movq    %r9,-0x30(%rbp)
-movq    %r8,-0x28(%rbp)
-movq    %rcx,-0x20(%rbp)
-movq    %rdx,-0x18(%rbp)
-movq    %rsi,-0x10(%rbp)
-movq    %rdi,-0x8(%rbp)
-subq    $0x90,%rsp
-SET_SIZE(gcc_mov_stack_spill, gcc_mov_stack_spill_end)
-
-FUNC(gcc_push_align)
-pushq   %rbp
-movq    %rsp,%rbp
-pushq   %rdi
-pushq   %rsi
-pushq   %rdx
-pushq   %rcx
-pushq   %r8
-subq    $0x8,%rsp
-subq    $0x30,%rsp
-SET_SIZE(gcc_push_align, gcc_push_align_end)
-
-FUNC(gcc_push_basic)
-pushq   %rbp
-movq    %rsp,%rbp
-pushq   %rdi
-pushq   %rsi
-pushq   %rdx
-pushq   %rcx
-subq    $0x20,%rsp
-SET_SIZE(gcc_push_basic, gcc_push_basic_end)
-
-FUNC(gcc_push_big_struct_ret)
-pushq   %rbp
-movq    %rsp,%rbp
-pushq   %rsi
-pushq   %rdx
-pushq   %rcx
-pushq   %r8
-subq    $0x30,%rsp
-SET_SIZE(gcc_push_big_struct_ret, gcc_push_big_struct_ret_end)
-
-FUNC(gcc_push_big_struct_ret_and_spill)
-pushq   %rbp
-movq    %rsp,%rbp
-pushq   %rsi
-pushq   %rdx
-pushq   %rcx
-pushq   %r8
-pushq   %r9
-subq    $0x8,%rsp
-subq    $0x50,%rsp
-SET_SIZE(gcc_push_big_struct_ret_and_spill, gcc_push_big_struct_ret_and_spill_end)
-
-FUNC(gcc_push_small_struct_ret)
-pushq   %rbp
-movq    %rsp,%rbp
-pushq   %rdi
-pushq   %rsi
-pushq   %rdx
-pushq   %rcx
-subq    $0x20,%rsp
-SET_SIZE(gcc_push_small_struct_ret, gcc_push_small_struct_ret_end)
-
-FUNC(gcc_push_small_struct_ret_and_spill)
-pushq   %rbp
-movq    %rsp,%rbp
-pushq   %rdi
-pushq   %rsi
-pushq   %rdx
-pushq   %rcx
-pushq   %r8
-pushq   %r9
-subq    $0x50,%rsp
-SET_SIZE(gcc_push_small_struct_ret_and_spill, gcc_push_small_struct_ret_and_spill_end)
-
-FUNC(gcc_push_stack_spill)
-pushq   %rbp
-movq    %rsp,%rbp
-pushq   %rdi
-pushq   %rsi
-pushq   %rdx
-pushq   %rcx
-pushq   %r8
-pushq   %r9
-subq    $0x50,%rsp
-SET_SIZE(gcc_push_stack_spill, gcc_push_stack_spill_end)
-
-FUNC(ss_mov_align)
-pushq   %rbp
-movq    %rsp,%rbp
-subq    $0x30,%rsp
-movq    %rdi,-0x8(%rbp)
-movq    %rsi,-0x10(%rbp)
-movq    %rdx,-0x18(%rbp)
-movq    %rcx,-0x20(%rbp)
-movq    %r8,-0x28(%rbp)
-SET_SIZE(ss_mov_align, ss_mov_align_end)
-
-FUNC(ss_mov_basic)
-pushq   %rbp
-movq    %rsp,%rbp
-subq    $0x20,%rsp
-movq    %rdi,-0x8(%rbp)
-movq    %rsi,-0x10(%rbp)
-movq    %rdx,-0x18(%rbp)
-movq    %rcx,-0x20(%rbp)
-SET_SIZE(ss_mov_basic, ss_mov_basic_end)
-
-FUNC(ss_mov_big_struct_ret)
-pushq   %rbp
-movq    %rsp,%rbp
-subq    $0x30,%rsp
-movq    %rdi,-0x8(%rbp)
-movq    %rsi,-0x10(%rbp)
-movq    %rdx,-0x18(%rbp)
-movq    %rcx,-0x20(%rbp)
-movq    %r8,-0x28(%rbp)
-SET_SIZE(ss_mov_big_struct_ret, ss_mov_big_struct_ret_end)
-
-FUNC(ss_mov_big_struct_ret_and_spill)
-pushq   %rbp
-movq    %rsp,%rbp
-subq    $0x50,%rsp
-movq    %rdi,-0x8(%rbp)
-movq    %rsi,-0x10(%rbp)
-movq    %rdx,-0x18(%rbp)
-movq    %rcx,-0x20(%rbp)
-movq    %r8,-0x28(%rbp)
-movq    %r9,-0x30(%rbp)
-SET_SIZE(ss_mov_big_struct_ret_and_spill, ss_mov_big_struct_ret_and_spill_end)
-
-FUNC(ss_mov_small_struct_ret)
-pushq   %rbp
-movq    %rsp,%rbp
-subq    $0x20,%rsp
-movq    %rdi,-0x8(%rbp)
-movq    %rsi,-0x10(%rbp)
-movq    %rdx,-0x18(%rbp)
-movq    %rcx,-0x20(%rbp)
-SET_SIZE(ss_mov_small_struct_ret, ss_mov_small_struct_ret_end)
-
-FUNC(ss_mov_small_struct_ret_and_spill)
-pushq   %rbp
-movq    %rsp,%rbp
-subq    $0x50,%rsp
-movq    %rdi,-0x8(%rbp)
-movq    %rsi,-0x10(%rbp)
-movq    %rdx,-0x18(%rbp)
-movq    %rcx,-0x20(%rbp)
-movq    %r8,-0x28(%rbp)
-movq    %r9,-0x30(%rbp)
-SET_SIZE(ss_mov_small_struct_ret_and_spill, ss_mov_small_struct_ret_and_spill_end)
-
-FUNC(ss_mov_stack_spill)
-pushq   %rbp
-movq    %rsp,%rbp
-subq    $0x50,%rsp
-movq    %rdi,-0x8(%rbp)
-movq    %rsi,-0x10(%rbp)
-movq    %rdx,-0x18(%rbp)
-movq    %rcx,-0x20(%rbp)
-movq    %r8,-0x28(%rbp)
-movq    %r9,-0x30(%rbp)
-SET_SIZE(ss_mov_stack_spill, ss_mov_stack_spill_end)
-
-/* DTrace instrumentation */
-FUNC(dtrace_instrumented)
-int	$0x3
-movq	%rsp, %rbp
-movq	%rbx,-0x28(%rbp)
-movq    %rcx,-0x20(%rbp)
-movq    %rdx,-0x18(%rbp)
-movq    %rsi,-0x10(%rbp)
-movq    %rdi,-0x8(%rbp)
-subq    $0x50,%rsp
-SET_SIZE(dtrace_instrumented, dtrace_instrumented_end)
-
-/*
- * System functions with special characteristics, be they non-initial FP save,
- * gaps between FP save and argument saving, or gaps between saved arguments.
- */
-FUNC(kmem_alloc)
-leaq    -0x1(%rdi),%rax
-pushq   %rbp
-movq    %rax,%rdx
-movq    %rsp,%rbp
-subq    $0x30,%rsp
-shrq    $0x3,%rdx
-movq    %r12,-0x28(%rbp)
-movq    %rbx,-0x30(%rbp)
-cmpq    $0x1ff,%rdx
-movq    %r13,-0x20(%rbp)
-movq    %r14,-0x18(%rbp)
-movq    %rsi,-0x10(%rbp)
-movq    %rdi,-0x8(%rbp)
-movq    %rdi,%r12
-SET_SIZE(kmem_alloc, kmem_alloc_end)
-
-FUNC(uts_kill)
-pushq   %rbp
-movq    %rsp,%rbp
-subq    $0x50,%rsp
-movq    %rbx,-0x28(%rbp)
-leaq    -0x50(%rbp),%rbx
-movq    %r12,-0x20(%rbp)
-movq    %r13,-0x18(%rbp)
-movq    %rsi,-0x10(%rbp)
-movl    %edi,%r12d
-movq    %rdi,-0x8(%rbp)
-SET_SIZE(uts_kill, uts_kill_end)
-
-FUNC(av1394_ic_bitreverse)
-movq    %rdi,%rdx
-movq    $0x5555555555555555,%rax
-movq    $0x3333333333333333,%rcx
-shrq    $0x1,%rdx
-pushq   %rbp
-andq    %rax,%rdx
-andq    %rdi,%rax
-addq    %rax,%rax
-movq    %rsp,%rbp
-subq    $0x10,%rsp
-orq     %rdx,%rax
-movq    %rdi,-0x8(%rbp)
-SET_SIZE(av1394_ic_bitreverse, av1394_ic_bitreverse_end)
-
-/* Problematic functions which should not match */
-
-FUNC(no_fp) /* No frame pointer */
-movq	%rdi, %rsi
-movq	%rsi, %rdi
-movq	%rbx,-0x28(%rbp)
-movq    %rcx,-0x20(%rbp)
-movq    %rdx,-0x18(%rbp)
-movq    %rsi,-0x10(%rbp)
-movq    %rdi,-0x8(%rbp)
-subq    $0x50,%rsp
-SET_SIZE(no_fp, no_fp_end)
-
-/* Small structure return, but with an SSE type (thus forcing it to the stack) */
-FUNC(small_struct_ret_w_float)
-pushq   %rbp
-movq    %rsp,%rbp
-movq    %rdi,-0x8(%rbp)
-subq    $0x30,%rsp
-SET_SIZE(small_struct_ret_w_float, small_struct_ret_w_float_end)
-
-/* Big structure return, but with an SSE type */
-FUNC(big_struct_ret_w_float)
-pushq  %rbp
-movq   %rsp,%rbp
-movq   %rsi,-0x8(%rbp)
-subq   $0x50,%rsp
-movq   %rsi,-0x48(%rbp)
-movq   -0x48(%rbp),%rax
-movq   %rax,%rsi
-movl   $0x400f60,%edi
-movl   $0x0,%eax
-movl   $0x1770,%edi
-movl   $0x0,%eax
-leave
-ret
-SET_SIZE(big_struct_ret_w_float, big_struct_ret_w_float_end)
-
-FUNC(big_struct_arg_by_value)
-pushq   %rbp
-movq    %rsp,%rbp
-movq    %rdi,-0x8(%rbp)
-subq    $0x40,%rsp
-SET_SIZE(big_struct_arg_by_value, big_struct_arg_by_value_end)
-
-FUNC(small_struct_arg_by_value)
-pushq   %rbp
-movq    %rsp,%rbp
-movq    %rdx,-0x18(%rbp)
-movq    %rsi,-0x10(%rbp)
-movq    %rdi,-0x8(%rbp)
-subq    $0x50,%rsp
-SET_SIZE(small_struct_arg_by_value, small_struct_arg_by_value_end)
--- /dev/null	2013-03-04 20:43:35.000000000 -0500
+++ new/usr/src/lib/libsaveargs/tests/testmatch/data.s	2013-03-04 20:43:37.940979184 -0500
@@ -0,0 +1,454 @@
+/*
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms of version
+ * 1.0 of the CDDL.
+ *
+ * A full copy of the text of the CDDL should have accompanied this
+ * source.  A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
+ */
+
+/*
+ * Copyright 2012, Richard Lowe.
+ */
+
+#define	FUNC(x) \
+	.text; \
+	.align	16; \
+	.globl	x; \
+	.type	x, @function; \
+x:
+
+#define	SET_SIZE(x, x_size) \
+	.size	x, [.-x]; \
+        .globl x_size; \
+        .type  x_size, @object; \
+x_size:
+
+/*
+ * Extracted versions of the functional tests
+ *
+ * Named of the form <compiler>-<prologue style>-<nature of test>
+ * basic			-- A regular function
+ * align			-- odd number of arguments needing save-area
+ * 				   alignment
+ * big-struct-ret		-- returns a > 16byte structure by value
+ * big-struct-ret-and-spill	-- returns a > 16byte structure by value and
+ * 				   spills args to the stack
+ * small-struct-ret		-- returns a < 16byte structure by value
+ * small-struct-ret-and-spill	-- returns a < 16byte structure by value and
+ * 				   spills args to the stack
+ * stack-spill			-- spills arguments to the stack
+ */
+FUNC(gcc_mov_align)
+pushq	%rbp
+movq	%rsp, %rbp
+movq	%rbx, -0x38(%rbp)
+movq	%r8, -0x28(%rbp)
+movq	%rcx, -0x20(%rbp)
+movq	%rdx, -0x18(%rbp)
+movq	%rsi, -0x10(%rbp)
+movq	%rdi, -0x8(%rbp)
+subq	$0x70, %rsp
+SET_SIZE(gcc_mov_align, gcc_mov_align_end)
+
+FUNC(gcc_mov_basic)
+pushq	%rbp
+movq	%rsp, %rbp
+movq	%rbx,-0x28(%rbp)
+movq    %rcx,-0x20(%rbp)
+movq    %rdx,-0x18(%rbp)
+movq    %rsi,-0x10(%rbp)
+movq    %rdi,-0x8(%rbp)
+subq    $0x50,%rsp
+SET_SIZE(gcc_mov_basic, gcc_mov_basic_end)
+
+FUNC(gcc_mov_noorder)
+pushq	%rbp
+movq	%rsp, %rbp
+movq    %rcx,-0x20(%rbp)
+movq	%rbx,-0x28(%rbp)
+movq    %rdi,-0x8(%rbp)
+movq    %rdx,-0x18(%rbp)
+movq    %rsi,-0x10(%rbp)
+subq    $0x50,%rsp
+SET_SIZE(gcc_mov_noorder, gcc_mov_noorder_end)
+        
+FUNC(gcc_mov_big_struct_ret)
+pushq   %rbp
+movq    %rsp,%rbp
+movq    %rbx,-0x28(%rbp)
+movq    %r8,-0x20(%rbp)
+movq    %rcx,-0x18(%rbp)
+movq    %rdx,-0x10(%rbp)
+movq    %rsi,-0x8(%rbp)
+subq    $0x50,%rsp
+SET_SIZE(gcc_mov_big_struct_ret, gcc_mov_big_struct_ret_end)
+
+FUNC(gcc_mov_struct_noorder)
+pushq   %rbp
+movq    %rsp,%rbp
+movq    %rcx,-0x18(%rbp)
+movq    %r8,-0x20(%rbp)
+movq    %rsi,-0x8(%rbp)
+movq    %rdx,-0x10(%rbp)
+movq    %rbx,-0x28(%rbp)
+subq    $0x50,%rsp
+SET_SIZE(gcc_mov_struct_noorder, gcc_mov_struct_noorder_end)
+
+FUNC(gcc_mov_big_struct_ret_and_spill)
+pushq   %rbp
+movq    %rsp,%rbp
+movq    %rbx,-0x38(%rbp)
+movq    %r9,-0x28(%rbp)
+movq    %r8,-0x20(%rbp)
+movq    %rcx,-0x18(%rbp)
+movq    %rdx,-0x10(%rbp)
+movq    %rsi,-0x8(%rbp)
+subq    $0x90,%rsp
+SET_SIZE(gcc_mov_big_struct_ret_and_spill, gcc_mov_big_struct_ret_and_spill_end)
+
+FUNC(gcc_mov_small_struct_ret)
+pushq   %rbp
+movq    %rsp,%rbp
+movq    %rbx,-0x28(%rbp)
+movq    %rcx,-0x20(%rbp)
+movq    %rdx,-0x18(%rbp)
+movq    %rsi,-0x10(%rbp)
+movq    %rdi,-0x8(%rbp)
+subq    $0x50,%rsp
+SET_SIZE(gcc_mov_small_struct_ret, gcc_mov_small_struct_ret_end)
+
+FUNC(gcc_mov_small_struct_ret_and_spill)
+pushq   %rbp
+movq    %rsp,%rbp
+movq    %rbx,-0x38(%rbp)
+movq    %r9,-0x30(%rbp)
+movq    %r8,-0x28(%rbp)
+movq    %rcx,-0x20(%rbp)
+movq    %rdx,-0x18(%rbp)
+movq    %rsi,-0x10(%rbp)
+movq    %rdi,-0x8(%rbp)
+subq    $0x90,%rsp
+SET_SIZE(gcc_mov_small_struct_ret_and_spill, gcc_mov_small_struct_ret_and_spill_end)
+
+FUNC(gcc_mov_stack_spill)
+pushq   %rbp
+movq    %rsp,%rbp
+movq    %rbx,-0x38(%rbp)
+movq    %r9,-0x30(%rbp)
+movq    %r8,-0x28(%rbp)
+movq    %rcx,-0x20(%rbp)
+movq    %rdx,-0x18(%rbp)
+movq    %rsi,-0x10(%rbp)
+movq    %rdi,-0x8(%rbp)
+subq    $0x90,%rsp
+SET_SIZE(gcc_mov_stack_spill, gcc_mov_stack_spill_end)
+
+FUNC(gcc_push_align)
+pushq   %rbp
+movq    %rsp,%rbp
+pushq   %rdi
+pushq   %rsi
+pushq   %rdx
+pushq   %rcx
+pushq   %r8
+subq    $0x8,%rsp
+subq    $0x30,%rsp
+SET_SIZE(gcc_push_align, gcc_push_align_end)
+
+FUNC(gcc_push_basic)
+pushq   %rbp
+movq    %rsp,%rbp
+pushq   %rdi
+pushq   %rsi
+pushq   %rdx
+pushq   %rcx
+subq    $0x20,%rsp
+SET_SIZE(gcc_push_basic, gcc_push_basic_end)
+
+FUNC(gcc_push_noorder)
+pushq   %rbp
+movq    %rsp,%rbp
+pushq   %rsi
+pushq   %rdi
+pushq   %rcx
+pushq   %rdx
+subq    $0x20,%rsp
+SET_SIZE(gcc_push_noorder, gcc_push_noorder_end)
+
+FUNC(gcc_push_big_struct_ret)
+pushq   %rbp
+movq    %rsp,%rbp
+pushq   %rsi
+pushq   %rdx
+pushq   %rcx
+pushq   %r8
+subq    $0x30,%rsp
+SET_SIZE(gcc_push_big_struct_ret, gcc_push_big_struct_ret_end)
+
+FUNC(gcc_push_struct_noorder)
+pushq   %rbp
+movq    %rsp,%rbp
+pushq   %rdx
+pushq   %rsi
+pushq   %r8
+pushq   %rcx
+subq    $0x30,%rsp
+SET_SIZE(gcc_push_struct_noorder, gcc_push_struct_noorder_end)
+        
+FUNC(gcc_push_big_struct_ret_and_spill)
+pushq   %rbp
+movq    %rsp,%rbp
+pushq   %rsi
+pushq   %rdx
+pushq   %rcx
+pushq   %r8
+pushq   %r9
+subq    $0x8,%rsp
+subq    $0x50,%rsp
+SET_SIZE(gcc_push_big_struct_ret_and_spill, gcc_push_big_struct_ret_and_spill_end)
+
+FUNC(gcc_push_small_struct_ret)
+pushq   %rbp
+movq    %rsp,%rbp
+pushq   %rdi
+pushq   %rsi
+pushq   %rdx
+pushq   %rcx
+subq    $0x20,%rsp
+SET_SIZE(gcc_push_small_struct_ret, gcc_push_small_struct_ret_end)
+
+FUNC(gcc_push_small_struct_ret_and_spill)
+pushq   %rbp
+movq    %rsp,%rbp
+pushq   %rdi
+pushq   %rsi
+pushq   %rdx
+pushq   %rcx
+pushq   %r8
+pushq   %r9
+subq    $0x50,%rsp
+SET_SIZE(gcc_push_small_struct_ret_and_spill, gcc_push_small_struct_ret_and_spill_end)
+
+FUNC(gcc_push_stack_spill)
+pushq   %rbp
+movq    %rsp,%rbp
+pushq   %rdi
+pushq   %rsi
+pushq   %rdx
+pushq   %rcx
+pushq   %r8
+pushq   %r9
+subq    $0x50,%rsp
+SET_SIZE(gcc_push_stack_spill, gcc_push_stack_spill_end)
+
+FUNC(ss_mov_align)
+pushq   %rbp
+movq    %rsp,%rbp
+subq    $0x30,%rsp
+movq    %rdi,-0x8(%rbp)
+movq    %rsi,-0x10(%rbp)
+movq    %rdx,-0x18(%rbp)
+movq    %rcx,-0x20(%rbp)
+movq    %r8,-0x28(%rbp)
+SET_SIZE(ss_mov_align, ss_mov_align_end)
+
+FUNC(ss_mov_basic)
+pushq   %rbp
+movq    %rsp,%rbp
+subq    $0x20,%rsp
+movq    %rdi,-0x8(%rbp)
+movq    %rsi,-0x10(%rbp)
+movq    %rdx,-0x18(%rbp)
+movq    %rcx,-0x20(%rbp)
+SET_SIZE(ss_mov_basic, ss_mov_basic_end)
+
+FUNC(ss_mov_big_struct_ret)
+pushq   %rbp
+movq    %rsp,%rbp
+subq    $0x30,%rsp
+movq    %rdi,-0x8(%rbp)
+movq    %rsi,-0x10(%rbp)
+movq    %rdx,-0x18(%rbp)
+movq    %rcx,-0x20(%rbp)
+movq    %r8,-0x28(%rbp)
+SET_SIZE(ss_mov_big_struct_ret, ss_mov_big_struct_ret_end)
+
+FUNC(ss_mov_big_struct_ret_and_spill)
+pushq   %rbp
+movq    %rsp,%rbp
+subq    $0x50,%rsp
+movq    %rdi,-0x8(%rbp)
+movq    %rsi,-0x10(%rbp)
+movq    %rdx,-0x18(%rbp)
+movq    %rcx,-0x20(%rbp)
+movq    %r8,-0x28(%rbp)
+movq    %r9,-0x30(%rbp)
+SET_SIZE(ss_mov_big_struct_ret_and_spill, ss_mov_big_struct_ret_and_spill_end)
+
+FUNC(ss_mov_small_struct_ret)
+pushq   %rbp
+movq    %rsp,%rbp
+subq    $0x20,%rsp
+movq    %rdi,-0x8(%rbp)
+movq    %rsi,-0x10(%rbp)
+movq    %rdx,-0x18(%rbp)
+movq    %rcx,-0x20(%rbp)
+SET_SIZE(ss_mov_small_struct_ret, ss_mov_small_struct_ret_end)
+
+FUNC(ss_mov_small_struct_ret_and_spill)
+pushq   %rbp
+movq    %rsp,%rbp
+subq    $0x50,%rsp
+movq    %rdi,-0x8(%rbp)
+movq    %rsi,-0x10(%rbp)
+movq    %rdx,-0x18(%rbp)
+movq    %rcx,-0x20(%rbp)
+movq    %r8,-0x28(%rbp)
+movq    %r9,-0x30(%rbp)
+SET_SIZE(ss_mov_small_struct_ret_and_spill, ss_mov_small_struct_ret_and_spill_end)
+
+FUNC(ss_mov_stack_spill)
+pushq   %rbp
+movq    %rsp,%rbp
+subq    $0x50,%rsp
+movq    %rdi,-0x8(%rbp)
+movq    %rsi,-0x10(%rbp)
+movq    %rdx,-0x18(%rbp)
+movq    %rcx,-0x20(%rbp)
+movq    %r8,-0x28(%rbp)
+movq    %r9,-0x30(%rbp)
+SET_SIZE(ss_mov_stack_spill, ss_mov_stack_spill_end)
+
+/* DTrace instrumentation */
+FUNC(dtrace_instrumented)
+int	$0x3
+movq	%rsp, %rbp
+movq	%rbx,-0x28(%rbp)
+movq    %rcx,-0x20(%rbp)
+movq    %rdx,-0x18(%rbp)
+movq    %rsi,-0x10(%rbp)
+movq    %rdi,-0x8(%rbp)
+subq    $0x50,%rsp
+SET_SIZE(dtrace_instrumented, dtrace_instrumented_end)
+
+/*
+ * System functions with special characteristics, be they non-initial FP save,
+ * gaps between FP save and argument saving, or gaps between saved arguments.
+ */
+FUNC(kmem_alloc)
+leaq    -0x1(%rdi),%rax
+pushq   %rbp
+movq    %rax,%rdx
+movq    %rsp,%rbp
+subq    $0x30,%rsp
+shrq    $0x3,%rdx
+movq    %r12,-0x28(%rbp)
+movq    %rbx,-0x30(%rbp)
+cmpq    $0x1ff,%rdx
+movq    %r13,-0x20(%rbp)
+movq    %r14,-0x18(%rbp)
+movq    %rsi,-0x10(%rbp)
+movq    %rdi,-0x8(%rbp)
+movq    %rdi,%r12
+SET_SIZE(kmem_alloc, kmem_alloc_end)
+
+FUNC(uts_kill)
+pushq   %rbp
+movq    %rsp,%rbp
+subq    $0x50,%rsp
+movq    %rbx,-0x28(%rbp)
+leaq    -0x50(%rbp),%rbx
+movq    %r12,-0x20(%rbp)
+movq    %r13,-0x18(%rbp)
+movq    %rsi,-0x10(%rbp)
+movl    %edi,%r12d
+movq    %rdi,-0x8(%rbp)
+SET_SIZE(uts_kill, uts_kill_end)
+
+FUNC(av1394_ic_bitreverse)
+movq    %rdi,%rdx
+movq    $0x5555555555555555,%rax
+movq    $0x3333333333333333,%rcx
+shrq    $0x1,%rdx
+pushq   %rbp
+andq    %rax,%rdx
+andq    %rdi,%rax
+addq    %rax,%rax
+movq    %rsp,%rbp
+subq    $0x10,%rsp
+orq     %rdx,%rax
+movq    %rdi,-0x8(%rbp)
+SET_SIZE(av1394_ic_bitreverse, av1394_ic_bitreverse_end)
+
+/* Problematic functions which should not match */
+
+FUNC(no_fp) /* No frame pointer */
+movq	%rdi, %rsi
+movq	%rsi, %rdi
+movq	%rbx,-0x28(%rbp)
+movq    %rcx,-0x20(%rbp)
+movq    %rdx,-0x18(%rbp)
+movq    %rsi,-0x10(%rbp)
+movq    %rdi,-0x8(%rbp)
+subq    $0x50,%rsp
+SET_SIZE(no_fp, no_fp_end)
+
+/* Small structure return, but with an SSE type (thus forcing it to the stack) */
+FUNC(small_struct_ret_w_float)
+pushq   %rbp
+movq    %rsp,%rbp
+movq    %rdi,-0x8(%rbp)
+subq    $0x30,%rsp
+SET_SIZE(small_struct_ret_w_float, small_struct_ret_w_float_end)
+
+/* Big structure return, but with an SSE type */
+FUNC(big_struct_ret_w_float)
+pushq  %rbp
+movq   %rsp,%rbp
+movq   %rsi,-0x8(%rbp)
+subq   $0x50,%rsp
+movq   %rsi,-0x48(%rbp)
+movq   -0x48(%rbp),%rax
+movq   %rax,%rsi
+movl   $0x400f60,%edi
+movl   $0x0,%eax
+movl   $0x1770,%edi
+movl   $0x0,%eax
+leave
+ret
+SET_SIZE(big_struct_ret_w_float, big_struct_ret_w_float_end)
+
+FUNC(big_struct_arg_by_value)
+pushq   %rbp
+movq    %rsp,%rbp
+movq    %rdi,-0x8(%rbp)
+subq    $0x40,%rsp
+SET_SIZE(big_struct_arg_by_value, big_struct_arg_by_value_end)
+
+FUNC(small_struct_arg_by_value)
+pushq   %rbp
+movq    %rsp,%rbp
+movq    %rdx,-0x18(%rbp)
+movq    %rsi,-0x10(%rbp)
+movq    %rdi,-0x8(%rbp)
+subq    $0x50,%rsp
+SET_SIZE(small_struct_arg_by_value, small_struct_arg_by_value_end)
+
+FUNC(interleaved_argument_saves)
+pushq	%rbp
+movq	%rdi,%rax
+shlq	$0x21,%rax
+movq	%rsp,%rbp
+shrq	$0x29,%rax
+subq	$0x30,%rsp
+movq	%rdi,-0x8(%rbp)
+movq	%rbx,-0x28(%rbp)
+movzbl	%dil,%edi
+movq	%rcx,-0x20(%rbp)
+movq	%rdx,-0x18(%rbp)
+movq	%rsi,-0x10(%rbp)
+movq	0x0(,%rax,8),%rax
+SET_SIZE(interleaved_argument_saves, interleaved_argument_saves_end)
