summaryrefslogtreecommitdiffstats
path: root/src/tools/utils/sbe-size/compare-section-breakdown
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/utils/sbe-size/compare-section-breakdown')
-rwxr-xr-xsrc/tools/utils/sbe-size/compare-section-breakdown66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/tools/utils/sbe-size/compare-section-breakdown b/src/tools/utils/sbe-size/compare-section-breakdown
new file mode 100755
index 00000000..bdfd5c41
--- /dev/null
+++ b/src/tools/utils/sbe-size/compare-section-breakdown
@@ -0,0 +1,66 @@
+#!/bin/bash
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/tools/utils/sbe-size/compare-section-breakdown $
+#
+# OpenPOWER sbe Project
+#
+# Contributors Listed Below - COPYRIGHT 2018
+# [+] International Business Machines Corp.
+#
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# permissions and limitations under the License.
+#
+# IBM_PROLOG_END_TAG
+
+if [ -z "$1" ]; then
+ echo "Will compare section/symbol sizes between a *.o or *.map file"
+ echo "and its counterpart in the ref/ subdirectory."
+ echo "Usage: $0 current_file"
+ exit 1
+fi
+
+MYDIR=$(dirname $0)
+CROSS_COMPILER_PATH=${CROSS_COMPILER_PATH:-/afs/awd/projects/cte/tools/ppetools/prod}
+OBJDUMP=$CROSS_COMPILER_PATH/powerpc-eabi/bin/objdump
+DIFF=${DIFF:-tkdiff}
+TMPFILEa=$(mktemp)
+TMPFILEb=$(mktemp)
+
+cleanup() {
+ rm -f $TMPFILEa $TMPFILEb
+}
+trap cleanup EXIT
+
+if [[ $1 == *.map ]]; then
+ perl -pe 's/0x[0-9a-f]{16}/0xHIDDENHIDDENHIDD/' ref/$1 > $TMPFILEa
+ perl -pe 's/0x[0-9a-f]{16}/0xHIDDENHIDDENHIDD/' $1 > $TMPFILEb
+elif [[ $1 == *.o ]]; then
+ python3 $MYDIR/section-breakdown.py ref/$1 | c++filt | sort -k2 > $TMPFILEa
+ python3 $MYDIR/section-breakdown.py $1 | c++filt | sort -k2 > $TMPFILEb
+elif [[ $1 == *.su ]]; then
+ cat ref/$1 > $TMPFILEa
+ cat $1 > $TMPFILEb
+elif [[ $1 == *.dis ]]; then
+ $OBJDUMP -dr ref/${1%.dis}.o | perl -pe 's/^\s*[0-9a-fA-F]+:/xxxx:/' > $TMPFILEa
+ $OBJDUMP -dr ${1%.dis}.o | perl -pe 's/^\s*[0-9a-fA-F]+:/xxxx:/' > $TMPFILEb
+elif [[ $1 == *.diss ]]; then
+ $OBJDUMP -Sr ref/${1%.diss}.o > $TMPFILEa
+ $OBJDUMP -Sr ${1%.diss}.o > $TMPFILEb
+else
+ echo "This script can only compare *.map, *.o or *.su files so far."
+ exit 1
+fi
+
+$DIFF $TMPFILEa $TMPFILEb
OpenPOWER on IntegriCloud