#!/bin/sh
# Copyright (C) 2022-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 .
# Used to generate .xml.in files, like so:
#
# ./update-linux.sh amd64-linux.xml.in
# ./update-linux.sh i386-linux.xml.in -m32
if [ $# -lt 1 ]; then
echo "file argument needed"
exit 1
fi
f="$1"
shift
if [ ! -f "$f" ]; then
echo "cannot find $f"
exit 1
fi
startyear=2009
case "$f" in
*aarch64-linux.xml.in)
startyear=2015
;;
esac
year=$(date +%Y)
(
cat <
EOF
echo ''
# There are __NR_ and __NR3264_ prefixed syscall numbers, handle them
# automatically in this script. Here are the examples of the two types:
#
# #define __NR_io_setup 0
# #define __NR3264_fcntl 25
echo '#include ' \
| gcc -E - -dD "$@" \
| grep -E '#define (__NR_|__NR3264_)' \
| while read -r line; do
line=$(echo "$line" | awk '$2 ~ "__NR" && $3 !~ "__NR3264_" {
sub("^#define __NR(3264)?_", ""); print | "sort -k2 -n"}')
if [ -z "$line" ]; then
continue
fi
name=$(echo "$line" | awk '{print $1}')
nr=$(echo "$line" | awk '{print $2}')
echo " "
done
echo ''
) > "$f"