From 0fa80515bff75dbe7bb98876e57f822598db7626 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= Date: Tue, 5 Oct 2004 23:42:34 +0200 Subject: 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 --- list-obj-sizes.awk | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) (limited to 'list-obj-sizes.awk') 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; } -- cgit v1.2.1