diff scripts/bloatcheck @ 492:f3169b2492f1

Replace GPL python debug script with BSD shell script.
author Rob Landley <rob@landley.net>
date Tue, 21 Feb 2012 21:27:10 -0600
parents
children ca297cc8a204
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/bloatcheck	Tue Feb 21 21:27:10 2012 -0600
@@ -0,0 +1,60 @@
+#!/bin/bash
+
+if [ $# -ne 2 ]
+then
+  echo "usage: bloatcheck old new"
+  exit 1
+fi
+
+addline()
+{
+  NEXT="$(printf "%s% $((50-${#LASTNAME}))d% 10d %10d" "$LASTNAME" "$OLD" "$NEW" "$DELTA")"
+  [ -z "$STUFF" ] &&
+    STUFF="$NEXT" ||
+    STUFF="$(printf "%s\n%s" "$STUFF" "$NEXT")"
+}
+
+diff <(nm --size-sort "$1" | sort -k3,3) \
+     <(nm --size-sort "$2" | sort -k3,3) | grep '^[<>]' | sort -k4,4 | \
+(
+LASTNAME=
+DELTA=0
+TOTAL=0
+OLD=0
+NEW=0
+STUFF=
+
+printf "name% 46s% 10s% 11s\n" old new delta
+echo "-----------------------------------------------------------------------"
+while read a b c d
+do
+  THISNAME=$(echo " $d" | sed 's/[.][0-9]*$//')
+
+  if [ "$LASTNAME" != "$THISNAME" ]
+  then
+    TOTAL=$(($TOTAL+$DELTA))
+    [ $DELTA -ne 0 ] && addline
+    LASTNAME="$THISNAME"
+    DELTA=0
+    OLD=0
+    NEW=0
+  fi
+
+  SIZE=$(printf "%d" "0x$b")
+  if [ "$a" == "<" ]
+  then
+    OLD=$(($OLD+$SIZE))
+    SIZE=$((-1*$SIZE))
+  else
+    NEW=$(($NEW+$SIZE))
+  fi
+  DELTA=$(($DELTA+$SIZE))
+done
+
+TOTAL=$(($TOTAL+$DELTA))
+[ $DELTA -ne 0 ] && addline
+
+echo "$STUFF" | sort -k4,4nr
+echo "-----------------------------------------------------------------------"
+printf "% 71d total\n" "$TOTAL"
+)