You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.3 KiB
58 lines
1.3 KiB
#!/bin/env php
|
|
<?php
|
|
|
|
$dump = trim(shell_exec('xtensa-lx106-elf-size build/httpd_app.a -A'));
|
|
|
|
$pieces = explode("\n\n", $dump);
|
|
|
|
$all_sections = [];
|
|
|
|
$table = [];
|
|
foreach ($pieces as $piece) {
|
|
$rows = explode("\n", trim($piece));
|
|
if (!$rows) continue;
|
|
list($name,) = explode(' ', trim($rows[0]));
|
|
$entries = array_map(function($s) {
|
|
$pcs = preg_split('/\s+/', $s);
|
|
return [$pcs[0], $pcs[1]];
|
|
}, array_slice($rows, 3, count($rows)-4));
|
|
foreach($entries as $e) {
|
|
list($space, $bytes) = $e;
|
|
if (!in_array($space, $all_sections)) $all_sections[] = $space;
|
|
$table[$name][$space] = $bytes;
|
|
}
|
|
}
|
|
|
|
if (isset($argv[1])) {
|
|
$key = $argv[1];
|
|
uasort($table, function($a, $b) use ($key) {
|
|
$av = $a[$key] ?? 0;
|
|
$bv = $b[$key] ?? 0;
|
|
return -($av <=> $bv);
|
|
});
|
|
}
|
|
|
|
$all_sections = array_diff($all_sections, [
|
|
'.comment',
|
|
'.xtensa.info',
|
|
'.xt.lit',
|
|
'.xt.prop',
|
|
'.literal',
|
|
'.irom0.literal',
|
|
'.data',
|
|
]);
|
|
|
|
$widths = [];
|
|
foreach($all_sections as $k) {
|
|
$widths[$k] = max(8, strlen($k));
|
|
printf("%".($widths[$k])."s ", $k);
|
|
}
|
|
echo "\n";//.str_repeat('-',array_sum($widths))."\n";
|
|
|
|
foreach ($table as $file => $map) {
|
|
foreach ($all_sections as $space) {
|
|
$b = isset($map[$space]) ? $map[$space] : 0;
|
|
printf("%".$widths[$space]."d ", $b);
|
|
}
|
|
echo " $file\n";
|
|
}
|
|
|