diff --git a/gdb/syscalls/s390x-linux.xml b/gdb/syscalls/s390x-linux.xml
index 7e727fb..2d08d0d 100644
--- a/gdb/syscalls/s390x-linux.xml
+++ b/gdb/syscalls/s390x-linux.xml
@@ -13,122 +13,124 @@
 
      The file mentioned above belongs to the Linux Kernel.  -->
 
+<!-- The group field was based on strace.  -->
+
 <syscalls_info>
   <syscall name="exit" number="1"/>
-  <syscall name="fork" number="2"/>
-  <syscall name="read" number="3"/>
-  <syscall name="write" number="4"/>
-  <syscall name="open" number="5"/>
-  <syscall name="close" number="6"/>
+  <syscall name="fork" number="2" groups="process"/>
+  <syscall name="read" number="3" groups="descriptor"/>
+  <syscall name="write" number="4" groups="descriptor"/>
+  <syscall name="open" number="5" groups="descriptor,file"/>
+  <syscall name="close" number="6" groups="descriptor"/>
   <syscall name="restart_syscall" number="7"/>
-  <syscall name="creat" number="8"/>
-  <syscall name="link" number="9"/>
-  <syscall name="unlink" number="10"/>
-  <syscall name="execve" number="11"/>
-  <syscall name="chdir" number="12"/>
-  <syscall name="mknod" number="14"/>
-  <syscall name="chmod" number="15"/>
-  <syscall name="lseek" number="19"/>
+  <syscall name="creat" number="8" groups="descriptor,file"/>
+  <syscall name="link" number="9" groups="file"/>
+  <syscall name="unlink" number="10" groups="file"/>
+  <syscall name="execve" number="11" groups="file,process"/>
+  <syscall name="chdir" number="12" groups="file"/>
+  <syscall name="mknod" number="14" groups="file"/>
+  <syscall name="chmod" number="15" groups="file"/>
+  <syscall name="lseek" number="19" groups="descriptor"/>
   <syscall name="getpid" number="20"/>
-  <syscall name="mount" number="21"/>
-  <syscall name="umount" number="22"/>
+  <syscall name="mount" number="21" groups="file"/>
+  <syscall name="umount" number="22" groups="file"/>
   <syscall name="ptrace" number="26"/>
   <syscall name="alarm" number="27"/>
-  <syscall name="pause" number="29"/>
-  <syscall name="utime" number="30"/>
-  <syscall name="access" number="33"/>
+  <syscall name="pause" number="29" groups="signal"/>
+  <syscall name="utime" number="30" groups="file"/>
+  <syscall name="access" number="33" groups="file"/>
   <syscall name="nice" number="34"/>
   <syscall name="sync" number="36"/>
-  <syscall name="kill" number="37"/>
-  <syscall name="rename" number="38"/>
-  <syscall name="mkdir" number="39"/>
-  <syscall name="rmdir" number="40"/>
-  <syscall name="dup" number="41"/>
-  <syscall name="pipe" number="42"/>
+  <syscall name="kill" number="37" groups="signal"/>
+  <syscall name="rename" number="38" groups="file"/>
+  <syscall name="mkdir" number="39" groups="file"/>
+  <syscall name="rmdir" number="40" groups="file"/>
+  <syscall name="dup" number="41" groups="descriptor"/>
+  <syscall name="pipe" number="42" groups="descriptor"/>
   <syscall name="times" number="43"/>
-  <syscall name="brk" number="45"/>
-  <syscall name="signal" number="48"/>
-  <syscall name="acct" number="51"/>
+  <syscall name="brk" number="45" groups="memory"/>
+  <syscall name="signal" number="48" groups="signal"/>
+  <syscall name="acct" number="51" groups="file"/>
   <syscall name="umount2" number="52"/>
-  <syscall name="ioctl" number="54"/>
-  <syscall name="fcntl" number="55"/>
+  <syscall name="ioctl" number="54" groups="descriptor"/>
+  <syscall name="fcntl" number="55" groups="descriptor"/>
   <syscall name="setpgid" number="57"/>
   <syscall name="umask" number="60"/>
-  <syscall name="chroot" number="61"/>
+  <syscall name="chroot" number="61" groups="file"/>
   <syscall name="ustat" number="62"/>
