lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CALxhOnjz3Qd-a0OWMDV9ShfPOUB8gNB5Ltp9HGZi01mauaxkuw@mail.gmail.com>
Date:   Thu, 3 Jan 2019 17:04:57 +0530
From:   Firoz Khan <firoz.khan@...aro.org>
To:     Paul Burton <paul.burton@...s.com>,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
        Philippe Ombredanne <pombredanne@...b.com>,
        Thomas Gleixner <tglx@...utronix.de>,
        Kate Stewart <kstewart@...uxfoundation.org>,
        Geert Uytterhoeven <geert@...ux-m68k.org>,
        Tony Luck <tony.luck@...el.com>, Helge Deller <deller@....de>,
        Satheesh Rajendran <sathnaga@...ux.vnet.ibm.com>,
        Michal Simek <monstr@...str.eu>,
        Michael Ellerman <mpe@...erman.id.au>,
        Richard Henderson <rth@...ddle.net>,
        Max Filippov <jcmvbkbc@...il.com>,
        "David S . Miller" <davem@...emloft.net>
Cc:     y2038 Mailman List <y2038@...ts.linaro.org>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        Linux-Arch <linux-arch@...r.kernel.org>,
        Arnd Bergmann <arnd@...db.de>,
        Deepa Dinamani <deepa.kernel@...il.com>,
        Marcin Juszkiewicz <marcin.juszkiewicz@...aro.org>
Subject: Re: [PATCH] scripts: unify system call table generation scripts

++ adding more folks I closely worked with :)


On Wed, 2 Jan 2019 at 19:59, Firoz Khan <firoz.khan@...aro.org> wrote:
>
> System call table generation support is provided for
> alpha, ia64, m68k, microblaze, mips, parisc, powerpc,
> sh, sparc and xtensa architectures. The implementat-
> ions are almost similar across all the above archte-
> ctures.
>
> In order to reduce the source code across all the
> above architectures, create common ".sh" files and
> keep it in the common directory, script/.
>
> This will be a generic scripts which can use for all
> the above architectures.
>
> Signed-off-by: Firoz Khan <firoz.khan@...aro.org>
> ---
>  scripts/syscallhdr.sh | 37 +++++++++++++++++++++++++++++++++++++
>  scripts/syscallnr.sh  | 32 ++++++++++++++++++++++++++++++++
>  scripts/syscalltbl.sh | 37 +++++++++++++++++++++++++++++++++++++
>  3 files changed, 106 insertions(+)
>  create mode 100644 scripts/syscallhdr.sh
>  create mode 100644 scripts/syscallnr.sh
>  create mode 100644 scripts/syscalltbl.sh
>
> diff --git a/scripts/syscallhdr.sh b/scripts/syscallhdr.sh
> new file mode 100644
> index 0000000..d03fe3d
> --- /dev/null
> +++ b/scripts/syscallhdr.sh
> @@ -0,0 +1,37 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0
> +
> +in="$1"
> +out="$2"
> +my_abis=`echo "($3)" | tr ',' '|'`
> +prefix="$4"
> +offset="$5"
> +
> +fileguard=_UAPI_ASM_`basename "$out" | sed \
> +       -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
> +       -e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g'`
> +grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
> +       printf "#ifndef %s\n" "${fileguard}"
> +       printf "#define %s\n" "${fileguard}"
> +       printf "\n"
> +
> +       nxt=0
> +       while read nr abi name entry compat ; do
> +               if [ -z "$offset" ]; then
> +                       printf "#define __NR_%s%s\t%s\n" \
> +                               "${prefix}" "${name}" "${nr}"
> +               else
> +                       printf "#define __NR_%s%s\t(%s + %s)\n" \
> +                               "${prefix}" "${name}" "${offset}" "${nr}"
> +               fi
> +               nxt=$((nr+1))
> +       done
> +
> +       printf "\n"
> +       printf "#ifdef __KERNEL__\n"
> +       printf "#define __NR_syscalls\t%s\n" "${nxt}"
> +       printf "#endif\n"
> +       printf "\n"
> +       printf "#endif /* %s */" "${fileguard}"
> +       printf "\n"
> +) > "$out"
> diff --git a/scripts/syscallnr.sh b/scripts/syscallnr.sh
> new file mode 100644
> index 0000000..8cf33fa
> --- /dev/null
> +++ b/scripts/syscallnr.sh
> @@ -0,0 +1,32 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0
> +
> +in="$1"
> +out="$2"
> +my_abis=`echo "($3)" | tr ',' '|'`
> +prefix="$4"
> +offset="$5"
> +
> +fileguard=_UAPI_ASM_`basename "$out" | sed \
> +       -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
> +       -e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g'`
> +grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
> +       printf "#ifndef %s\n" "${fileguard}"
> +       printf "#define %s\n" "${fileguard}"
> +       printf "\n"
> +
> +       nxt=0
> +       while read nr abi name entry compat ; do
> +               nxt=$((nr+1))
> +       done
> +
> +       if [ ! -z "$prefix" ]; then
> +               printf "#define __NR_%s_Linux_syscalls\t%s\n" "${prefix}" "${nxt}"
> +               if [ ! -z "$offset" ]; then
> +                       printf "#define __NR_%s_Linux\t%s\n" "${prefix}" "${offset}"
> +               fi
> +       fi
> +       printf "\n"
> +       printf "#endif /* %s */" "${fileguard}"
> +       printf "\n"
> +) > "$out"
> diff --git a/scripts/syscalltbl.sh b/scripts/syscalltbl.sh
> new file mode 100644
> index 0000000..f60f762
> --- /dev/null
> +++ b/scripts/syscalltbl.sh
> @@ -0,0 +1,37 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0
> +
> +in="$1"
> +out="$2"
> +my_abis=`echo "($3)" | tr ',' '|'`
> +my_abi="$4"
> +offset="$5"
> +
> +emit() {
> +       t_nxt="$1"
> +       t_nr="$2"
> +       t_entry="$3"
> +
> +       while [ $t_nxt -lt $t_nr ]; do
> +               printf "__SYSCALL(%s,sys_ni_syscall)\n" "${t_nxt}"
> +               t_nxt=$((t_nxt+1))
> +       done
> +       printf "__SYSCALL(%s,%s)\n" "${t_nxt}" "${t_entry}"
> +}
> +
> +grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
> +       nxt=0
> +       if [ -z "$offset" ]; then
> +               offset=0
> +       fi
> +
> +       while read nr abi name entry compat ; do
> +               if [ "$my_abi" = "c32" -o "$my_abi" = "64_o32" ] &&
> +                       [ ! -z "$compat" ]; then
> +                       emit $((nxt+offset)) $((nr+offset)) $compat
> +               else
> +                       emit $((nxt+offset)) $((nr+offset)) $entry
> +               fi
> +               nxt=$((nr+1))
> +       done
> +) > "$out"
> --
> 1.9.1
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