Подтвердить что ты не робот

Инструмент для анализа размера секций и символа ELF

Мне нужен способ анализа выходного файла моего компилятора GCC для ARM. Я собираюсь для голого металла, и я очень обеспокоен размером. Я могу использовать arm-none-eabi-objdump, предоставляемый кросс-компилятором, но синтаксический анализ вывода - это не то, что я хотел бы сделать, если есть инструмент для этой задачи. Знаете ли вы, что такой инструмент существует? Поиск не дал результатов.

Еще одна вещь, каждая функция в моем собственном коде находится в своем собственном разделе.

4b9b3361

Ответ 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.