Viewing file: test_frame_common.h (1.93 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
extern void abort ();
#define CVT(v) ((unsigned char)(v))
static void __attribute__((noinline, noclone)) check_args_8 (int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { if (a0 != 0 || a1 != 1 || a2 != 2 || a3 != 3 || a4 != 4 || a5 != 5 || a6 != 6 || a7 != 7 || a8 != 8) abort (); }
static void __attribute__((noinline, noclone)) check_args_24 (int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10) { if (a0 != 0 || a1 != 1 || a2 != 2 || a3 != 3 || a4 != 4 || a5 != 5 || a6 != 6 || a7 != 7 || a8 != 8 || a9 != 9 || a10 != 10) abort (); }
void __attribute__ ((noinline, noclone)) initialize_array (unsigned char *a, int len) { int i;
for (i = 0; i < (len / 2); i++) { a[i] = i; a[len - i - 1] = i; }
return; }
#define t_frame_pattern(name, local_size, callee_saved)\ int \ name (void)\ {\ unsigned char a[local_size];\ initialize_array (a, local_size); \ __asm__ ("":::callee_saved); \ if (a[0] != a[local_size - 1] \ || a[0] != 0) \ return 0; \ if (a[local_size / 2 - 1] != a[local_size / 2] \ || a[local_size / 2 - 1] != CVT (local_size / 2 - 1)) \ return 0; \ return 1; \ }
#define t_frame_pattern_outgoing(name, local_size, callee_saved, out_going_num, ...)\ int \ name (void)\ {\ unsigned char a[local_size];\ initialize_array (a, local_size); \ __asm__ ("":::callee_saved); \ if (a[0] != a[local_size - 1] \ || a[0] != 0) \ return 0; \ if (a[local_size / 2 - 1] != a[local_size / 2] \ || a[local_size / 2 - 1] != CVT (local_size / 2 - 1)) \ return 0; \ check_args_ ## out_going_num (a[0], a[1], a[2], a[3], a[4], a[5], a[6],\ a[7], __VA_ARGS__); \ return 1; \ }
#define t_frame_run(name) \ int \ main (int argc, char **argv) \ {\ if (!name ())\ abort ();\ return 0;\ }
|