blob: 38fabcf5b0f5392011dccd2a4789046c290a4d09 [file] [log] [blame]
#!/bin/bash
tmp=tmp-bench-size-$$
if [ `uname` = "Darwin" ] ; then
# e.g., `total 20986192`
totalawk='/^total/ {print $2}'
# e.g., ` Section __text: 1445477`
otherawk='$2 ~ "__.?%s:" {tot += $3} END {print tot}'
size -m "$1" > $tmp
wposix=
else
x=`which gsize`
# e.g., `Total 3879861`
totalawk='$1 == "Total" {print $2}'
# e.g., `.text 1269331 4207296`
# Field 2 is size, field 3 is address.
otherawk='$1 ~ ".%s" {tot += $2} END {print tot}'
if [ "x$x" = "x" ] ; then
size -A "$1" > $tmp
else
"$x" -A "$1" > $tmp
fi
wposix="-Wposix"
fi
# $1: size output file
# $2: section name (without leading .)
function find_section() {
cmd="$(printf "${otherawk}" $2)"
out=$(awk ${wposix} "${cmd}" < $1)
if [[ "${out}" == "" ]]; then
echo 0
else
echo ${out}
fi
}
# note total is different
total=$(awk ${wposix} "${totalawk}" < ${tmp})
text=$(find_section "${tmp}" "text")
gopclntab=$(find_section "${tmp}" "gopclntab")
rodata=$(find_section "${tmp}" "rodata")
data=$(find_section "${tmp}" "data")
debug_info=$(find_section "${tmp}" "debug_info")
debug_loc=$(find_section "${tmp}" "debug_loc")
debug_line=$(find_section "${tmp}" "debug_line")
debug_ranges=$(find_section "${tmp}" "debug_ranges")
debug_frame=$(find_section "${tmp}" "debug_frame")
debug_abbrev=$(find_section "${tmp}" "debug_abbrev")
debug_pubname=$(find_section "${tmp}" "debug_pubname")
debug_pubtype=$(find_section "${tmp}" "debug_pubtype")
echo "goos: $GOOS"
echo "goarch: $GOARCH"
echo "pkg:" # Erase any inherited pkg if files are concatenated
if echo $total | egrep -q '[0-9]+' ; then
echo Unit total-bytes assume=exact
echo "Benchmark${2}" 1 ${total} total-bytes
fi
if echo $text | egrep -q '[0-9]+' ; then
echo Unit text-bytes assume=exact
echo "Benchmark${2}" 1 ${text} text-bytes
fi
if echo $data | egrep -q '[0-9]+' ; then
echo Unit data-bytes assume=exact
echo "Benchmark${2}" 1 ${data} data-bytes
fi
if echo $rodata | egrep -q '[0-9]+' ; then
echo Unit rodata-bytes assume=exact
echo "Benchmark${2}" 1 ${rodata} rodata-bytes
fi
if echo $gopclntab | egrep -q '[0-9]+' ; then
echo Unit pclntab-bytes assume=exact
echo "Benchmark${2}" 1 ${gopclntab} pclntab-bytes
fi
debug=`expr ${debug_info} + ${debug_loc} + ${debug_line} + ${debug_ranges} + ${debug_frame} + ${debug_abbrev} + ${debug_pubname} + ${debug_pubtype}`
if echo $debug | egrep -q '[0-9]+' ; then
echo Unit debug-bytes assume=exact
echo "Benchmark${2}" 1 ${debug} debug-bytes
fi
rm $tmp