diff options
author | Niels Möller <nisse@lysator.liu.se> | 2004-10-05 23:42:34 +0200 |
---|---|---|
committer | Niels Möller <nisse@lysator.liu.se> | 2004-10-05 23:42:34 +0200 |
commit | 0fa80515bff75dbe7bb98876e57f822598db7626 (patch) | |
tree | 0e0e1508d9910d6643360787d5875b6f7e8931aa /list-obj-sizes.awk | |
parent | b36ee58c0631b71f6bd8359907854e4f790d3f32 (diff) | |
download | nettle-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-x | list-obj-sizes.awk | 38 |
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; } |