1a5f14abfSJohn Baldwin /*-
2a5f14abfSJohn Baldwin * Copyright (c) 2015 John H. Baldwin <jhb@FreeBSD.org>
3a5f14abfSJohn Baldwin *
4a5f14abfSJohn Baldwin * Redistribution and use in source and binary forms, with or without
5a5f14abfSJohn Baldwin * modification, are permitted provided that the following conditions
6a5f14abfSJohn Baldwin * are met:
7a5f14abfSJohn Baldwin * 1. Redistributions of source code must retain the above copyright
8a5f14abfSJohn Baldwin * notice, this list of conditions and the following disclaimer.
9a5f14abfSJohn Baldwin * 2. Redistributions in binary form must reproduce the above copyright
10a5f14abfSJohn Baldwin * notice, this list of conditions and the following disclaimer in the
11a5f14abfSJohn Baldwin * documentation and/or other materials provided with the distribution.
12a5f14abfSJohn Baldwin *
13a5f14abfSJohn Baldwin * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14a5f14abfSJohn Baldwin * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15a5f14abfSJohn Baldwin * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16a5f14abfSJohn Baldwin * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17a5f14abfSJohn Baldwin * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18a5f14abfSJohn Baldwin * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19a5f14abfSJohn Baldwin * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20a5f14abfSJohn Baldwin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21a5f14abfSJohn Baldwin * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22a5f14abfSJohn Baldwin * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23a5f14abfSJohn Baldwin * SUCH DAMAGE.
24a5f14abfSJohn Baldwin */
25a5f14abfSJohn Baldwin
26a5f14abfSJohn Baldwin #include <sys/cdefs.h>
27a5f14abfSJohn Baldwin /*
28a5f14abfSJohn Baldwin * Map system call codes to names for the supported ABIs on each
29a5f14abfSJohn Baldwin * platform. Rather than regnerating system call name tables locally
30a5f14abfSJohn Baldwin * during the build, use the generated tables in the kernel source
31a5f14abfSJohn Baldwin * tree.
32a5f14abfSJohn Baldwin */
33a5f14abfSJohn Baldwin
34a5f14abfSJohn Baldwin #include <sys/param.h>
359289f547SJohn Baldwin #include <sys/acl.h>
369289f547SJohn Baldwin #include <sys/wait.h>
379289f547SJohn Baldwin #include <stdbool.h>
38a5f14abfSJohn Baldwin #include <stdio.h>
39a5f14abfSJohn Baldwin #include <sysdecode.h>
40a5f14abfSJohn Baldwin
41a5f14abfSJohn Baldwin static
42a5f14abfSJohn Baldwin #include <kern/syscalls.c>
43a5f14abfSJohn Baldwin
44*9bab18b8SOlivier Houchard #if defined(__amd64__) || defined(__powerpc64__) || defined(__aarch64__)
45a5f14abfSJohn Baldwin static
46a5f14abfSJohn Baldwin #include <compat/freebsd32/freebsd32_syscalls.c>
47a5f14abfSJohn Baldwin #endif
48a5f14abfSJohn Baldwin
499a16bd16SEd Maste #if defined(__aarch64__) || defined(__amd64__) || defined(__i386__)
50a5f14abfSJohn Baldwin static
519a16bd16SEd Maste #ifdef __aarch64__
529a16bd16SEd Maste #include <arm64/linux/linux_syscalls.c>
539a16bd16SEd Maste #elif __amd64__
54a5f14abfSJohn Baldwin #include <amd64/linux/linux_syscalls.c>
55a5f14abfSJohn Baldwin #else
56a5f14abfSJohn Baldwin #include <i386/linux/linux_syscalls.c>
57a5f14abfSJohn Baldwin #endif
58a5f14abfSJohn Baldwin #endif
59a5f14abfSJohn Baldwin
60a5f14abfSJohn Baldwin #ifdef __amd64__
61a5f14abfSJohn Baldwin static
62a5f14abfSJohn Baldwin #include <amd64/linux32/linux32_syscalls.c>
63a5f14abfSJohn Baldwin #endif
64a5f14abfSJohn Baldwin
65a5f14abfSJohn Baldwin const char *
sysdecode_syscallname(enum sysdecode_abi abi,unsigned int code)66a5f14abfSJohn Baldwin sysdecode_syscallname(enum sysdecode_abi abi, unsigned int code)
67a5f14abfSJohn Baldwin {
68a5f14abfSJohn Baldwin
69a5f14abfSJohn Baldwin switch (abi) {
705842bd68SJohn Baldwin case SYSDECODE_ABI_FREEBSD:
71a5f14abfSJohn Baldwin if (code < nitems(syscallnames))
72a5f14abfSJohn Baldwin return (syscallnames[code]);
73a5f14abfSJohn Baldwin break;
74*9bab18b8SOlivier Houchard #if defined(__amd64__) || defined(__powerpc64__) || defined(__aarch64__)
755842bd68SJohn Baldwin case SYSDECODE_ABI_FREEBSD32:
76a5f14abfSJohn Baldwin if (code < nitems(freebsd32_syscallnames))
77a5f14abfSJohn Baldwin return (freebsd32_syscallnames[code]);
78a5f14abfSJohn Baldwin break;
79a5f14abfSJohn Baldwin #endif
809a16bd16SEd Maste #if defined(__aarch64__) || defined(__amd64__) || defined(__i386__)
815842bd68SJohn Baldwin case SYSDECODE_ABI_LINUX:
82a5f14abfSJohn Baldwin if (code < nitems(linux_syscallnames))
83a5f14abfSJohn Baldwin return (linux_syscallnames[code]);
84a5f14abfSJohn Baldwin break;
85a5f14abfSJohn Baldwin #endif
86a5f14abfSJohn Baldwin #ifdef __amd64__
875842bd68SJohn Baldwin case SYSDECODE_ABI_LINUX32:
88a5f14abfSJohn Baldwin if (code < nitems(linux32_syscallnames))
89a5f14abfSJohn Baldwin return (linux32_syscallnames[code]);
90a5f14abfSJohn Baldwin break;
91a5f14abfSJohn Baldwin #endif
92a5f14abfSJohn Baldwin default:
93a5f14abfSJohn Baldwin break;
94a5f14abfSJohn Baldwin }
95a5f14abfSJohn Baldwin return (NULL);
96a5f14abfSJohn Baldwin }
97