Re: git: accfb4cc9346 - main - genoffset.sh: stop using a temporary file
- In reply to: Jonathan T. Looney: "git: accfb4cc9346 - main - genoffset.sh: stop using a temporary file"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 16 Nov 2023 16:07:40 UTC
On 16 Nov 2023, at 15:07, Jonathan T. Looney <jtl@FreeBSD.org> wrote:
>
> The branch main has been updated by jtl:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=accfb4cc9346b23f6d6383dfc98d2c97ae18ce0d
>
> commit accfb4cc9346b23f6d6383dfc98d2c97ae18ce0d
> Author: Jonathan T. Looney <jtl@FreeBSD.org>
> AuthorDate: 2023-11-16 15:02:32 +0000
> Commit: Jonathan T. Looney <jtl@FreeBSD.org>
> CommitDate: 2023-11-16 15:02:32 +0000
>
> genoffset.sh: stop using a temporary file
>
> Instead, use a here document for the input. This allows us to run the
> while loop in the main script so we can build the list of asserts in
> a shell variable. We then print out the list of asserts at the end of
> the loop.
>
> Reviewed by: imp
> Sponsored by: Netflix
> Differential Revision: https://reviews.freebsd.org/D42407
> ---
> sys/kern/genoffset.sh | 15 +++++++--------
> 1 file changed, 7 insertions(+), 8 deletions(-)
>
> diff --git a/sys/kern/genoffset.sh b/sys/kern/genoffset.sh
> index fda27998ca79..c974a7d52e8c 100644
> --- a/sys/kern/genoffset.sh
> +++ b/sys/kern/genoffset.sh
> @@ -35,16 +35,13 @@ usage()
>
> work()
> (
> - local last off x1 x2 x3 struct field type lastoff lasttype
> + local last off x1 x2 x3 struct field type lastoff lasttype asserts
>
> echo "#ifndef _OFFSET_INC_"
> echo "#define _OFFSET_INC_"
> echo "#if !defined(GENOFFSET) && (!defined(KLD_MODULE) || defined(KLD_TIED))"
> last=
> - temp=$(mktemp -d genoffset.XXXXXXXXXX)
> - trap "rm -rf ${temp}" EXIT
> - # Note: we need to print symbol values in decimal so the numeric sort works
> - ${NM:='nm'} ${NMFLAGS} -t d "$1" | grep __assym_offset__ | sed -e 's/__/ /g' | sort -k 4 -k 1 -n |
> + asserts=
> while read off x1 x2 struct field type x3; do
> off=$(echo "$off" | sed -E 's/^0+//')
> if [ "$last" != "$struct" ]; then
> @@ -60,12 +57,14 @@ work()
> printf "%b" "\t${type}\t${field};\n"
> lastoff="$off"
> lasttype="$type"
> - echo "_SA(${struct}, ${field}, ${off});" >> "$temp/asserts"
> - done
> + asserts="${asserts}_SA(${struct}, ${field}, ${off});\n"
> + done <<EOT
> +$(${NM:='nm'} ${NMFLAGS} -t d "$1" | grep __assym_offset__ | sed -e 's/__/ /g' | sort -k 4 -k 1 -n)
> +EOT
> echo "};"
> echo "#define _SA(s,f,o) _Static_assert(__builtin_offsetof(struct s ## _lite, f) == o, \\"
> printf '\t"struct "#s"_lite field "#f" not at offset "#o)\n'
> - cat "$temp/asserts"
> + echo -e "${asserts}\c"
This isn’t POSIX, and isn’t supported by macOS’s sh, so breaks the
build there. Please fix or revert promptly.
Jess
> echo "#undef _SA"
> echo "#endif"
> echo "#endif"