A fork of https://github.com/crosspoint-reader/crosspoint-reader
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 42 lines 1.4 kB view raw
1#!/bin/bash 2 3ELF_FILE=".pio/build/default/firmware.elf" 4 5list_top_symbols() { 6 local section_pattern="$1" 7 local section_name="$2" 8 local num_symbols=$3 9 10 # objdump -t format: address flags section size name 11 # Filter by section, extract size and name, calculate total 12 local data=$(objdump -t "$ELF_FILE" | \ 13 awk -v pattern="$section_pattern" '$4 ~ pattern { print $5, $6 }' | \ 14 while read hex name; do 15 dec=$((16#$hex)) 16 echo "$dec $hex $name" 17 done | \ 18 sort -k1 -r -n) 19 20 local total=$(echo "$data" | awk '{ sum += $1 } END { print sum }') 21 local total_kb=$(echo "$total" | awk '{ printf "%.2f", $1 / 1024 }') 22 23 echo "============================================" 24 echo "Top $num_symbols largest symbols in section: $section_name" 25 echo "Total section size: $total bytes ($total_kb KB)" 26 echo "============================================" 27 28 echo "$data" | \ 29 head -$num_symbols | \ 30 awk '{ 31 size_kb = $1 / 1024 32 printf " %10s (%7.2f KB) %s\n", $2, size_kb, $3 33 }' 34 35 echo "" 36} 37 38list_top_symbols "\\.dram0\\.bss" ".dram0.bss" 10 39list_top_symbols "\\.dram0\\.data" ".dram0.data" 10 40list_top_symbols "\\.flash\\.rodata" ".flash.rodata" 200 41list_top_symbols "\\.flash\\.text" ".flash.text" 40 42list_top_symbols "\\.iram0\\.text" ".iram0.text" 10