master
c 51 lines 884 Bytes
Raw
1 /*
2 * Test GDB syscall catchpoints.
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 #define _GNU_SOURCE
7 #include <stdlib.h>
8 #include <unistd.h>
9
10 const char *catch_syscalls_state = "start";
11
12 void end_of_main(void)
13 {
14 }
15
16 int main(void)
17 {
18 int ret = EXIT_FAILURE;
19 char c0 = 'A', c1;
20 int fd[2];
21
22 catch_syscalls_state = "pipe2";
23 if (pipe2(fd, 0)) {
24 goto out;
25 }
26
27 catch_syscalls_state = "write";
28 if (write(fd[1], &c0, sizeof(c0)) != sizeof(c0)) {
29 goto out_close;
30 }
31
32 catch_syscalls_state = "read";
33 if (read(fd[0], &c1, sizeof(c1)) != sizeof(c1)) {
34 goto out_close;
35 }
36
37 catch_syscalls_state = "check";
38 if (c0 == c1) {
39 ret = EXIT_SUCCESS;
40 }
41
42 out_close:
43 catch_syscalls_state = "close";
44 close(fd[0]);
45 close(fd[1]);
46
47 out:
48 catch_syscalls_state = "end";
49 end_of_main();
50 return ret;
51 }