From 0fa80515bff75dbe7bb98876e57f822598db7626 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Tue, 5 Oct 2004 23:42:34 +0200
Subject: [PATCH] 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(-)

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;
 }
-- 
GitLab