mbox series

[v9,0/5] Automatically generate syscalls.h

Message ID 20241101-generate_syscalls-v9-0-d2c3820b0323@suse.com
Headers show
Series Automatically generate syscalls.h | expand

Message

Andrea Cervesato Nov. 1, 2024, 10:48 a.m. UTC
The problem we have at the moment is that all syscalls input files must
be changed by hand each time we need to test a new syscall. The idea is
to simplify this process, providing a script that is able to read from
kernel sources and to generate all syscalls files we need.

This patch set adds a new command inside the syscalls folder and
it refactors the previous regen.sh code.
The new way we have to generate the syscalls.h file is the following:

	include/lapi/syscalls/generate_arch.sh 		path/to/kernel/source
	include/lapi/syscalls/generate_syscalls.sh 	path/to/syscalls.h

Scripts are independent and they can be run separately.
generate_syscalls.sh is the equivalent of regen.sh, but its code has
been cleaned up.

Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
Changes in v9:
- use of printf when printing "\n" string, in order to support both dash
  and bash. BEWARE: ugliness triggered.
- rename *.in files with supported-arch.txt file naming convention
- update *.in files in a separated commit
- update documentation to be more readable
- aesthetic code changes
- Link to v8: https://lore.kernel.org/r/20241031-generate_syscalls-v8-0-8e35a9d6783b@suse.com

Changes in v8:
- use /bin/sh -eu
- support for dash and removed all bashism madness
- validation: https://github.com/acerv/ltp/actions/runs/11615377438
- Link to v7: https://lore.kernel.org/r/20241031-generate_syscalls-v7-0-f3e26c06814e@suse.com

Changes in v7:
- check for errors in generate_syscalls.sh
- add documentation
- validation: https://github.com/acerv/ltp/actions/runs/11611080151
- Link to v6: https://lore.kernel.org/r/20241031-generate_syscalls-v6-0-1ad86a33ce2d@suse.com

Changes in v6:
- aesthetic changes in the syscall generator
- fix fallback definitions in the syscalls.h file generator 
- Link to v5: https://lore.kernel.org/r/20241030-generate_syscalls-v5-0-eed6a87dc787@suse.com

Changes in v5:
- license SPDX inside scripts files
- quote shell variables inside scripts
- some generic code cleanup
- Link to v4: https://lore.kernel.org/r/20241009-generate_syscalls-v4-0-5328a785bbad@suse.com

Changes in v4:
- remove blacklist file
- update syscalls files
- Link to v3: https://lore.kernel.org/r/20240930-generate_syscalls-v3-0-e56ede4bc7f5@suse.com

Changes in v3:
- fix generate_arch.sh to work properly for all architectures
- rename some arch .in files and handle renaming inside
  generate_syscalls.sh using the right gcc directives
- Link to v2: https://lore.kernel.org/r/20240927-generate_syscalls-v2-0-108f5f2ad318@suse.com

Changes in v2:
- refactor regen.sh
- split syscalls.h and syscalls .in files creation
- updated syscalls .in files
- Link to v1: https://lore.kernel.org/r/20240924-generate_syscalls-v1-0-941507a9cdac@suse.com

---
Andrea Cervesato (5):
      Refactor regen.sh script to generate syscalls
      Add script to generate arch(s) dependant syscalls
      Update arch(s) syscalls files
      Delete obsolete strip_syscall.awk file
      Add documentation about syscalls.h generator

 configure.ac                                       |   2 +-
 doc/developers/test_case_tutorial.rst              |  29 +-
 include/lapi/syscalls/arc.in                       |  41 +-
 include/lapi/syscalls/arm.in                       | 821 +++++++++++----------
 include/lapi/syscalls/{loongarch.in => arm64.in}   |  12 +-
 include/lapi/syscalls/generate_arch.sh             | 213 ++++++
 include/lapi/syscalls/generate_syscalls.sh         | 109 +++
 include/lapi/syscalls/hppa.in                      |  54 --
 include/lapi/syscalls/i386.in                      |  18 +-
 .../lapi/syscalls/{aarch64.in => loongarch64.in}   |  20 +-
 include/lapi/syscalls/{mips_n64.in => mips64.in}   |  13 +-
 .../lapi/syscalls/{mips_n32.in => mips64n32.in}    |  13 +-
 include/lapi/syscalls/{mips_o32.in => mipso32.in}  |  19 +-
 include/lapi/syscalls/parisc.in                    | 397 ++++++++++
 include/lapi/syscalls/powerpc.in                   |  19 +-
 include/lapi/syscalls/powerpc64.in                 |  47 +-
 include/lapi/syscalls/regen.sh                     | 129 ----
 include/lapi/syscalls/s390.in                      |  15 +-
 include/lapi/syscalls/s390x.in                     |  15 +-
 include/lapi/syscalls/sh.in                        |  15 +-
 include/lapi/syscalls/sparc.in                     |  14 +-
 include/lapi/syscalls/sparc64.in                   |  16 +-
 include/lapi/syscalls/strip_syscall.awk            |  19 -
 .../lapi/syscalls/{order => supported-arch.txt}    |  12 +-
 include/lapi/syscalls/x86_64.in                    |  51 +-
 25 files changed, 1351 insertions(+), 762 deletions(-)
---
base-commit: 84e77afb3acc4bc69c434c430cc1c1d000427921
change-id: 20240923-generate_syscalls-780dc2227bdb

Best regards,

Comments

Andrea Cervesato Nov. 5, 2024, 8:55 a.m. UTC | #1
Pushed! Thanks

