diff options
Diffstat (limited to 'gdb/syscalls')
-rwxr-xr-x | gdb/syscalls/riscv-linux-canonicalize-syscall-gen.py | 153 | ||||
-rw-r--r-- | gdb/syscalls/riscv-linux.xml | 340 | ||||
-rw-r--r-- | gdb/syscalls/riscv-linux.xml.in | 344 | ||||
-rwxr-xr-x | gdb/syscalls/update-linux-from-src.sh | 5 | ||||
-rwxr-xr-x | gdb/syscalls/update-linux.sh | 3 |
5 files changed, 845 insertions, 0 deletions
diff --git a/gdb/syscalls/riscv-linux-canonicalize-syscall-gen.py b/gdb/syscalls/riscv-linux-canonicalize-syscall-gen.py new file mode 100755 index 0000000..aaf3943 --- /dev/null +++ b/gdb/syscalls/riscv-linux-canonicalize-syscall-gen.py @@ -0,0 +1,153 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2024-2025 Free Software Foundation, Inc. +# Contributed by Timur Golubovich + +# This file is part of GDB. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +# To get help message for this script, run: +# ./gdb/syscalls/riscv-linux-canonicalize-syscall-gen.py --help + +# Execution result: + +# usage: riscv-linux-canonicalize-syscall-gen.py [-h] +# +# Generate file gdb/riscv-linux-canonicalize-syscall-gen.c from +# gdb/syscalls/riscv-linux.xml. +# +# options: +# -h, --help show this help message and exit + +import argparse +import re +import xml.etree.ElementTree as ET +from pathlib import Path + +FILE = Path(__file__).resolve() + +HEAD = f"""\ +/* DO NOT EDIT: Autogenerated by {FILE.name} + + Copyright (C) 2024-2025 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include "defs.h" +#include "riscv-linux-tdep.h" + +/* riscv_linux_canonicalize_syscall maps from the native RISC-V Linux set + of syscall ids into a canonical set of syscall ids used by + process record. */ + +enum gdb_syscall +riscv_linux_canonicalize_syscall (int syscall) +{{ + switch (syscall) + {{ +""" + +TAIL = """\ + default: + return gdb_sys_no_syscall; + } +} +""" + +HELP_MESSAGE = """\ +Generate file gdb/riscv-linux-canonicalize-syscall-gen.c from +gdb/syscalls/riscv-linux.xml. +""" + + +class Generator: + def _get_gdb_syscalls(self, gdb_syscalls_path: Path) -> set[str]: + gdb_syscalls = set[str]() + with open(gdb_syscalls_path, "r", encoding="UTF-8") as file: + for line in file: + match = re.search(r"(gdb_sys_\S+)\s*=", line) + if match: + gdb_syscalls.add(match[1].strip()) + return gdb_syscalls + + def _get_arch_syscalls(self, xml_syscalls_path: Path) -> dict[str, int]: + arch_syscalls: dict[str, int] = {} + syscalls_info = ET.parse(xml_syscalls_path) + for syscall in syscalls_info.findall("syscall"): + sysname = syscall.attrib["name"] + sysno = int(syscall.attrib["number"]) + arch_syscalls[sysname] = sysno + return arch_syscalls + + def _get_canon_syscalls_lines( + self, + arch_syscalls: dict[str, int], + gdb_syscalls: set[str], + exceptions: dict[str, str], + ) -> list[str]: + canon_syscalls: dict[int, str] = {} + for sysname, sysno in arch_syscalls.items(): + if sysname in exceptions: + sysname = exceptions[sysname] + gdb_sysname = f"gdb_sys_{sysname}" + value = f" /* case {sysno}: return {gdb_sysname}; */\n" + if gdb_sysname in gdb_syscalls: + value = f" case {sysno}: return {gdb_sysname};\n" + canon_syscalls[sysno] = value + return [canon_syscalls[sysno] for sysno in sorted(canon_syscalls)] + + def generate(self) -> None: + repo_path = FILE.parent.parent.parent + gdb_path = repo_path / "gdb" + xml_syscalls_path = gdb_path / "syscalls" / "riscv-linux.xml" + gdb_syscalls_path = gdb_path / "linux-record.h" + arch_syscalls_path = gdb_path / "riscv-linux-canonicalize-syscall-gen.c" + exceptions = {"mmap": "old_mmap"} + + arch_syscalls = self._get_arch_syscalls(xml_syscalls_path) + gdb_syscalls = self._get_gdb_syscalls(gdb_syscalls_path) + canon_syscalls_lines = self._get_canon_syscalls_lines( + arch_syscalls, gdb_syscalls, exceptions + ) + + with open(arch_syscalls_path, "w", encoding="UTF-8") as file: + file.writelines(HEAD) + file.writelines(canon_syscalls_lines) + file.writelines(TAIL) + + +def main() -> int: + parser = argparse.ArgumentParser(description=HELP_MESSAGE) + parser.parse_args() + Generator().generate() + return 0 + + +if __name__ == "__main__": + main() diff --git a/gdb/syscalls/riscv-linux.xml b/gdb/syscalls/riscv-linux.xml new file mode 100644 index 0000000..3578c3f --- /dev/null +++ b/gdb/syscalls/riscv-linux.xml @@ -0,0 +1,340 @@ +<?xml version="1.0"?> +<!DOCTYPE syscalls_info SYSTEM "gdb-syscalls.dtd"> +<!-- Copyright (C) 2025 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> +<!-- This file was generated using the following file: + + <sys/syscall.h> + + The file mentioned above belongs to the Linux Kernel. --> +<syscalls_info> + <syscall name="io_setup" number="0" groups="memory"/> + <syscall name="io_destroy" number="1" groups="memory"/> + <syscall name="io_submit" number="2"/> + <syscall name="io_cancel" number="3"/> + <syscall name="io_getevents" number="4"/> + <syscall name="setxattr" number="5" groups="file"/> + <syscall name="lsetxattr" number="6" groups="file"/> + <syscall name="fsetxattr" number="7" groups="descriptor"/> + <syscall name="getxattr" number="8" groups="file"/> + <syscall name="lgetxattr" number="9" groups="file"/> + <syscall name="fgetxattr" number="10" groups="descriptor"/> + <syscall name="listxattr" number="11" groups="file"/> + <syscall name="llistxattr" number="12" groups="file"/> + <syscall name="flistxattr" number="13" groups="descriptor"/> + <syscall name="removexattr" number="14" groups="file"/> + <syscall name="lremovexattr" number="15" groups="file"/> + <syscall name="fremovexattr" number="16" groups="descriptor"/> + <syscall name="getcwd" number="17" groups="file"/> + <syscall name="lookup_dcookie" number="18"/> + <syscall name="eventfd2" number="19" groups="descriptor"/> + <syscall name="epoll_create1" number="20" groups="descriptor"/> + <syscall name="epoll_ctl" number="21" groups="descriptor"/> + <syscall name="epoll_pwait" number="22" groups="descriptor"/> + <syscall name="dup" number="23" groups="descriptor"/> + <syscall name="dup3" number="24" groups="descriptor"/> + <syscall name="fcntl" number="25" groups="descriptor"/> + <syscall name="inotify_init1" number="26" groups="descriptor"/> + <syscall name="inotify_add_watch" number="27" groups="descriptor,file"/> + <syscall name="inotify_rm_watch" number="28" groups="descriptor"/> + <syscall name="ioctl" number="29" groups="descriptor"/> + <syscall name="ioprio_set" number="30"/> + <syscall name="ioprio_get" number="31"/> + <syscall name="flock" number="32" groups="descriptor"/> + <syscall name="mknodat" number="33" groups="descriptor,file"/> + <syscall name="mkdirat" number="34" groups="descriptor,file"/> + <syscall name="unlinkat" number="35" groups="descriptor,file"/> + <syscall name="symlinkat" number="36" groups="descriptor,file"/> + <syscall name="linkat" number="37" groups="descriptor,file"/> + <syscall name="umount2" number="39" groups="file"/> + <syscall name="mount" number="40" groups="file"/> + <syscall name="pivot_root" number="41" groups="file"/> + <syscall name="nfsservctl" number="42"/> + <syscall name="statfs" number="43" groups="file"/> + <syscall name="fstatfs" number="44" groups="descriptor"/> + <syscall name="truncate" number="45" groups="file"/> + <syscall name="ftruncate" number="46" groups="descriptor"/> + <syscall name="fallocate" number="47" groups="descriptor"/> + <syscall name="faccessat" number="48" groups="descriptor,file"/> + <syscall name="chdir" number="49" groups="file"/> + <syscall name="fchdir" number="50" groups="descriptor"/> + <syscall name="chroot" number="51" groups="file"/> + <syscall name="fchmod" number="52" groups="descriptor"/> + <syscall name="fchmodat" number="53" groups="descriptor,file"/> + <syscall name="fchownat" number="54" groups="descriptor,file"/> + <syscall name="fchown" number="55" groups="descriptor"/> + <syscall name="openat" number="56" groups="descriptor,file"/> + <syscall name="close" number="57" groups="descriptor"/> + <syscall name="vhangup" number="58"/> + <syscall name="pipe2" number="59" groups="descriptor"/> + <syscall name="quotactl" number="60" groups="file"/> + <syscall name="getdents64" number="61" groups="descriptor"/> + <syscall name="lseek" number="62" groups="descriptor"/> + <syscall name="read" number="63" groups="descriptor"/> + <syscall name="write" number="64" groups="descriptor"/> + <syscall name="readv" number="65" groups="descriptor"/> + <syscall name="writev" number="66" groups="descriptor"/> + <syscall name="pread64" number="67" groups="descriptor"/> + <syscall name="pwrite64" number="68" groups="descriptor"/> + <syscall name="preadv" number="69" groups="descriptor"/> + <syscall name="pwritev" number="70" groups="descriptor"/> + <syscall name="sendfile" number="71" groups="descriptor,network"/> + <syscall name="pselect6" number="72" groups="descriptor"/> + <syscall name="ppoll" number="73" groups="descriptor"/> + <syscall name="signalfd4" number="74" groups="descriptor,signal"/> + <syscall name="vmsplice" number="75" groups="descriptor"/> + <syscall name="splice" number="76" groups="descriptor"/> + <syscall name="tee" number="77" groups="descriptor"/> + <syscall name="readlinkat" number="78" groups="descriptor,file"/> + <syscall name="newfstatat" number="79" groups="descriptor,file"/> + <syscall name="fstat" number="80" groups="descriptor"/> + <syscall name="sync" number="81"/> + <syscall name="fsync" number="82" groups="descriptor"/> + <syscall name="fdatasync" number="83" groups="descriptor"/> + <syscall name="sync_file_range" number="84" groups="descriptor"/> + <syscall name="timerfd_create" number="85" groups="descriptor"/> + <syscall name="timerfd_settime" number="86" groups="descriptor"/> + <syscall name="timerfd_gettime" number="87" groups="descriptor"/> + <syscall name="utimensat" number="88" groups="descriptor,file"/> + <syscall name="acct" number="89" groups="file"/> + <syscall name="capget" number="90"/> + <syscall name="capset" number="91"/> + <syscall name="personality" number="92"/> + <syscall name="exit" number="93" groups="process"/> + <syscall name="exit_group" number="94" groups="process"/> + <syscall name="waitid" number="95" groups="process"/> + <syscall name="set_tid_address" number="96"/> + <syscall name="unshare" number="97"/> + <syscall name="futex" number="98"/> + <syscall name="set_robust_list" number="99"/> + <syscall name="get_robust_list" number="100"/> + <syscall name="nanosleep" number="101"/> + <syscall name="getitimer" number="102"/> + <syscall name="setitimer" number="103"/> + <syscall name="kexec_load" number="104"/> + <syscall name="init_module" number="105"/> + <syscall name="delete_module" number="106"/> + <syscall name="timer_create" number="107"/> + <syscall name="timer_gettime" number="108"/> + <syscall name="timer_getoverrun" number="109"/> + <syscall name="timer_settime" number="110"/> + <syscall name="timer_delete" number="111"/> + <syscall name="clock_settime" number="112"/> + <syscall name="clock_gettime" number="113"/> + <syscall name="clock_getres" number="114"/> + <syscall name="clock_nanosleep" number="115"/> + <syscall name="syslog" number="116"/> + <syscall name="ptrace" number="117"/> + <syscall name="sched_setparam" number="118"/> + <syscall name="sched_setscheduler" number="119"/> + <syscall name="sched_getscheduler" number="120"/> + <syscall name="sched_getparam" number="121"/> + <syscall name="sched_setaffinity" number="122"/> + <syscall name="sched_getaffinity" number="123"/> + <syscall name="sched_yield" number="124"/> + <syscall name="sched_get_priority_max" number="125"/> + <syscall name="sched_get_priority_min" number="126"/> + <syscall name="sched_rr_get_interval" number="127"/> + <syscall name="restart_syscall" number="128"/> + <syscall name="kill" number="129" groups="signal,process"/> + <syscall name="tkill" number="130" groups="signal,process"/> + <syscall name="tgkill" number="131" groups="signal,process"/> + <syscall name="sigaltstack" number="132" groups="signal"/> + <syscall name="rt_sigsuspend" number="133" groups="signal"/> + <syscall name="rt_sigaction" number="134" groups="signal"/> + <syscall name="rt_sigprocmask" number="135" groups="signal"/> + <syscall name="rt_sigpending" number="136" groups="signal"/> + <syscall name="rt_sigtimedwait" number="137" groups="signal"/> + <syscall name="rt_sigqueueinfo" number="138" groups="signal,process"/> + <syscall name="rt_sigreturn" number="139" groups="signal"/> + <syscall name="setpriority" number="140"/> + <syscall name="getpriority" number="141"/> + <syscall name="reboot" number="142"/> + <syscall name="setregid" number="143"/> + <syscall name="setgid" number="144"/> + <syscall name="setreuid" number="145"/> + <syscall name="setuid" number="146"/> + <syscall name="setresuid" number="147"/> + <syscall name="getresuid" number="148"/> + <syscall name="setresgid" number="149"/> + <syscall name="getresgid" number="150"/> + <syscall name="setfsuid" number="151"/> + <syscall name="setfsgid" number="152"/> + <syscall name="times" number="153"/> + <syscall name="setpgid" number="154"/> + <syscall name="getpgid" number="155"/> + <syscall name="getsid" number="156"/> + <syscall name="setsid" number="157"/> + <syscall name="getgroups" number="158"/> + <syscall name="setgroups" number="159"/> + <syscall name="uname" number="160"/> + <syscall name="sethostname" number="161"/> + <syscall name="setdomainname" number="162"/> + <syscall name="getrlimit" number="163"/> + <syscall name="setrlimit" number="164"/> + <syscall name="getrusage" number="165"/> + <syscall name="umask" number="166"/> + <syscall name="prctl" number="167"/> + <syscall name="getcpu" number="168"/> + <syscall name="gettimeofday" number="169"/> + <syscall name="settimeofday" number="170"/> + <syscall name="adjtimex" number="171"/> + <syscall name="getpid" number="172"/> + <syscall name="getppid" number="173"/> + <syscall name="getuid" number="174"/> + <syscall name="geteuid" number="175"/> + <syscall name="getgid" number="176"/> + <syscall name="getegid" number="177"/> + <syscall name="gettid" number="178"/> + <syscall name="sysinfo" number="179"/> + <syscall name="mq_open" number="180" groups="descriptor"/> + <syscall name="mq_unlink" number="181"/> + <syscall name="mq_timedsend" number="182" groups="descriptor"/> + <syscall name="mq_timedreceive" number="183" groups="descriptor"/> + <syscall name="mq_notify" number="184" groups="descriptor"/> + <syscall name="mq_getsetattr" number="185" groups="descriptor"/> + <syscall name="msgget" number="186" groups="ipc"/> + <syscall name="msgctl" number="187" groups="ipc"/> + <syscall name="msgrcv" number="188" groups="ipc"/> + <syscall name="msgsnd" number="189" groups="ipc"/> + <syscall name="semget" number="190" groups="ipc"/> + <syscall name="semctl" number="191" groups="ipc"/> + <syscall name="semtimedop" number="192" groups="ipc"/> + <syscall name="semop" number="193" groups="ipc"/> + <syscall name="shmget" number="194" groups="ipc"/> + <syscall name="shmctl" number="195" groups="ipc"/> + <syscall name="shmat" number="196" groups="ipc,memory"/> + <syscall name="shmdt" number="197" groups="ipc,memory"/> + <syscall name="socket" number="198" groups="network"/> + <syscall name="socketpair" number="199" groups="network"/> + <syscall name="bind" number="200" groups="network"/> + <syscall name="listen" number="201" groups="network"/> + <syscall name="accept" number="202" groups="network"/> + <syscall name="connect" number="203" groups="network"/> + <syscall name="getsockname" number="204" groups="network"/> + <syscall name="getpeername" number="205" groups="network"/> + <syscall name="sendto" number="206" groups="network"/> + <syscall name="recvfrom" number="207" groups="network"/> + <syscall name="setsockopt" number="208" groups="network"/> + <syscall name="getsockopt" number="209" groups="network"/> + <syscall name="shutdown" number="210" groups="network"/> + <syscall name="sendmsg" number="211" groups="network"/> + <syscall name="recvmsg" number="212" groups="network"/> + <syscall name="readahead" number="213" groups="descriptor"/> + <syscall name="brk" number="214" groups="memory"/> + <syscall name="munmap" number="215" groups="memory"/> + <syscall name="mremap" number="216" groups="memory"/> + <syscall name="add_key" number="217"/> + <syscall name="request_key" number="218"/> + <syscall name="keyctl" number="219"/> + <syscall name="clone" number="220" groups="process"/> + <syscall name="execve" number="221" groups="file,process"/> + <syscall name="mmap" number="222" groups="descriptor,memory"/> + <syscall name="fadvise64" number="223" groups="descriptor"/> + <syscall name="swapon" number="224" groups="file"/> + <syscall name="swapoff" number="225" groups="file"/> + <syscall name="mprotect" number="226" groups="memory"/> + <syscall name="msync" number="227" groups="memory"/> + <syscall name="mlock" number="228" groups="memory"/> + <syscall name="munlock" number="229" groups="memory"/> + <syscall name="mlockall" number="230" groups="memory"/> + <syscall name="munlockall" number="231" groups="memory"/> + <syscall name="mincore" number="232" groups="memory"/> + <syscall name="madvise" number="233" groups="memory"/> + <syscall name="remap_file_pages" number="234" groups="memory"/> + <syscall name="mbind" number="235" groups="memory"/> + <syscall name="get_mempolicy" number="236" groups="memory"/> + <syscall name="set_mempolicy" number="237" groups="memory"/> + <syscall name="migrate_pages" number="238" groups="memory"/> + <syscall name="move_pages" number="239" groups="memory"/> + <syscall name="rt_tgsigqueueinfo" number="240" groups="process,signal"/> + <syscall name="perf_event_open" number="241" groups="descriptor"/> + <syscall name="accept4" number="242" groups="network"/> + <syscall name="recvmmsg" number="243" groups="network"/> + <syscall name="riscv_hwprobe" number="258"/> + <syscall name="riscv_flush_icache" number="259" groups="memory"/> + <syscall name="wait4" number="260" groups="process"/> + <syscall name="prlimit64" number="261"/> + <syscall name="fanotify_init" number="262" groups="descriptor"/> + <syscall name="fanotify_mark" number="263" groups="descriptor,file"/> + <syscall name="name_to_handle_at" number="264" groups="descriptor,file"/> + <syscall name="open_by_handle_at" number="265" groups="descriptor"/> + <syscall name="clock_adjtime" number="266"/> + <syscall name="syncfs" number="267" groups="descriptor"/> + <syscall name="setns" number="268" groups="descriptor"/> + <syscall name="sendmmsg" number="269" groups="network"/> + <syscall name="process_vm_readv" number="270"/> + <syscall name="process_vm_writev" number="271"/> + <syscall name="kcmp" number="272"/> + <syscall name="finit_module" number="273" groups="descriptor"/> + <syscall name="sched_setattr" number="274"/> + <syscall name="sched_getattr" number="275"/> + <syscall name="renameat2" number="276" groups="descriptor,file"/> + <syscall name="seccomp" number="277"/> + <syscall name="getrandom" number="278"/> + <syscall name="memfd_create" number="279" groups="descriptor"/> + <syscall name="bpf" number="280" groups="descriptor"/> + <syscall name="execveat" number="281" groups="descriptor,file,process"/> + <syscall name="userfaultfd" number="282" groups="descriptor"/> + <syscall name="membarrier" number="283"/> + <syscall name="mlock2" number="284" groups="memory"/> + <syscall name="copy_file_range" number="285" groups="descriptor"/> + <syscall name="preadv2" number="286" groups="descriptor"/> + <syscall name="pwritev2" number="287" groups="descriptor"/> + <syscall name="pkey_mprotect" number="288" groups="memory"/> + <syscall name="pkey_alloc" number="289"/> + <syscall name="pkey_free" number="290"/> + <syscall name="statx" number="291" groups="descriptor,file"/> + <syscall name="io_pgetevents" number="292"/> + <syscall name="rseq" number="293"/> + <syscall name="kexec_file_load" number="294" groups="descriptor"/> + <syscall name="pidfd_send_signal" number="424" groups="descriptor,signal,process"/> + <syscall name="io_uring_setup" number="425" groups="descriptor"/> + <syscall name="io_uring_enter" number="426" groups="descriptor,signal"/> + <syscall name="io_uring_register" number="427" groups="descriptor,memory"/> + <syscall name="open_tree" number="428" groups="descriptor,file"/> + <syscall name="move_mount" number="429" groups="descriptor,file"/> + <syscall name="fsopen" number="430" groups="descriptor"/> + <syscall name="fsconfig" number="431" groups="descriptor,file"/> + <syscall name="fsmount" number="432" groups="descriptor"/> + <syscall name="fspick" number="433" groups="descriptor,file"/> + <syscall name="pidfd_open" number="434" groups="descriptor"/> + <syscall name="clone3" number="435" groups="process"/> + <syscall name="close_range" number="436"/> + <syscall name="openat2" number="437" groups="descriptor,file"/> + <syscall name="pidfd_getfd" number="438" groups="descriptor"/> + <syscall name="faccessat2" number="439" groups="descriptor,file"/> + <syscall name="process_madvise" number="440" groups="descriptor"/> + <syscall name="epoll_pwait2" number="441" groups="descriptor"/> + <syscall name="mount_setattr" number="442" groups="descriptor,file"/> + <syscall name="quotactl_fd" number="443" groups="descriptor"/> + <syscall name="landlock_create_ruleset" number="444" groups="descriptor"/> + <syscall name="landlock_add_rule" number="445" groups="descriptor"/> + <syscall name="landlock_restrict_self" number="446" groups="descriptor"/> + <syscall name="memfd_secret" number="447" groups="descriptor"/> + <syscall name="process_mrelease" number="448" groups="descriptor"/> + <syscall name="futex_waitv" number="449"/> + <syscall name="set_mempolicy_home_node" number="450" groups="memory"/> + <syscall name="cachestat" number="451" groups="descriptor"/> + <syscall name="fchmodat2" number="452" groups="descriptor,file"/> + <syscall name="map_shadow_stack" number="453" groups="memory"/> + <syscall name="futex_wake" number="454"/> + <syscall name="futex_wait" number="455"/> + <syscall name="futex_requeue" number="456"/> + <syscall name="statmount" number="457"/> + <syscall name="listmount" number="458"/> + <syscall name="lsm_get_self_attr" number="459"/> + <syscall name="lsm_set_self_attr" number="460"/> + <syscall name="lsm_list_modules" number="461"/> + <syscall name="mseal" number="462" groups="memory"/> + <syscall name="setxattrat" number="463" groups="descriptor,file"/> + <syscall name="getxattrat" number="464" groups="descriptor,file"/> + <syscall name="listxattrat" number="465" groups="descriptor,file"/> + <syscall name="removexattrat" number="466" groups="descriptor,file"/> + <syscall name="open_tree_attr" number="467" groups="descriptor,file"/> + <syscall name="file_getattr" number="468" groups="descriptor,file"/> + <syscall name="file_setattr" number="469" groups="descriptor,file"/> +</syscalls_info> diff --git a/gdb/syscalls/riscv-linux.xml.in b/gdb/syscalls/riscv-linux.xml.in new file mode 100644 index 0000000..17b2b0a --- /dev/null +++ b/gdb/syscalls/riscv-linux.xml.in @@ -0,0 +1,344 @@ +<?xml version="1.0"?> +<!-- Copyright (C) 2025 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd"> + +<!-- This file was generated using the following file: + + <sys/syscall.h> + + The file mentioned above belongs to the Linux Kernel. --> + + +<syscalls_info> + <syscall name="io_setup" number="0"/> + <syscall name="io_destroy" number="1"/> + <syscall name="io_submit" number="2"/> + <syscall name="io_cancel" number="3"/> + <syscall name="io_getevents" number="4"/> + <syscall name="setxattr" number="5"/> + <syscall name="lsetxattr" number="6"/> + <syscall name="fsetxattr" number="7"/> + <syscall name="getxattr" number="8"/> + <syscall name="lgetxattr" number="9"/> + <syscall name="fgetxattr" number="10"/> + <syscall name="listxattr" number="11"/> + <syscall name="llistxattr" number="12"/> + <syscall name="flistxattr" number="13"/> + <syscall name="removexattr" number="14"/> + <syscall name="lremovexattr" number="15"/> + <syscall name="fremovexattr" number="16"/> + <syscall name="getcwd" number="17"/> + <syscall name="lookup_dcookie" number="18"/> + <syscall name="eventfd2" number="19"/> + <syscall name="epoll_create1" number="20"/> + <syscall name="epoll_ctl" number="21"/> + <syscall name="epoll_pwait" number="22"/> + <syscall name="dup" number="23"/> + <syscall name="dup3" number="24"/> + <syscall name="fcntl" number="25"/> + <syscall name="inotify_init1" number="26"/> + <syscall name="inotify_add_watch" number="27"/> + <syscall name="inotify_rm_watch" number="28"/> + <syscall name="ioctl" number="29"/> + <syscall name="ioprio_set" number="30"/> + <syscall name="ioprio_get" number="31"/> + <syscall name="flock" number="32"/> + <syscall name="mknodat" number="33"/> + <syscall name="mkdirat" number="34"/> + <syscall name="unlinkat" number="35"/> + <syscall name="symlinkat" number="36"/> + <syscall name="linkat" number="37"/> + <syscall name="umount2" number="39"/> + <syscall name="mount" number="40"/> + <syscall name="pivot_root" number="41"/> + <syscall name="nfsservctl" number="42"/> + <syscall name="statfs" number="43"/> + <syscall name="fstatfs" number="44"/> + <syscall name="truncate" number="45"/> + <syscall name="ftruncate" number="46"/> + <syscall name="fallocate" number="47"/> + <syscall name="faccessat" number="48"/> + <syscall name="chdir" number="49"/> + <syscall name="fchdir" number="50"/> + <syscall name="chroot" number="51"/> + <syscall name="fchmod" number="52"/> + <syscall name="fchmodat" number="53"/> + <syscall name="fchownat" number="54"/> + <syscall name="fchown" number="55"/> + <syscall name="openat" number="56"/> + <syscall name="close" number="57"/> + <syscall name="vhangup" number="58"/> + <syscall name="pipe2" number="59"/> + <syscall name="quotactl" number="60"/> + <syscall name="getdents64" number="61"/> + <syscall name="lseek" number="62"/> + <syscall name="read" number="63"/> + <syscall name="write" number="64"/> + <syscall name="readv" number="65"/> + <syscall name="writev" number="66"/> + <syscall name="pread64" number="67"/> + <syscall name="pwrite64" number="68"/> + <syscall name="preadv" number="69"/> + <syscall name="pwritev" number="70"/> + <syscall name="sendfile" number="71"/> + <syscall name="pselect6" number="72"/> + <syscall name="ppoll" number="73"/> + <syscall name="signalfd4" number="74"/> + <syscall name="vmsplice" number="75"/> + <syscall name="splice" number="76"/> + <syscall name="tee" number="77"/> + <syscall name="readlinkat" number="78"/> + <syscall name="newfstatat" number="79"/> + <syscall name="fstat" number="80"/> + <syscall name="sync" number="81"/> + <syscall name="fsync" number="82"/> + <syscall name="fdatasync" number="83"/> + <syscall name="sync_file_range" number="84"/> + <syscall name="timerfd_create" number="85"/> + <syscall name="timerfd_settime" number="86"/> + <syscall name="timerfd_gettime" number="87"/> + <syscall name="utimensat" number="88"/> + <syscall name="acct" number="89"/> + <syscall name="capget" number="90"/> + <syscall name="capset" number="91"/> + <syscall name="personality" number="92"/> + <syscall name="exit" number="93"/> + <syscall name="exit_group" number="94"/> + <syscall name="waitid" number="95"/> + <syscall name="set_tid_address" number="96"/> + <syscall name="unshare" number="97"/> + <syscall name="futex" number="98"/> + <syscall name="set_robust_list" number="99"/> + <syscall name="get_robust_list" number="100"/> + <syscall name="nanosleep" number="101"/> + <syscall name="getitimer" number="102"/> + <syscall name="setitimer" number="103"/> + <syscall name="kexec_load" number="104"/> + <syscall name="init_module" number="105"/> + <syscall name="delete_module" number="106"/> + <syscall name="timer_create" number="107"/> + <syscall name="timer_gettime" number="108"/> + <syscall name="timer_getoverrun" number="109"/> + <syscall name="timer_settime" number="110"/> + <syscall name="timer_delete" number="111"/> + <syscall name="clock_settime" number="112"/> + <syscall name="clock_gettime" number="113"/> + <syscall name="clock_getres" number="114"/> + <syscall name="clock_nanosleep" number="115"/> + <syscall name="syslog" number="116"/> + <syscall name="ptrace" number="117"/> + <syscall name="sched_setparam" number="118"/> + <syscall name="sched_setscheduler" number="119"/> + <syscall name="sched_getscheduler" number="120"/> + <syscall name="sched_getparam" number="121"/> + <syscall name="sched_setaffinity" number="122"/> + <syscall name="sched_getaffinity" number="123"/> + <syscall name="sched_yield" number="124"/> + <syscall name="sched_get_priority_max" number="125"/> + <syscall name="sched_get_priority_min" number="126"/> + <syscall name="sched_rr_get_interval" number="127"/> + <syscall name="restart_syscall" number="128"/> + <syscall name="kill" number="129"/> + <syscall name="tkill" number="130"/> + <syscall name="tgkill" number="131"/> + <syscall name="sigaltstack" number="132"/> + <syscall name="rt_sigsuspend" number="133"/> + <syscall name="rt_sigaction" number="134"/> + <syscall name="rt_sigprocmask" number="135"/> + <syscall name="rt_sigpending" number="136"/> + <syscall name="rt_sigtimedwait" number="137"/> + <syscall name="rt_sigqueueinfo" number="138"/> + <syscall name="rt_sigreturn" number="139"/> + <syscall name="setpriority" number="140"/> + <syscall name="getpriority" number="141"/> + <syscall name="reboot" number="142"/> + <syscall name="setregid" number="143"/> + <syscall name="setgid" number="144"/> + <syscall name="setreuid" number="145"/> + <syscall name="setuid" number="146"/> + <syscall name="setresuid" number="147"/> + <syscall name="getresuid" number="148"/> + <syscall name="setresgid" number="149"/> + <syscall name="getresgid" number="150"/> + <syscall name="setfsuid" number="151"/> + <syscall name="setfsgid" number="152"/> + <syscall name="times" number="153"/> + <syscall name="setpgid" number="154"/> + <syscall name="getpgid" number="155"/> + <syscall name="getsid" number="156"/> + <syscall name="setsid" number="157"/> + <syscall name="getgroups" number="158"/> + <syscall name="setgroups" number="159"/> + <syscall name="uname" number="160"/> + <syscall name="sethostname" number="161"/> + <syscall name="setdomainname" number="162"/> + <syscall name="getrlimit" number="163"/> + <syscall name="setrlimit" number="164"/> + <syscall name="getrusage" number="165"/> + <syscall name="umask" number="166"/> + <syscall name="prctl" number="167"/> + <syscall name="getcpu" number="168"/> + <syscall name="gettimeofday" number="169"/> + <syscall name="settimeofday" number="170"/> + <syscall name="adjtimex" number="171"/> + <syscall name="getpid" number="172"/> + <syscall name="getppid" number="173"/> + <syscall name="getuid" number="174"/> + <syscall name="geteuid" number="175"/> + <syscall name="getgid" number="176"/> + <syscall name="getegid" number="177"/> + <syscall name="gettid" number="178"/> + <syscall name="sysinfo" number="179"/> + <syscall name="mq_open" number="180"/> + <syscall name="mq_unlink" number="181"/> + <syscall name="mq_timedsend" number="182"/> + <syscall name="mq_timedreceive" number="183"/> + <syscall name="mq_notify" number="184"/> + <syscall name="mq_getsetattr" number="185"/> + <syscall name="msgget" number="186"/> + <syscall name="msgctl" number="187"/> + <syscall name="msgrcv" number="188"/> + <syscall name="msgsnd" number="189"/> + <syscall name="semget" number="190"/> + <syscall name="semctl" number="191"/> + <syscall name="semtimedop" number="192"/> + <syscall name="semop" number="193"/> + <syscall name="shmget" number="194"/> + <syscall name="shmctl" number="195"/> + <syscall name="shmat" number="196"/> + <syscall name="shmdt" number="197"/> + <syscall name="socket" number="198"/> + <syscall name="socketpair" number="199"/> + <syscall name="bind" number="200"/> + <syscall name="listen" number="201"/> + <syscall name="accept" number="202"/> + <syscall name="connect" number="203"/> + <syscall name="getsockname" number="204"/> + <syscall name="getpeername" number="205"/> + <syscall name="sendto" number="206"/> + <syscall name="recvfrom" number="207"/> + <syscall name="setsockopt" number="208"/> + <syscall name="getsockopt" number="209"/> + <syscall name="shutdown" number="210"/> + <syscall name="sendmsg" number="211"/> + <syscall name="recvmsg" number="212"/> + <syscall name="readahead" number="213"/> + <syscall name="brk" number="214"/> + <syscall name="munmap" number="215"/> + <syscall name="mremap" number="216"/> + <syscall name="add_key" number="217"/> + <syscall name="request_key" number="218"/> + <syscall name="keyctl" number="219"/> + <syscall name="clone" number="220"/> + <syscall name="execve" number="221"/> + <syscall name="mmap" number="222"/> + <syscall name="fadvise64" number="223"/> + <syscall name="swapon" number="224"/> + <syscall name="swapoff" number="225"/> + <syscall name="mprotect" number="226"/> + <syscall name="msync" number="227"/> + <syscall name="mlock" number="228"/> + <syscall name="munlock" number="229"/> + <syscall name="mlockall" number="230"/> + <syscall name="munlockall" number="231"/> + <syscall name="mincore" number="232"/> + <syscall name="madvise" number="233"/> + <syscall name="remap_file_pages" number="234"/> + <syscall name="mbind" number="235"/> + <syscall name="get_mempolicy" number="236"/> + <syscall name="set_mempolicy" number="237"/> + <syscall name="migrate_pages" number="238"/> + <syscall name="move_pages" number="239"/> + <syscall name="rt_tgsigqueueinfo" number="240"/> + <syscall name="perf_event_open" number="241"/> + <syscall name="accept4" number="242"/> + <syscall name="recvmmsg" number="243"/> + <syscall name="riscv_hwprobe" number="258"/> + <syscall name="riscv_flush_icache" number="259"/> + <syscall name="wait4" number="260"/> + <syscall name="prlimit64" number="261"/> + <syscall name="fanotify_init" number="262"/> + <syscall name="fanotify_mark" number="263"/> + <syscall name="name_to_handle_at" number="264"/> + <syscall name="open_by_handle_at" number="265"/> + <syscall name="clock_adjtime" number="266"/> + <syscall name="syncfs" number="267"/> + <syscall name="setns" number="268"/> + <syscall name="sendmmsg" number="269"/> + <syscall name="process_vm_readv" number="270"/> + <syscall name="process_vm_writev" number="271"/> + <syscall name="kcmp" number="272"/> + <syscall name="finit_module" number="273"/> + <syscall name="sched_setattr" number="274"/> + <syscall name="sched_getattr" number="275"/> + <syscall name="renameat2" number="276"/> + <syscall name="seccomp" number="277"/> + <syscall name="getrandom" number="278"/> + <syscall name="memfd_create" number="279"/> + <syscall name="bpf" number="280"/> + <syscall name="execveat" number="281"/> + <syscall name="userfaultfd" number="282"/> + <syscall name="membarrier" number="283"/> + <syscall name="mlock2" number="284"/> + <syscall name="copy_file_range" number="285"/> + <syscall name="preadv2" number="286"/> + <syscall name="pwritev2" number="287"/> + <syscall name="pkey_mprotect" number="288"/> + <syscall name="pkey_alloc" number="289"/> + <syscall name="pkey_free" number="290"/> + <syscall name="statx" number="291"/> + <syscall name="io_pgetevents" number="292"/> + <syscall name="rseq" number="293"/> + <syscall name="kexec_file_load" number="294"/> + <syscall name="pidfd_send_signal" number="424"/> + <syscall name="io_uring_setup" number="425"/> + <syscall name="io_uring_enter" number="426"/> + <syscall name="io_uring_register" number="427"/> + <syscall name="open_tree" number="428"/> + <syscall name="move_mount" number="429"/> + <syscall name="fsopen" number="430"/> + <syscall name="fsconfig" number="431"/> + <syscall name="fsmount" number="432"/> + <syscall name="fspick" number="433"/> + <syscall name="pidfd_open" number="434"/> + <syscall name="clone3" number="435"/> + <syscall name="close_range" number="436"/> + <syscall name="openat2" number="437"/> + <syscall name="pidfd_getfd" number="438"/> + <syscall name="faccessat2" number="439"/> + <syscall name="process_madvise" number="440"/> + <syscall name="epoll_pwait2" number="441"/> + <syscall name="mount_setattr" number="442"/> + <syscall name="quotactl_fd" number="443"/> + <syscall name="landlock_create_ruleset" number="444"/> + <syscall name="landlock_add_rule" number="445"/> + <syscall name="landlock_restrict_self" number="446"/> + <syscall name="memfd_secret" number="447"/> + <syscall name="process_mrelease" number="448"/> + <syscall name="futex_waitv" number="449"/> + <syscall name="set_mempolicy_home_node" number="450"/> + <syscall name="cachestat" number="451"/> + <syscall name="fchmodat2" number="452"/> + <syscall name="map_shadow_stack" number="453"/> + <syscall name="futex_wake" number="454"/> + <syscall name="futex_wait" number="455"/> + <syscall name="futex_requeue" number="456"/> + <syscall name="statmount" number="457"/> + <syscall name="listmount" number="458"/> + <syscall name="lsm_get_self_attr" number="459"/> + <syscall name="lsm_set_self_attr" number="460"/> + <syscall name="lsm_list_modules" number="461"/> + <syscall name="mseal" number="462"/> + <syscall name="setxattrat" number="463"/> + <syscall name="getxattrat" number="464"/> + <syscall name="listxattrat" number="465"/> + <syscall name="removexattrat" number="466"/> + <syscall name="open_tree_attr" number="467"/> + <syscall name="file_getattr" number="468"/> + <syscall name="file_setattr" number="469"/> +</syscalls_info> diff --git a/gdb/syscalls/update-linux-from-src.sh b/gdb/syscalls/update-linux-from-src.sh index ea06c13..26c38f6 100755 --- a/gdb/syscalls/update-linux-from-src.sh +++ b/gdb/syscalls/update-linux-from-src.sh @@ -325,6 +325,11 @@ regen () gen_from_kernel_headers "$f" arm64 return ;; + riscv-linux.xml.in) + # No syscall.tbl. + gen_from_kernel_headers "$f" riscv + return + ;; arm-linux.xml.in) t="arch/arm/tools/syscall.tbl" h="arch/arm/include/uapi/asm/unistd.h" diff --git a/gdb/syscalls/update-linux.sh b/gdb/syscalls/update-linux.sh index 107ce05..cbc8a9d 100755 --- a/gdb/syscalls/update-linux.sh +++ b/gdb/syscalls/update-linux.sh @@ -40,6 +40,9 @@ case "$f" in *aarch64-linux.xml.in) startyear=2015 ;; + *riscv-linux.xml.in) + startyear=2025 + ;; esac year=$(date +%Y) |