diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 13:16:40 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 13:16:40 +0000 |
commit | 47ab3d4a42e9ab51c465c4322d2ec233f6324e6b (patch) | |
tree | a61a0ffd83f4a3def4b36e5c8e99630c559aa723 /src/cmp.bash | |
parent | Initial commit. (diff) | |
download | golang-1.18-47ab3d4a42e9ab51c465c4322d2ec233f6324e6b.tar.xz golang-1.18-47ab3d4a42e9ab51c465c4322d2ec233f6324e6b.zip |
Adding upstream version 1.18.10.upstream/1.18.10upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/cmp.bash')
-rw-r--r-- | src/cmp.bash | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/cmp.bash b/src/cmp.bash new file mode 100644 index 0000000..dac9ca0 --- /dev/null +++ b/src/cmp.bash @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +# Copyright 2016 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +# A simple script to compare differences between +# assembly listings for packages built with different +# compiler flags. It is useful to inspect the impact +# of a compiler change across all std lib packages. +# +# The script builds the std library (make.bash) once +# with FLAGS1 and once with FLAGS2 and compares the +# "go build <pkg>" assembly output for each package +# and lists the packages with differences. +# +# It leaves and old.txt and new.txt file in the package +# directories for the packages with differences. + +FLAGS1="-newexport=0" +FLAGS2="-newexport=1" + +echo +echo +echo "1a) clean build using $FLAGS1" +(export GO_GCFLAGS="$FLAGS1"; sh make.bash) + +echo +echo +echo "1b) save go build output for all packages" +for pkg in `go list std`; do + echo $pkg + DIR=$GOROOT/src/$pkg + go build -gcflags "$FLAGS1 -S" -o /dev/null $pkg &> $DIR/old.txt +done + +echo +echo +echo "2a) clean build using $FLAGS2" +(export GO_GCFLAGS="$FLAGS2"; sh make.bash) + +echo +echo +echo "2b) save go build output for all packages" +for pkg in `go list std`; do + echo $pkg + DIR=$GOROOT/src/$pkg + go build -gcflags "$FLAGS2 -S" -o /dev/null $pkg &> $DIR/new.txt +done + +echo +echo +echo "3) compare assembly files" +for pkg in `go list std`; do + DIR=$GOROOT/src/$pkg + + if cmp $DIR/old.txt $DIR/new.txt &> /dev/null + then rm $DIR/old.txt $DIR/new.txt + else echo "==> $DIR" + fi +done |