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: <558964EE.7090009@suse.cz>
Date:	Tue, 23 Jun 2015 15:53:50 +0200
From:	Michal Marek <mmarek@...e.cz>
To:	Rasmus Villemoes <linux@...musvillemoes.dk>
CC:	linux-kbuild@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [RFC 1/4] scripts: add stackusage script

On 2015-06-21 03:10, Rasmus Villemoes wrote:
> The current checkstack.pl script has a few problems, stemming from the
> overly simplistic attempt at parsing objdump output with regular
> expresions: For example, on x86_64 it doesn't take the push
> instruction into account, making it consistently underestimate the
> real stack use, and it also doesn't capture stack pointer adjustments
> of exactly 128 bytes [1].
> 
> Since newer gcc (>= 4.6) knows about -fstack-usage, we might as well
> take the information straight from the horse's mouth. This patch
> introduces scripts/stackusage, which is a simple wrapper for running
> make with EXTRA_CFLAGS set to -fstack-usage. Example use is
> 
> scripts/stackusage -o out.su -- -j8 fs/ext4/
> 
> Arguments after -- are passed to make. Afterwards, we find all newly
> created .su files, massage them a little, sort by stack use and
> concatenate the result to a single output file.
> 
> [1] Since gcc encodes that by
> 
> 48 83 c4 80             add    $0xffffffffffffff80,%rsp
> 
> and not
> 
> 48 81 ec 80 00 00 00    sub    $0x80,%rsp
> 
> since -128 fits in an imm8.
> 
> Signed-off-by: Rasmus Villemoes <linux@...musvillemoes.dk>
> ---
>  scripts/stackusage | 40 ++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 40 insertions(+)
>  create mode 100755 scripts/stackusage
> 
> diff --git a/scripts/stackusage b/scripts/stackusage
> new file mode 100755
> index 000000000000..d631af648ae7
> --- /dev/null
> +++ b/scripts/stackusage
> @@ -0,0 +1,40 @@
> +#!/bin/sh
> +
> +outfile=""
> +now=`date +%s`
> +
> +while [ $# -gt 0 ]
> +do
> +    case "$1" in
> +        -o)
> +	    outfile="$2"
> +	    echo "$outfile"
> +	    shift 2;;
> +	-h)
> +	    echo "usage: $0 [-o outfile] -- <make options/args>"
> +	    exit 0;;
> +	--)
> +	    shift
> +	    break;;
> +	-*)
> +            echo >&2 "usage: $0 [-o outfile] -- <make options/args>"
> +	    exit 1;;
> +	*)  break;;
> +    esac
> +done
> +
> +if [ -z "$outfile" ]
> +then
> +    outfile=`mktemp --tmpdir stackusage.$$.XXXX`
> +fi
> +
> +make EXTRA_CFLAGS="-fstack-usage" "$@"

EXTRA_CFLAGS is reserved for use by Makefiles, please use KCFLAGS
instead. I wonder whether it worked at all, because EXTRA_CFLAGS is
reset by scripts/Makefile.build.

Michal
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