/src/xen/tools/tests/x86_emulator/wrappers.c
Line | Count | Source |
1 | | #include <stdarg.h> |
2 | | |
3 | | #define WRAP(x) typeof(x) __wrap_ ## x, __real_ ## x |
4 | | #include "x86-emulate.h" |
5 | | |
6 | | size_t __wrap_fwrite(const void *src, size_t sz, size_t n, FILE *f) |
7 | 97.9k | { |
8 | 97.9k | emul_save_fpu_state(); |
9 | 97.9k | sz = __real_fwrite(src, sz, n, f); |
10 | 97.9k | emul_restore_fpu_state(); |
11 | | |
12 | 97.9k | return sz; |
13 | 97.9k | } |
14 | | |
15 | | int __wrap_memcmp(const void *p1, const void *p2, size_t sz) |
16 | 121k | { |
17 | 121k | int rc; |
18 | | |
19 | 121k | emul_save_fpu_state(); |
20 | 121k | rc = __real_memcmp(p1, p2, sz); |
21 | 121k | emul_restore_fpu_state(); |
22 | | |
23 | 121k | return rc; |
24 | 121k | } |
25 | | |
26 | | void *__wrap_memcpy(void *dst, const void *src, size_t sz) |
27 | 2.43M | { |
28 | 2.43M | emul_save_fpu_state(); |
29 | 2.43M | __real_memcpy(dst, src, sz); |
30 | 2.43M | emul_restore_fpu_state(); |
31 | | |
32 | 2.43M | return dst; |
33 | 2.43M | } |
34 | | |
35 | | void *__wrap_memset(void *dst, int c, size_t sz) |
36 | 196k | { |
37 | 196k | emul_save_fpu_state(); |
38 | 196k | __real_memset(dst, c, sz); |
39 | 196k | emul_restore_fpu_state(); |
40 | | |
41 | 196k | return dst; |
42 | 196k | } |
43 | | |
44 | | int __wrap_printf(const char *fmt, ...) |
45 | 8.16M | { |
46 | 8.16M | va_list varg; |
47 | 8.16M | int rc; |
48 | | |
49 | 8.16M | emul_save_fpu_state(); |
50 | 8.16M | va_start(varg, fmt); |
51 | 8.16M | rc = __real_vprintf(fmt, varg); |
52 | 8.16M | va_end(varg); |
53 | 8.16M | emul_restore_fpu_state(); |
54 | | |
55 | 8.16M | return rc; |
56 | 8.16M | } |
57 | | |
58 | | int __wrap_putchar(int c) |
59 | 1.38M | { |
60 | 1.38M | int rc; |
61 | | |
62 | 1.38M | emul_save_fpu_state(); |
63 | 1.38M | rc = __real_putchar(c); |
64 | 1.38M | emul_restore_fpu_state(); |
65 | | |
66 | 1.38M | return rc; |
67 | 1.38M | } |
68 | | |
69 | | int __wrap_puts(const char *str) |
70 | 1.13M | { |
71 | 1.13M | int rc; |
72 | | |
73 | 1.13M | emul_save_fpu_state(); |
74 | 1.13M | rc = __real_puts(str); |
75 | 1.13M | emul_restore_fpu_state(); |
76 | | |
77 | 1.13M | return rc; |
78 | 1.13M | } |
79 | | |
80 | | int __wrap_snprintf(char *buf, size_t n, const char *fmt, ...) |
81 | 4 | { |
82 | 4 | va_list varg; |
83 | 4 | int rc; |
84 | | |
85 | 4 | emul_save_fpu_state(); |
86 | 4 | va_start(varg, fmt); |
87 | 4 | rc = __real_vsnprintf(buf, n, fmt, varg); |
88 | 4 | va_end(varg); |
89 | 4 | emul_restore_fpu_state(); |
90 | | |
91 | 4 | return rc; |
92 | 4 | } |
93 | | |
94 | | int __wrap_vsnprintf(char *buf, size_t n, const char *fmt, va_list varg) |
95 | 0 | { |
96 | 0 | int rc; |
97 | |
|
98 | 0 | emul_save_fpu_state(); |
99 | 0 | rc = __real_vsnprintf(buf, n, fmt, varg); |
100 | 0 | emul_restore_fpu_state(); |
101 | |
|
102 | 0 | return rc; |
103 | 0 | } |
104 | | |
105 | | char *__wrap_strstr(const char *s1, const char *s2) |
106 | 107 | { |
107 | 107 | char *s; |
108 | | |
109 | 107 | emul_save_fpu_state(); |
110 | 107 | s = __real_strstr(s1, s2); |
111 | 107 | emul_restore_fpu_state(); |
112 | | |
113 | 107 | return s; |
114 | 107 | } |