-  <syscall name="dup2" number="63"/>
+  <syscall name="dup2" number="63" groups="descriptor"/>
   <syscall name="getppid" number="64"/>
   <syscall name="getpgrp" number="65"/>
   <syscall name="setsid" number="66"/>
-  <syscall name="sigaction" number="67"/>
-  <syscall name="sigsuspend" number="72"/>
-  <syscall name="sigpending" number="73"/>
+  <syscall name="sigaction" number="67" groups="signal"/>
+  <syscall name="sigsuspend" number="72" groups="signal"/>
+  <syscall name="sigpending" number="73" groups="signal"/>
   <syscall name="sethostname" number="74"/>
   <syscall name="setrlimit" number="75"/>
   <syscall name="getrusage" number="77"/>
   <syscall name="gettimeofday" number="78"/>
   <syscall name="settimeofday" number="79"/>
-  <syscall name="symlink" number="83"/>
-  <syscall name="readlink" number="85"/>
-  <syscall name="uselib" number="86"/>
-  <syscall name="swapon" number="87"/>
+  <syscall name="symlink" number="83" groups="file"/>
+  <syscall name="readlink" number="85" groups="file"/>
+  <syscall name="uselib" number="86" groups="file"/>
+  <syscall name="swapon" number="87" groups="file"/>
   <syscall name="reboot" number="88"/>
   <syscall name="readdir" number="89"/>
-  <syscall name="mmap" number="90"/>
-  <syscall name="munmap" number="91"/>
-  <syscall name="truncate" number="92"/>
-  <syscall name="ftruncate" number="93"/>
-  <syscall name="fchmod" number="94"/>
+  <syscall name="mmap" number="90" groups="descriptor,memory"/>
+  <syscall name="munmap" number="91" groups="memory"/>
+  <syscall name="truncate" number="92" groups="file"/>
+  <syscall name="ftruncate" number="93" groups="descriptor"/>
+  <syscall name="fchmod" number="94" groups="descriptor"/>
   <syscall name="getpriority" number="96"/>
   <syscall name="setpriority" number="97"/>
-  <syscall name="statfs" number="99"/>
-  <syscall name="fstatfs" number="100"/>
-  <syscall name="socketcall" number="102"/>
+  <syscall name="statfs" number="99" groups="file"/>
+  <syscall name="fstatfs" number="100" groups="descriptor"/>
+  <syscall name="socketcall" number="102" groups="descriptor"/>
   <syscall name="syslog" number="103"/>
   <syscall name="setitimer" number="104"/>
   <syscall name="getitimer" number="105"/>
-  <syscall name="stat" number="106"/>
-  <syscall name="lstat" number="107"/>
-  <syscall name="fstat" number="108"/>
+  <syscall name="stat" number="106" groups="file"/>
+  <syscall name="lstat" number="107" groups="file"/>
+  <syscall name="fstat" number="108" groups="descriptor"/>
   <syscall name="lookup_dcookie" number="110"/>
   <syscall name="vhangup" number="111"/>
   <syscall name="idle" number="112"/>
-  <syscall name="wait4" number="114"/>
-  <syscall name="swapoff" number="115"/>
+  <syscall name="wait4" number="114" groups="process"/>
+  <syscall name="swapoff" number="115" groups="file"/>
   <syscall name="sysinfo" number="116"/>
-  <syscall name="ipc" number="117"/>
-  <syscall name="fsync" number="118"/>
-  <syscall name="sigreturn" number="119"/>
-  <syscall name="clone" number="120"/>
+  <syscall name="ipc" number="117" groups="ipc"/>
+  <syscall name="fsync" number="118" groups="descriptor"/>
+  <syscall name="sigreturn" number="119" groups="signal"/>
+  <syscall name="clone" number="120" groups="process"/>
   <syscall name="setdomainname" number="121"/>
   <syscall name="uname" number="122"/>
   <syscall name="adjtimex" number="124"/>
