summaryrefslogtreecommitdiff
path: root/list-obj-sizes.awk
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2004-10-05 23:42:34 +0200
committerNiels Möller <nisse@lysator.liu.se>2004-10-05 23:42:34 +0200
commit0fa80515bff75dbe7bb98876e57f822598db7626 (patch)
tree0e0e1508d9910d6643360787d5875b6f7e8931aa /list-obj-sizes.awk
parentb36ee58c0631b71f6bd8359907854e4f790d3f32 (diff)
downloadnettle-0fa80515bff75dbe7bb98876e57f822598db7626.tar.gz
Fixes to handle multiple .data and .rodata
sections. Also fixed to handle the last file correctly. Rev: src/nettle/list-obj-sizes.awk:1.4
Diffstat (limited to 'list-obj-sizes.awk')
-rwxr-xr-xlist-obj-sizes.awk38
1 files changed, 26 insertions, 12 deletions
diff --git a/list-obj-sizes.awk b/list-obj-sizes.awk
index 34bcc269..8a910f9d 100755
--- a/list-obj-sizes.awk
+++ b/list-obj-sizes.awk
@@ -15,11 +15,29 @@ function hex2int (hex) {
return n;
}
+function output () {
+ if (name)
+ {
+ printf "%25s %6x %6x %6x\n", name, text_size, data_size, rodata_size;
+ text_total += text_size;
+ data_total += data_size;
+ rodata_total += rodata_size;
+ }
+ text_size = 0;
+ data_size = 0;
+ rodata_size = 0;
+}
+
BEGIN {
- print "file text-size data-size rodata-size";
+ print "file text-size data-size rodata-size";
text_total = 0;
data_total = 0;
rodata_total = 0;
+
+ text_size = 0;
+ data_size = 0;
+ rodata_size = 0;
+
name = "";
filter = ENVIRON["FILTER"];
if (!filter)
@@ -29,25 +47,21 @@ BEGIN {
}
/elf32/ {
- if (name)
- {
- printf "%25s %6x %6x %6x\n", name, text_size, data_size, rodata_size;
- text_total += text_size;
- data_total += data_size;
- rodata_total += rodata_size;
- }
+ output();
if ($1 ~ filter)
{
name = $1; text_size = data_size = rodata_size = 0;
sub(/^[^-]*_a-/, "", name);
}
else
- name = ""
+ name = "";
}
-/\.text/ { text_size = hex2int($3) }
-/\.data/ { data_size = hex2int($3); }
-/\.rodata/ { rodata_size = hex2int($3); }
+
+/\.text/ { text_size += hex2int($3); }
+/\.data/ { data_size += hex2int($3); }
+/\.rodata/ { rodata_size += hex2int($3);}
END {
+ output();
printf "%25s %6x %6x %6x\n", "TOTAL", text_total, data_total, rodata_total;
}