diff options
Diffstat (limited to 'scripts/update-mips-syscall-args.sh')
-rwxr-xr-x | scripts/update-mips-syscall-args.sh | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/scripts/update-mips-syscall-args.sh b/scripts/update-mips-syscall-args.sh new file mode 100755 index 0000000000..4f0dda4b83 --- /dev/null +++ b/scripts/update-mips-syscall-args.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +URL=https://raw.githubusercontent.com/strace/strace/master +FILES="sysent.h sysent_shorthand_defs.h linux/mips/syscallent-compat.h \ + linux/mips/syscallent-o32.h linux/syscallent-common-32.h \ + linux/syscallent-common.h" + +output="$1" +if [ "$output" = "" ] ; then + output="$PWD" +fi + +INC=linux-user/mips/syscall-args-o32.c.inc + +TMP=$(mktemp -d) +cd $TMP + +for file in $FILES; do + curl -O $URL/$file +done + +> subcall32.h + +cat > gen_mips_o32.c <<EOF +#include <stdio.h> + +#define LINUX_MIPSO32 +#define MAX_ARGS 7 + +#include "sysent.h" +#include "sysent_shorthand_defs.h" + +#define SEN(syscall_name) 0,0 +const struct_sysent sysent0[] = { +#include "syscallent-o32.h" +}; + +int main(void) +{ + int i; + + for (i = 4000; i < sizeof(sysent0) / sizeof(struct_sysent); i++) { + if (sysent0[i].sys_name == NULL) { + printf(" [% 4d] = MIPS_SYSCALL_NUMBER_UNUSED,\n", i - 4000); + } else { + printf(" [% 4d] = %d, /* %s */\n", i - 4000, + sysent0[i].nargs, sysent0[i].sys_name); + } + } + + return 0; +} +EOF + +cc -o gen_mips_o32 gen_mips_o32.c && ./gen_mips_o32 > "$output/$INC" + +rm -fr "$TMP" |