-  <syscall name="mprotect" number="125"/>
-  <syscall name="sigprocmask" number="126"/>
+  <syscall name="mprotect" number="125" groups="memory"/>
+  <syscall name="sigprocmask" number="126" groups="signal"/>
   <syscall name="create_module" number="127"/>
   <syscall name="init_module" number="128"/>
   <syscall name="delete_module" number="129"/>
   <syscall name="get_kernel_syms" number="130"/>
-  <syscall name="quotactl" number="131"/>
+  <syscall name="quotactl" number="131" groups="file"/>
   <syscall name="getpgid" number="132"/>
-  <syscall name="fchdir" number="133"/>
+  <syscall name="fchdir" number="133" groups="descriptor"/>
   <syscall name="bdflush" number="134"/>
   <syscall name="sysfs" number="135"/>
   <syscall name="personality" number="136"/>
   <syscall name="afs_syscall" number="137"/>
-  <syscall name="getdents" number="141"/>
-  <syscall name="select" number="142"/>
-  <syscall name="flock" number="143"/>
-  <syscall name="msync" number="144"/>
-  <syscall name="readv" number="145"/>
-  <syscall name="writev" number="146"/>
+  <syscall name="getdents" number="141" groups="descriptor"/>
+  <syscall name="select" number="142" groups="descriptor"/>
+  <syscall name="flock" number="143" groups="descriptor"/>
+  <syscall name="msync" number="144" groups="memory"/>
+  <syscall name="readv" number="145" groups="descriptor"/>
+  <syscall name="writev" number="146" groups="descriptor"/>
   <syscall name="getsid" number="147"/>
-  <syscall name="fdatasync" number="148"/>
+  <syscall name="fdatasync" number="148" groups="descriptor"/>
   <syscall name="_sysctl" number="149"/>
-  <syscall name="mlock" number="150"/>
-  <syscall name="munlock" number="151"/>
-  <syscall name="mlockall" number="152"/>
-  <syscall name="munlockall" number="153"/>
+  <syscall name="mlock" number="150" groups="memory"/>
+  <syscall name="munlock" number="151" groups="memory"/>
+  <syscall name="mlockall" number="152" groups="memory"/>
+  <syscall name="munlockall" number="153" groups="memory"/>
   <syscall name="sched_setparam" number="154"/>
   <syscall name="sched_getparam" number="155"/>
   <syscall name="sched_setscheduler" number="156"/>
@@ -138,30 +140,30 @@
   <syscall name="sched_get_priority_min" number="160"/>
   <syscall name="sched_rr_get_interval" number="161"/>
   <syscall name="nanosleep" number="162"/>
-  <syscall name="mremap" number="163"/>
+  <syscall name="mremap" number="163" groups="memory"/>
   <syscall name="query_module" number="167"/>
-  <syscall name="poll" number="168"/>
+  <syscall name="poll" number="168" groups="descriptor"/>
   <syscall name="nfsservctl" number="169"/>
   <syscall name="prctl" number="172"/>
-  <syscall name="rt_sigreturn" number="173"/>
-  <syscall name="rt_sigaction" number="174"/>
-  <syscall name="rt_sigprocmask" number="175"/>
-  <syscall name="rt_sigpending" number="176"/>
-  <syscall name="rt_sigtimedwait" number="177"/>
-  <syscall name="rt_sigqueueinfo" number="178"/>
-  <syscall name="rt_sigsuspend" number="179"/>
+  <syscall name="rt_sigreturn" number="173" groups="signal"/>
+  <syscall name="rt_sigaction" number="174" groups="signal"/>
+  <syscall name="rt_sigprocmask" number="175" groups="signal"/>
+  <syscall name="rt_sigpending" number="176" groups="signal"/>
+  <syscall name="rt_sigtimedwait" number="177" groups="signal"/>
+  <syscall name="rt_sigqueueinfo" number="178" groups="signal"/>
+  <syscall name="rt_sigsuspend" number="179" groups="signal"/>
   <syscall name="pread64" number="180"/>
   <syscall name="pwrite64" number="181"/>
-  <syscall name="getcwd" number="183"/>
+  <syscall name="getcwd" number="183" groups="file"/>
   <syscall name="capget" number="184"/>
   <syscall name="capset" number="185"/>
