| #!/bin/sh |
| |
| URL=https://raw.githubusercontent.com/strace/strace/master/src |
| FILES="sysent.h sysent_shorthand_defs.h linux/mips/syscallent-compat.h \ |
| linux/mips/syscallent-o32.h linux/32/syscallent-common-32.h \ |
| linux/generic/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 --create-dirs $URL/$file -o $TMP/$file |
| done |
| |
| > linux/generic/subcallent.h |
| > linux/32/subcallent.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 -I linux/mips -I linux/generic gen_mips_o32.c && ./gen_mips_o32 > "$output/$INC" |
| |
| rm -fr "$TMP" |