| #!/bin/sh |
| |
| # Copyright (C) 2023-2024 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/>. |
| |
| # Used to generate linux-defaults.xml.in, like so: |
| # $ ./update-linux-defaults.sh ~/strace.git |
| |
| if [ $# -lt 1 ]; then |
| echo "dir argument needed" |
| exit 1 |
| fi |
| |
| d="$1" |
| shift |
| |
| if [ ! -d "$d" ]; then |
| echo "cannot find $d" |
| exit 1 |
| fi |
| |
| pre () |
| { |
| year=$(date +%Y) |
| |
| cat <<EOF |
| <?xml version="1.0"?> |
| <!-- Copyright (C) 2009-$year 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 sources from strace. --> |
| EOF |
| |
| echo '<syscalls_defaults>' |
| } |
| |
| |
| post () |
| { |
| echo '</syscalls_defaults>' |
| } |
| |
| generate () |
| { |
| pre |
| |
| grep -rn -E "T[A-Z][,|]" "$d/src/linux/" \ |
| | sed -e 's/\(T[A-Z][,|].*\)/\x03&/' -e 's/.*\x03//' \ |
| -e 's/,[ \t]*SEN[ \t]*(/, SEN(/g' \ |
| | grep ", SEN(" \ |
| | sed -e 's/\(.*\"\).*/\1/g' \ |
| -e 's/#64\"/\"/g' \ |
| | awk '{print $3 " " $1}' \ |
| | sort -u \ |
| | sed -e 's/|/,/g' \ |
| -e 's/TD,/descriptor,/g' \ |
| -e 's/TF,/file,/g' \ |
| -e 's/TI,/ipc,/g' \ |
| -e 's/TM,/memory,/g' \ |
| -e 's/TN,/network,/g' \ |
| -e 's/TP,/process,/g' \ |
| -e 's/TS,/signal,/g' \ |
| -e 's/[A-Z]\+,//g' \ |
| | grep -v '" $' \ |
| | sed 's/,$//g' \ |
| | awk "{printf \" <syscall name=%s groups=\\\"%s\\\"/>\n\", \$1, \$2}" |
| |
| post |
| } |
| |
| f=linux-defaults.xml.in |
| |
| echo "Generating $f" |
| generate > "$f" |