-  <syscall name="sigaltstack" number="186"/>
-  <syscall name="sendfile" number="187"/>
+  <syscall name="sigaltstack" number="186" groups="signal"/>
+  <syscall name="sendfile" number="187" groups="descriptor,network"/>
   <syscall name="getpmsg" number="188"/>
   <syscall name="putpmsg" number="189"/>
-  <syscall name="vfork" number="190"/>
+  <syscall name="vfork" number="190" groups="process"/>
   <syscall name="getrlimit" number="191"/>
-  <syscall name="lchown" number="198"/>
+  <syscall name="lchown" number="198" groups="file"/>
   <syscall name="getuid" number="199"/>
   <syscall name="getgid" number="200"/>
   <syscall name="geteuid" number="201"/>
@@ -170,50 +172,50 @@
   <syscall name="setregid" number="204"/>
   <syscall name="getgroups" number="205"/>
   <syscall name="setgroups" number="206"/>
-  <syscall name="fchown" number="207"/>
+  <syscall name="fchown" number="207" groups="descriptor"/>
   <syscall name="setresuid" number="208"/>
   <syscall name="getresuid" number="209"/>
   <syscall name="setresgid" number="210"/>
   <syscall name="getresgid" number="211"/>
-  <syscall name="chown" number="212"/>
+  <syscall name="chown" number="212" groups="file"/>
   <syscall name="setuid" number="213"/>
   <syscall name="setgid" number="214"/>
   <syscall name="setfsuid" number="215"/>
   <syscall name="setfsgid" number="216"/>
-  <syscall name="pivot_root" number="217"/>
-  <syscall name="mincore" number="218"/>
-  <syscall name="madvise" number="219"/>
-  <syscall name="getdents64" number="220"/>
-  <syscall name="readahead" number="222"/>
-  <syscall name="setxattr" number="224"/>
-  <syscall name="lsetxattr" number="225"/>
-  <syscall name="fsetxattr" number="226"/>
-  <syscall name="getxattr" number="227"/>
-  <syscall name="lgetxattr" number="228"/>
-  <syscall name="fgetxattr" number="229"/>
-  <syscall name="listxattr" number="230"/>
-  <syscall name="llistxattr" number="231"/>
-  <syscall name="flistxattr" number="232"/>
-  <syscall name="removexattr" number="233"/>
-  <syscall name="lremovexattr" number="234"/>
-  <syscall name="fremovexattr" number="235"/>
+  <syscall name="pivot_root" number="217" groups="file"/>
+  <syscall name="mincore" number="218" groups="memory"/>
+  <syscall name="madvise" number="219" groups="memory"/>
+  <syscall name="getdents64" number="220" groups="descriptor"/>
+  <syscall name="readahead" number="222" groups="descriptor"/>
+  <syscall name="setxattr" number="224" groups="file"/>
+  <syscall name="lsetxattr" number="225" groups="file"/>
+  <syscall name="fsetxattr" number="226" groups="descriptor"/>
+  <syscall name="getxattr" number="227" groups="file"/>
+  <syscall name="lgetxattr" number="228" groups="file"/>
+  <syscall name="fgetxattr" number="229" groups="descriptor"/>
+  <syscall name="listxattr" number="230" groups="file"/>
+  <syscall name="llistxattr" number="231" groups="file"/>
+  <syscall name="flistxattr" number="232" groups="descriptor"/>
+  <syscall name="removexattr" number="233" groups="file"/>
+  <syscall name="lremovexattr" number="234" groups="file"/>
+  <syscall name="fremovexattr" number="235" groups="descriptor"/>
   <syscall name="gettid" number="236"/>
-  <syscall name="tkill" number="237"/>
+  <syscall name="tkill" number="237" groups="signal"/>
   <syscall name="futex" number="238"/>
   <syscall name="sched_setaffinity" number="239"/>
   <syscall name="sched_getaffinity" number="240"/>
-  <syscall name="tgkill" number="241"/>
+  <syscall name="tgkill" number="241" groups="signal"/>
   <syscall name="io_setup" number="243"/>
   <syscall name="io_destroy" number="244"/>
   <syscall name="io_getevents" number="245"/>
   <syscall name="io_submit" number="246"/>
   <syscall name="io_cancel" number="247"/>
