Le 10/03/2020 à 11:33, Laurent Vivier a écrit : > This series copies the files syscall.tbl from linux v5.5 and generates > the file syscall_nr.h from them. > > This is done for all the QEMU targets that have a syscall.tbl > in the linux source tree: mips, mips64, i386, x86_64, sparc, s390x, > ppc, arm, microblaze, sh4, xtensa, m68k, hppa and alpha. > > tilegx and cris are depecrated in linux (tilegx has no maintainer in QEMU) > > aarch64, nios2, openrisc and riscv have no syscall.tbl in linux and files > are generated manually with the help of a script from the asm-generic/unistd.h > > Define do_arch_prctl() with -TARGET_ENOSYS for i386 as the syscall number > is defined now. > > I have also removed all syscalls in s390x/syscall_nr.h defined for > !defined(TARGET_S390X). > > I have added a script to copy all these files from linux and updated > them at the end of the series with their latest version for today. > > Two patches manage the special case for mips O32 that needs > to know the number of arguments. We find them in strace sources. > > v4: > generate syscall_nr.h for hppa32, not 64 > > v3: > Add a patch to define do_arch_prctl() for i386 > > v2: > fix a typo (double comma) in $(call quiet-command) > add a script to remove dependencies to syscall_nr.h in source directory > > ppc, mips64: > > we don't need to split syscall_nr.h as it is generated > according TARGET_SYSTBL_ABI to TARGET_ABI_DIR > and generated values are incorrect according to the file name. > > arm: > > manage TARGET_NR_arm_sync_file_range > > Once the syscall_nr.h are built in the build directory, the following script > allows to compare them with the original one (first argument is the path > to build directory), it must be run from the source directory: > > cat > check_syscall_nr.sh <<EOF > BUILD="$1" > > ARCHS="i386 alpha arm hppa i386 m68k microblaze s390x sh4 sparc sparc64 > xtensa ppc" > > syscall_nr_diff() > { > arch=$1 > target=$2 > syscall_nr=linux-user/$arch/syscall_nr.h > offset=$3 > REFERENCE=$(git log -1 --format=format:%h -- $syscall_nr)^ > if [ "$offset" = "" ] ; then > git show $REFERENCE:$syscall_nr | \ > sed 's/[[:blank:]]\/\*[^*]*\*\///' | \ > sed 's/(\([^)]*\))/\1/' > /tmp/old > else > git show $REFERENCE:$syscall_nr | \ > sed 's/[[:blank:]]\/\*[^*]*\*\///' | \ > sed "s/TARGET_NR_Linux/$offset/" > /tmp/old > fi > diff -wu --color=always /tmp/old \ > $BUILD/$target/$syscall_nr | less -R > } > > for arch in $ARCHS ; do > syscall_nr_diff $arch $arch-linux-user > done > > syscall_nr_diff ppc ppc64-linux-user > > syscall_nr_diff mips mips-linux-user 4000 > syscall_nr_diff mips64 mips64-linux-user 5000 > syscall_nr_diff mips64 mipsn32-linux-user 6000 > EOF > > Laurent Vivier (21): > linux-user: introduce parameters to generate syscall_nr.h > linux-user,alpha: add syscall table generation support > linux-user,hppa: add syscall table generation support > linux-user,m68k: add syscall table generation support > linux-user,xtensa: add syscall table generation support > linux-user,sh4: add syscall table generation support > linux-user,microblaze: add syscall table generation support > linux-user,arm: add syscall table generation support > linux-user,ppc: add syscall table generation support > linux-user,s390x: remove syscall definitions for !TARGET_S390X > linux-user,s390x: add syscall table generation support > linux-user,sparc,sparc64: add syscall table generation support > linux-user,x86_64,i386: cleanup TARGET_NR_arch_prctl > linux-user,i386: add syscall table generation support > linux-user,x86_64: add syscall table generation support > linux-user,mips: add syscall table generation support > linux-user,mips64: add syscall table generation support > linux-user,scripts: add a script to update syscall.tbl > linux-user: update syscall.tbl from linux 0bf999f9c5e7 > linux-user,mips: move content of mips_syscall_args > linux-user,mips: update syscall-args-o32.c.inc > > MAINTAINERS | 1 + > Makefile.target | 3 +- > configure | 35 ++ > linux-user/Makefile.objs | 19 +- > linux-user/alpha/Makefile.objs | 5 + > linux-user/alpha/syscall.tbl | 479 ++++++++++++++++ > linux-user/alpha/syscall_nr.h | 492 ----------------- > linux-user/alpha/syscallhdr.sh | 32 ++ > linux-user/arm/Makefile.objs | 8 + > linux-user/arm/syscall.tbl | 453 +++++++++++++++ > linux-user/arm/syscall_nr.h | 447 --------------- > linux-user/arm/syscallhdr.sh | 31 ++ > linux-user/hppa/Makefile.objs | 5 + > linux-user/hppa/syscall.tbl | 437 +++++++++++++++ > linux-user/hppa/syscall_nr.h | 358 ------------ > linux-user/hppa/syscallhdr.sh | 32 ++ > linux-user/i386/Makefile.objs | 5 + > linux-user/i386/syscall_32.tbl | 444 +++++++++++++++ > linux-user/i386/syscall_nr.h | 387 ------------- > linux-user/i386/syscallhdr.sh | 28 + > linux-user/i386/target_cpu.h | 4 +- > linux-user/m68k/Makefile.objs | 5 + > linux-user/m68k/syscall.tbl | 439 +++++++++++++++ > linux-user/m68k/syscall_nr.h | 434 --------------- > linux-user/m68k/syscallhdr.sh | 32 ++ > linux-user/microblaze/Makefile.objs | 5 + > linux-user/microblaze/syscall.tbl | 445 +++++++++++++++ > linux-user/microblaze/syscall_nr.h | 442 --------------- > linux-user/microblaze/syscallhdr.sh | 32 ++ > linux-user/mips/Makefile.objs | 5 + > linux-user/mips/cpu_loop.c | 440 +-------------- > linux-user/mips/syscall-args-o32.c.inc | 436 +++++++++++++++ > linux-user/mips/syscall_nr.h | 425 --------------- > linux-user/mips/syscall_o32.tbl | 427 +++++++++++++++ > linux-user/mips/syscallhdr.sh | 36 ++ > linux-user/mips64/Makefile.objs | 12 + > linux-user/mips64/syscall_n32.tbl | 378 +++++++++++++ > linux-user/mips64/syscall_n64.tbl | 354 ++++++++++++ > linux-user/mips64/syscall_nr.h | 725 ------------------------- > linux-user/mips64/syscallhdr.sh | 33 ++ > linux-user/ppc/Makefile.objs | 6 + > linux-user/ppc/signal.c | 2 +- > linux-user/ppc/syscall.tbl | 521 ++++++++++++++++++ > linux-user/ppc/syscall_nr.h | 402 -------------- > linux-user/ppc/syscallhdr.sh | 34 ++ > linux-user/s390x/Makefile.objs | 5 + > linux-user/s390x/syscall.tbl | 442 +++++++++++++++ > linux-user/s390x/syscall_nr.h | 398 -------------- > linux-user/s390x/syscallhdr.sh | 32 ++ > linux-user/sh4/Makefile.objs | 5 + > linux-user/sh4/syscall.tbl | 442 +++++++++++++++ > linux-user/sh4/syscall_nr.h | 441 --------------- > linux-user/sh4/syscallhdr.sh | 32 ++ > linux-user/sparc/Makefile.objs | 5 + > linux-user/sparc/syscall.tbl | 485 +++++++++++++++++ > linux-user/sparc/syscall_nr.h | 363 ------------- > linux-user/sparc/syscallhdr.sh | 32 ++ > linux-user/sparc64/Makefile.objs | 5 + > linux-user/sparc64/syscall.tbl | 485 +++++++++++++++++ > linux-user/sparc64/syscall_nr.h | 366 ------------- > linux-user/sparc64/syscallhdr.sh | 32 ++ > linux-user/syscall.c | 25 +- > linux-user/x86_64/Makefile.objs | 5 + > linux-user/x86_64/syscall_64.tbl | 404 ++++++++++++++ > linux-user/x86_64/syscall_nr.h | 356 ------------ > linux-user/x86_64/syscallhdr.sh | 28 + > linux-user/xtensa/Makefile.objs | 5 + > linux-user/xtensa/syscall.tbl | 410 ++++++++++++++ > linux-user/xtensa/syscall_nr.h | 469 ---------------- > linux-user/xtensa/syscallhdr.sh | 32 ++ > scripts/update-mips-syscall-args.sh | 57 ++ > scripts/update-syscalltbl.sh | 49 ++ > 72 files changed, 8227 insertions(+), 6958 deletions(-) > create mode 100644 linux-user/alpha/Makefile.objs > create mode 100644 linux-user/alpha/syscall.tbl > delete mode 100644 linux-user/alpha/syscall_nr.h > create mode 100644 linux-user/alpha/syscallhdr.sh > create mode 100644 linux-user/arm/Makefile.objs > create mode 100644 linux-user/arm/syscall.tbl > delete mode 100644 linux-user/arm/syscall_nr.h > create mode 100644 linux-user/arm/syscallhdr.sh > create mode 100644 linux-user/hppa/Makefile.objs > create mode 100644 linux-user/hppa/syscall.tbl > delete mode 100644 linux-user/hppa/syscall_nr.h > create mode 100644 linux-user/hppa/syscallhdr.sh > create mode 100644 linux-user/i386/Makefile.objs > create mode 100644 linux-user/i386/syscall_32.tbl > delete mode 100644 linux-user/i386/syscall_nr.h > create mode 100644 linux-user/i386/syscallhdr.sh > create mode 100644 linux-user/m68k/Makefile.objs > create mode 100644 linux-user/m68k/syscall.tbl > delete mode 100644 linux-user/m68k/syscall_nr.h > create mode 100644 linux-user/m68k/syscallhdr.sh > create mode 100644 linux-user/microblaze/Makefile.objs > create mode 100644 linux-user/microblaze/syscall.tbl > delete mode 100644 linux-user/microblaze/syscall_nr.h > create mode 100644 linux-user/microblaze/syscallhdr.sh > create mode 100644 linux-user/mips/Makefile.objs > create mode 100644 linux-user/mips/syscall-args-o32.c.inc > delete mode 100644 linux-user/mips/syscall_nr.h > create mode 100644 linux-user/mips/syscall_o32.tbl > create mode 100644 linux-user/mips/syscallhdr.sh > create mode 100644 linux-user/mips64/Makefile.objs > create mode 100644 linux-user/mips64/syscall_n32.tbl > create mode 100644 linux-user/mips64/syscall_n64.tbl > delete mode 100644 linux-user/mips64/syscall_nr.h > create mode 100644 linux-user/mips64/syscallhdr.sh > create mode 100644 linux-user/ppc/Makefile.objs > create mode 100644 linux-user/ppc/syscall.tbl > delete mode 100644 linux-user/ppc/syscall_nr.h > create mode 100644 linux-user/ppc/syscallhdr.sh > create mode 100644 linux-user/s390x/Makefile.objs > create mode 100644 linux-user/s390x/syscall.tbl > delete mode 100644 linux-user/s390x/syscall_nr.h > create mode 100755 linux-user/s390x/syscallhdr.sh > create mode 100644 linux-user/sh4/Makefile.objs > create mode 100644 linux-user/sh4/syscall.tbl > delete mode 100644 linux-user/sh4/syscall_nr.h > create mode 100644 linux-user/sh4/syscallhdr.sh > create mode 100644 linux-user/sparc/Makefile.objs > create mode 100644 linux-user/sparc/syscall.tbl > delete mode 100644 linux-user/sparc/syscall_nr.h > create mode 100644 linux-user/sparc/syscallhdr.sh > create mode 100644 linux-user/sparc64/Makefile.objs > create mode 100644 linux-user/sparc64/syscall.tbl > delete mode 100644 linux-user/sparc64/syscall_nr.h > create mode 100644 linux-user/sparc64/syscallhdr.sh > create mode 100644 linux-user/x86_64/Makefile.objs > create mode 100644 linux-user/x86_64/syscall_64.tbl > delete mode 100644 linux-user/x86_64/syscall_nr.h > create mode 100644 linux-user/x86_64/syscallhdr.sh > create mode 100644 linux-user/xtensa/Makefile.objs > create mode 100644 linux-user/xtensa/syscall.tbl > delete mode 100644 linux-user/xtensa/syscall_nr.h > create mode 100644 linux-user/xtensa/syscallhdr.sh > create mode 100755 scripts/update-mips-syscall-args.sh > create mode 100755 scripts/update-syscalltbl.sh >
Applied the whole series to my linux-user branch. Thanks, Laurent