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