Andrea

On 11/1/24 11:48, Andrea Cervesato wrote:
> The problem we have at the moment is that all syscalls input files must
> be changed by hand each time we need to test a new syscall. The idea is
> to simplify this process, providing a script that is able to read from
> kernel sources and to generate all syscalls files we need.
>
> This patch set adds a new command inside the syscalls folder and
> it refactors the previous regen.sh code.
> The new way we have to generate the syscalls.h file is the following:
>
> 	include/lapi/syscalls/generate_arch.sh 		path/to/kernel/source
> 	include/lapi/syscalls/generate_syscalls.sh 	path/to/syscalls.h
>
> Scripts are independent and they can be run separately.
> generate_syscalls.sh is the equivalent of regen.sh, but its code has
> been cleaned up.
>
> Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
> ---
> Changes in v9:
> - use of printf when printing "\n" string, in order to support both dash
>    and bash. BEWARE: ugliness triggered.
> - rename *.in files with supported-arch.txt file naming convention
> - update *.in files in a separated commit
> - update documentation to be more readable
> - aesthetic code changes
> - Link to v8: https://lore.kernel.org/r/20241031-generate_syscalls-v8-0-8e35a9d6783b@suse.com
>
> Changes in v8:
> - use /bin/sh -eu
> - support for dash and removed all bashism madness
> - validation: https://github.com/acerv/ltp/actions/runs/11615377438
> - Link to v7: https://lore.kernel.org/r/20241031-generate_syscalls-v7-0-f3e26c06814e@suse.com
>
> Changes in v7:
> - check for errors in generate_syscalls.sh
> - add documentation
> - validation: https://github.com/acerv/ltp/actions/runs/11611080151
> - Link to v6: https://lore.kernel.org/r/20241031-generate_syscalls-v6-0-1ad86a33ce2d@suse.com
>
> Changes in v6:
> - aesthetic changes in the syscall generator
> - fix fallback definitions in the syscalls.h file generator
> - Link to v5: https://lore.kernel.org/r/20241030-generate_syscalls-v5-0-eed6a87dc787@suse.com
>
> Changes in v5:
> - license SPDX inside scripts files
> - quote shell variables inside scripts
> - some generic code cleanup
> - Link to v4: https://lore.kernel.org/r/20241009-generate_syscalls-v4-0-5328a785bbad@suse.com
>
> Changes in v4:
> - remove blacklist file
> - update syscalls files
> - Link to v3: https://lore.kernel.org/r/20240930-generate_syscalls-v3-0-e56ede4bc7f5@suse.com
>
> Changes in v3:
> - fix generate_arch.sh to work properly for all architectures
> - rename some arch .in files and handle renaming inside
>    generate_syscalls.sh using the right gcc directives
> - Link to v2: https://lore.kernel.org/r/20240927-generate_syscalls-v2-0-108f5f2ad318@suse.com
>
> Changes in v2:
> - refactor regen.sh
> - split syscalls.h and syscalls .in files creation
> - updated syscalls .in files
> - Link to v1: https://lore.kernel.org/r/20240924-generate_syscalls-v1-0-941507a9cdac@suse.com
>
> ---
> Andrea Cervesato (5):
>        Refactor regen.sh script to generate syscalls
>        Add script to generate arch(s) dependant syscalls
>        Update arch(s) syscalls files
>        Delete obsolete strip_syscall.awk file
>        Add documentation about syscalls.h generator
>
>   configure.ac                                       |   2 +-
>   doc/developers/test_case_tutorial.rst              |  29 +-
>   include/lapi/syscalls/arc.in                       |  41 +-
>   include/lapi/syscalls/arm.in                       | 821 +++++++++++----------
>   include/lapi/syscalls/{loongarch.in => arm64.in}   |  12 +-
>   include/lapi/syscalls/generate_arch.sh             | 213 ++++++
>   include/lapi/syscalls/generate_syscalls.sh         | 109 +++
>   include/lapi/syscalls/hppa.in                      |  54 --
>   include/lapi/syscalls/i386.in                      |  18 +-
>   .../lapi/syscalls/{aarch64.in => loongarch64.in}   |  20 +-
>   include/lapi/syscalls/{mips_n64.in => mips64.in}   |  13 +-
>   .../lapi/syscalls/{mips_n32.in => mips64n32.in}    |  13 +-
>   include/lapi/syscalls/{mips_o32.in => mipso32.in}  |  19 +-
>   include/lapi/syscalls/parisc.in                    | 397 ++++++++++
>   include/lapi/syscalls/powerpc.in                   |  19 +-
>   include/lapi/syscalls/powerpc64.in                 |  47 +-
>   include/lapi/syscalls/regen.sh                     | 129 ----
>   include/lapi/syscalls/s390.in                      |  15 +-
>   include/lapi/syscalls/s390x.in                     |  15 +-
>   include/lapi/syscalls/sh.in                        |  15 +-
>   include/lapi/syscalls/sparc.in                     |  14 +-
>   include/lapi/syscalls/sparc64.in                   |  16 +-
>   include/lapi/syscalls/strip_syscall.awk            |  19 -
>   .../lapi/syscalls/{order => supported-arch.txt}    |  12 +-
>   include/lapi/syscalls/x86_64.in                    |  51 +-
>   25 files changed, 1351 insertions(+), 762 deletions(-)
> ---
> base-commit: 84e77afb3acc4bc69c434c430cc1c1d000427921
> change-id: 20240923-generate_syscalls-780dc2227bdb
>
> Best regards,