aboutsummaryrefslogtreecommitdiff
path: root/arch/x86/tools/calc_run_size.pl
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2014-11-22 11:07:49 +0000
committerMark Brown <broonie@kernel.org>2014-11-22 11:07:49 +0000
commit7280e4222be4e88e2e8dd3cf797f093ffaebfb8b (patch)
tree0c70042dff00ef136c449ae922e48b660b17c272 /arch/x86/tools/calc_run_size.pl
parent3070bdc3c302c80996502639e03a2e550571e152 (diff)
parent1f0f80ecae848b0ca2ca632e94568721494f09f0 (diff)
Merge branch 'linux-linaro-lsk-v3.14' into linux-linaro-lsk-v3.14-androidlsk-v3.14-android-14.11
Diffstat (limited to 'arch/x86/tools/calc_run_size.pl')
-rw-r--r--arch/x86/tools/calc_run_size.pl30
1 files changed, 30 insertions, 0 deletions
diff --git a/arch/x86/tools/calc_run_size.pl b/arch/x86/tools/calc_run_size.pl
new file mode 100644
index 000000000000..0b0b124d3ece
--- /dev/null
+++ b/arch/x86/tools/calc_run_size.pl
@@ -0,0 +1,30 @@
+#!/usr/bin/perl
+#
+# Calculate the amount of space needed to run the kernel, including room for
+# the .bss and .brk sections.
+#
+# Usage:
+# objdump -h a.out | perl calc_run_size.pl
+use strict;
+
+my $mem_size = 0;
+my $file_offset = 0;
+
+my $sections=" *[0-9]+ \.(?:bss|brk) +";
+while (<>) {
+ if (/^$sections([0-9a-f]+) +(?:[0-9a-f]+ +){2}([0-9a-f]+)/) {
+ my $size = hex($1);
+ my $offset = hex($2);
+ $mem_size += $size;
+ if ($file_offset == 0) {
+ $file_offset = $offset;
+ } elsif ($file_offset != $offset) {
+ die ".bss and .brk lack common file offset\n";
+ }
+ }
+}
+
+if ($file_offset == 0) {
+ die "Never found .bss or .brk file offset\n";
+}
+printf("%d\n", $mem_size + $file_offset);