3 #define CVT(v) ((unsigned char)(v))
5 static void __attribute__((noinline
, noclone
))
6 check_args_8 (int a0
, int a1
, int a2
, int a3
, int a4
, int a5
, int a6
, int a7
,
21 static void __attribute__((noinline
, noclone
))
22 check_args_24 (int a0
, int a1
, int a2
, int a3
, int a4
, int a5
, int a6
, int a7
,
23 int a8
, int a9
, int a10
)
39 void __attribute__ ((noinline
, noclone
))
40 initialize_array (unsigned char *a
, int len
)
44 for (i
= 0; i
< (len
/ 2); i
++)
53 #define t_frame_pattern(name, local_size, callee_saved)\
57 unsigned char a[local_size];\
58 initialize_array (a, local_size); \
59 __asm__ ("":::callee_saved); \
60 if (a[0] != a[local_size - 1] \
63 if (a[local_size / 2 - 1] != a[local_size / 2] \
64 || a[local_size / 2 - 1] != CVT (local_size / 2 - 1)) \
69 #define t_frame_pattern_outgoing(name, local_size, callee_saved, out_going_num, ...)\
73 unsigned char a[local_size];\
74 initialize_array (a, local_size); \
75 __asm__ ("":::callee_saved); \
76 if (a[0] != a[local_size - 1] \
79 if (a[local_size / 2 - 1] != a[local_size / 2] \
80 || a[local_size / 2 - 1] != CVT (local_size / 2 - 1)) \
82 check_args_ ## out_going_num (a[0], a[1], a[2], a[3], a[4], a[5], a[6],\
87 #define t_frame_run(name) \
89 main (int argc, char **argv) \