157333330SLaurent Vivier#!/bin/sh
257333330SLaurent Vivier
3*e2dcdceaSLaurent VivierURL=https://raw.githubusercontent.com/strace/strace/master/src
457333330SLaurent VivierFILES="sysent.h sysent_shorthand_defs.h linux/mips/syscallent-compat.h \
5*e2dcdceaSLaurent Vivier       linux/mips/syscallent-o32.h linux/32/syscallent-common-32.h \
6*e2dcdceaSLaurent Vivier       linux/generic/syscallent-common.h"
757333330SLaurent Vivier
857333330SLaurent Vivieroutput="$1"
957333330SLaurent Vivierif [ "$output" = "" ] ; then
1057333330SLaurent Vivier    output="$PWD"
1157333330SLaurent Vivierfi
1257333330SLaurent Vivier
1357333330SLaurent VivierINC=linux-user/mips/syscall-args-o32.c.inc
1457333330SLaurent Vivier
1557333330SLaurent VivierTMP=$(mktemp -d)
1657333330SLaurent Viviercd $TMP
1757333330SLaurent Vivier
1857333330SLaurent Vivierfor file in $FILES; do
19*e2dcdceaSLaurent Vivier    curl --create-dirs $URL/$file -o $TMP/$file
2057333330SLaurent Vivierdone
2157333330SLaurent Vivier
22*e2dcdceaSLaurent Vivier> linux/generic/subcallent.h
23*e2dcdceaSLaurent Vivier> linux/32/subcallent.h
2457333330SLaurent Vivier
2557333330SLaurent Viviercat > gen_mips_o32.c <<EOF
2657333330SLaurent Vivier#include <stdio.h>
2757333330SLaurent Vivier
2857333330SLaurent Vivier#define LINUX_MIPSO32
2957333330SLaurent Vivier#define MAX_ARGS 7
3057333330SLaurent Vivier
3157333330SLaurent Vivier#include "sysent.h"
3257333330SLaurent Vivier#include "sysent_shorthand_defs.h"
3357333330SLaurent Vivier
3457333330SLaurent Vivier#define SEN(syscall_name) 0,0
3557333330SLaurent Vivierconst struct_sysent sysent0[] = {
3657333330SLaurent Vivier#include  "syscallent-o32.h"
3757333330SLaurent Vivier};
3857333330SLaurent Vivier
3957333330SLaurent Vivierint main(void)
4057333330SLaurent Vivier{
4157333330SLaurent Vivier    int i;
4257333330SLaurent Vivier
4357333330SLaurent Vivier    for (i = 4000; i < sizeof(sysent0) / sizeof(struct_sysent); i++) {
4457333330SLaurent Vivier        if (sysent0[i].sys_name == NULL) {
4557333330SLaurent Vivier            printf("    [% 4d] = MIPS_SYSCALL_NUMBER_UNUSED,\n", i - 4000);
4657333330SLaurent Vivier        } else {
4757333330SLaurent Vivier            printf("    [% 4d] = %d, /* %s */\n", i - 4000,
4857333330SLaurent Vivier                   sysent0[i].nargs, sysent0[i].sys_name);
4957333330SLaurent Vivier        }
5057333330SLaurent Vivier    }
5157333330SLaurent Vivier
5257333330SLaurent Vivier    return 0;
5357333330SLaurent Vivier}
5457333330SLaurent VivierEOF
5557333330SLaurent Vivier
56*e2dcdceaSLaurent Viviercc -o gen_mips_o32 -I linux/mips -I linux/generic gen_mips_o32.c && ./gen_mips_o32 > "$output/$INC"
5757333330SLaurent Vivier
5857333330SLaurent Vivierrm -fr "$TMP"
59