Инструмент для анализа размера секций и символа ELF
Мне нужен способ анализа выходного файла моего компилятора GCC для ARM. Я собираюсь для голого металла, и я очень обеспокоен размером. Я могу использовать arm-none-eabi-objdump
, предоставляемый кросс-компилятором, но синтаксический анализ вывода - это не то, что я хотел бы сделать, если есть инструмент для этой задачи. Знаете ли вы, что такой инструмент существует? Поиск не дал результатов.
Еще одна вещь, каждая функция в моем собственном коде находится в своем собственном разделе.
Ответы
Ответ 1
Вы можете использовать nm
и size
, чтобы получить размер функций и разделов ELF.
Чтобы получить размер функций (и объектов со статической продолжительностью хранения):
$ nm --print-size --size-sort --radix=d tst.o
Второй столбец показывает размер в десятичном значении функции и объектов.
Чтобы получить размер разделов:
$ size -A -d tst.o
Второй столбец показывает размер в десятичной части разделов.
Ответ 2
Утилита readelf удобна для отображения различной информации о разделах, включая размеры разделов, например:
arm-none-eabi-readelf -e foo.o
Если вас интересует объем памяти во время выполнения, вы можете игнорировать разделы, для которых не установлен флаг "A" (allocate).
Ответ 3
puncover
использует objdump
и несколько других инструментов gcc для создания html-страниц, которые вы можете легко просмотреть, чтобы выяснить, куда движется ваш код и пространство данных.
Это гораздо приятнее, чем текстовый вывод инструментов gcc.