-  <syscall name="exit_group" number="248"/>
-  <syscall name="epoll_create" number="249"/>
-  <syscall name="epoll_ctl" number="250"/>
-  <syscall name="epoll_wait" number="251"/>
+  <syscall name="exit_group" number="248" groups="process"/>
+  <syscall name="epoll_create" number="249" groups="descriptor"/>
+  <syscall name="epoll_ctl" number="250" groups="descriptor"/>
+  <syscall name="epoll_wait" number="251" groups="descriptor"/>
   <syscall name="set_tid_address" number="252"/>
-  <syscall name="fadvise64" number="253"/>
+  <syscall name="fadvise64" number="253" groups="descriptor"/>
   <syscall name="timer_create" number="254"/>
   <syscall name="timer_settime" number="255"/>
   <syscall name="timer_gettime" number="256"/>
@@ -223,9 +225,9 @@
   <syscall name="clock_gettime" number="260"/>
   <syscall name="clock_getres" number="261"/>
   <syscall name="clock_nanosleep" number="262"/>
-  <syscall name="statfs64" number="265"/>
-  <syscall name="fstatfs64" number="266"/>
-  <syscall name="remap_file_pages" number="267"/>
+  <syscall name="statfs64" number="265" groups="file"/>
+  <syscall name="fstatfs64" number="266" groups="descriptor"/>
+  <syscall name="remap_file_pages" number="267" groups="memory"/>
   <syscall name="mq_open" number="271"/>
   <syscall name="mq_unlink" number="272"/>
   <syscall name="mq_timedsend" number="273"/>
@@ -236,61 +238,61 @@
   <syscall name="add_key" number="278"/>
   <syscall name="request_key" number="279"/>
   <syscall name="keyctl" number="280"/>
-  <syscall name="waitid" number="281"/>
+  <syscall name="waitid" number="281" groups="process"/>
   <syscall name="ioprio_set" number="282"/>
   <syscall name="ioprio_get" number="283"/>
-  <syscall name="inotify_init" number="284"/>
-  <syscall name="inotify_add_watch" number="285"/>
-  <syscall name="inotify_rm_watch" number="286"/>
-  <syscall name="openat" number="288"/>
-  <syscall name="mkdirat" number="289"/>
-  <syscall name="mknodat" number="290"/>
-  <syscall name="fchownat" number="291"/>
-  <syscall name="futimesat" number="292"/>
-  <syscall name="newfstatat" number="293"/>
-  <syscall name="unlinkat" number="294"/>
-  <syscall name="renameat" number="295"/>
-  <syscall name="linkat" number="296"/>
-  <syscall name="symlinkat" number="297"/>
-  <syscall name="readlinkat" number="298"/>
-  <syscall name="fchmodat" number="299"/>
-  <syscall name="faccessat" number="300"/>
-  <syscall name="pselect6" number="301"/>
-  <syscall name="ppoll" number="302"/>
-  <syscall name="unshare" number="303"/>
+  <syscall name="inotify_init" number="284" groups="descriptor"/>
+  <syscall name="inotify_add_watch" number="285" groups="descriptor"/>
+  <syscall name="inotify_rm_watch" number="286" groups="descriptor"/>
+  <syscall name="openat" number="288" groups="descriptor,file"/>
+  <syscall name="mkdirat" number="289" groups="descriptor,file"/>
+  <syscall name="mknodat" number="290" groups="descriptor,file"/>
+  <syscall name="fchownat" number="291" groups="descriptor,file"/>
+  <syscall name="futimesat" number="292" groups="descriptor,file"/>
+  <syscall name="newfstatat" number="293" groups="descriptor,file"/>
+  <syscall name="unlinkat" number="294" groups="descriptor,file"/>
+  <syscall name="renameat" number="295" groups="descriptor,file"/>
+  <syscall name="linkat" number="296" groups="descriptor,file"/>
+  <syscall name="symlinkat" number="297" groups="descriptor,file"/>
+  <syscall name="readlinkat" number="298" groups="descriptor,file"/>
+  <syscall name="fchmodat" number="299" groups="descriptor,file"/>
+  <syscall name="faccessat" number="300" groups="descriptor,file"/>
+  <syscall name="pselect6" number="301" groups="descriptor"/>
+  <syscall name="ppoll" number="302" groups="descriptor"/>
+  <syscall name="unshare" number="303" groups="process"/>
   <syscall name="set_robust_list" number="304"/>
   <syscall name="get_robust_list" number="305"/>
