blob: 0b0b124d3eced65387195f54b5d40d2dea912bbe [file] [log] [blame]
Junjie Maoe6023362014-10-31 21:40:38 +08001#!/usr/bin/perl
2#
3# Calculate the amount of space needed to run the kernel, including room for
4# the .bss and .brk sections.
5#
6# Usage:
7# objdump -h a.out | perl calc_run_size.pl
8use strict;
9
10my $mem_size = 0;
11my $file_offset = 0;
12
13my $sections=" *[0-9]+ \.(?:bss|brk) +";
14while (<>) {
15 if (/^$sections([0-9a-f]+) +(?:[0-9a-f]+ +){2}([0-9a-f]+)/) {
16 my $size = hex($1);
17 my $offset = hex($2);
18 $mem_size += $size;
19 if ($file_offset == 0) {
20 $file_offset = $offset;
21 } elsif ($file_offset != $offset) {
22 die ".bss and .brk lack common file offset\n";
23 }
24 }
25}
26
27if ($file_offset == 0) {
28 die "Never found .bss or .brk file offset\n";
29}
30printf("%d\n", $mem_size + $file_offset);