-  <syscall name="splice" number="306"/>
-  <syscall name="sync_file_range" number="307"/>
-  <syscall name="tee" number="308"/>
-  <syscall name="vmsplice" number="309"/>
+  <syscall name="splice" number="306" groups="descriptor"/>
+  <syscall name="sync_file_range" number="307" groups="descriptor"/>
+  <syscall name="tee" number="308" groups="descriptor"/>
+  <syscall name="vmsplice" number="309" groups="descriptor"/>
   <syscall name="getcpu" number="311"/>
-  <syscall name="epoll_pwait" number="312"/>
-  <syscall name="utimes" number="313"/>
-  <syscall name="fallocate" number="314"/>
-  <syscall name="utimensat" number="315"/>
-  <syscall name="signalfd" number="316"/>
-  <syscall name="timerfd" number="317"/>
-  <syscall name="eventfd" number="318"/>
-  <syscall name="timerfd_create" number="319"/>
-  <syscall name="timerfd_settime" number="320"/>
-  <syscall name="timerfd_gettime" number="321"/>
-  <syscall name="signalfd4" number="322"/>
-  <syscall name="eventfd2" number="323"/>
-  <syscall name="inotify_init1" number="324"/>
-  <syscall name="pipe2" number="325"/>
-  <syscall name="dup3" number="326"/>
-  <syscall name="epoll_create1" number="327"/>
-  <syscall name="rt_tgsigqueueinfo" number="330"/>
-  <syscall name="perf_event_open" number="331"/>
-  <syscall name="fanotify_init" number="332"/>
-  <syscall name="fanotify_mark" number="333"/>
+  <syscall name="epoll_pwait" number="312" groups="descriptor"/>
+  <syscall name="utimes" number="313" groups="file"/>
+  <syscall name="fallocate" number="314" groups="descriptor"/>
+  <syscall name="utimensat" number="315" groups="descriptor,file"/>
+  <syscall name="signalfd" number="316" groups="descriptor,signal"/>
+  <syscall name="timerfd" number="317" groups="descriptor"/>
+  <syscall name="eventfd" number="318" groups="descriptor"/>
+  <syscall name="timerfd_create" number="319" groups="descriptor"/>
+  <syscall name="timerfd_settime" number="320" groups="descriptor"/>
+  <syscall name="timerfd_gettime" number="321" groups="descriptor"/>
+  <syscall name="signalfd4" number="322" groups="descriptor,signal"/>
+  <syscall name="eventfd2" number="323" groups="descriptor"/>
+  <syscall name="inotify_init1" number="324" groups="descriptor"/>
+  <syscall name="pipe2" number="325" groups="descriptor"/>
+  <syscall name="dup3" number="326" groups="descriptor"/>
+  <syscall name="epoll_create1" number="327" groups="descriptor"/>
+  <syscall name="rt_tgsigqueueinfo" number="330" groups="process,signal"/>
+  <syscall name="perf_event_open" number="331" groups="descriptor"/>
+  <syscall name="fanotify_init" number="332" groups="descriptor"/>
+  <syscall name="fanotify_mark" number="333" groups="descriptor,file"/>
   <syscall name="prlimit64" number="334"/>
-  <syscall name="name_to_handle_at" number="335"/>
-  <syscall name="open_by_handle_at" number="336"/>
+  <syscall name="name_to_handle_at" number="335" groups="descriptor,file"/>
+  <syscall name="open_by_handle_at" number="336" groups="descriptor"/>
   <syscall name="clock_adjtime" number="337"/>
-  <syscall name="syncfs" number="338"/>
-  <syscall name="setns" number="339"/>
+  <syscall name="syncfs" number="338" groups="descriptor"/>
+  <syscall name="setns" number="339" groups="descriptor"/>
   <syscall name="process_vm_readv" number="340"/>
   <syscall name="process_vm_writev" number="341"/>
   <syscall name="s390_runtime_instr" number="342"/>
