узнать рамер функций и данных в elf-файле
Модератор: Модераторы разделов
-
savigm
- Сообщения: 127
- ОС: openSUSE
узнать рамер функций и данных в elf-файле
Дано: elf-файл, с различными секциями .text, .data, .rodata, .bss и т.д. Требуется: узнать размер всех функций, данных(переменных, массивов, структур и т.д.). Можно конечно лазить по дизассемблеру, но это весьма неблагодарное занятие, хотелось-бы в виде таблицы, причем в порядке убывания. Эксперименты с readelf и objdump пока не дали результатов. Буду всем очень признателен за помощь.
-
Alxn1
- Сообщения: 402
- Статус: Красноглазик со стажем
- ОС: Mavericks
Re: узнать рамер функций и данных в elf-файле
Мне почему-то кажется что это невозможно. Данные и функции лежат в разных секциях, а символы просто ссылаются на их начало. Размер для загрузки и выполнения не нужен, в общем-то.
-
savigm
- Сообщения: 127
- ОС: openSUSE
Re: узнать рамер функций и данных в elf-файле
Ну а как-же тогда я получаю дизассемблер из ельфа с детальной информацией по всем секциям и их соодержимому (функции, переменные, константы) вплоть до каждой команды и слова данных.
Можно пользоваться дизассемблером для определения размеров всего кода и данных, но это крайне неудобно, должно-же быть встроенное средство для этих целей: objdump или readelf.
-
watashiwa_daredeska
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: узнать рамер функций и данных в elf-файле
С нормальными именами? Из отладочной информации. Без неё будет нечитабельная и непонимабельная каша.
Мои розовые очки
-
watashiwa_daredeska
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: узнать рамер функций и данных в elf-файле
Код создаётся не для удобства его хаканья, а для эффективного выполнения.
Совершенно не обязательно должно быть встроенное средство для хаканья ELF. Для определения положения и размеров различных сущностей есть генерация map-файлов при сборке: man ld, / {7}-M 2 раза, опции -M и -Map.
Мои розовые очки
-
savigm
- Сообщения: 127
- ОС: openSUSE
Re: узнать рамер функций и данных в elf-файле
map скажет информацию по объектникам, которые он будет компоновать, поэтому не подходит.
Вот есть объектный elf файл, из него можно сделать дизассемблер, где будут отображены все функции и данные, где изветстны адреса функциий и данных, их соодержимое, а соответсвенно и размеры. Можно конечно и руками все оттуда выдергивать, но как-то это неуклюже получается, неужели в binutils нет нормальных средств? Если можно получить детальный дизассемблер, неужели нельзя получить менее детальную информацию о размерах функций и данных?
nm --size-sort выдает размер для данных, но не для кода.
Вот есть объектный elf файл, из него можно сделать дизассемблер, где будут отображены все функции и данные, где изветстны адреса функциий и данных, их соодержимое, а соответсвенно и размеры. Можно конечно и руками все оттуда выдергивать, но как-то это неуклюже получается, неужели в binutils нет нормальных средств? Если можно получить детальный дизассемблер, неужели нельзя получить менее детальную информацию о размерах функций и данных?
nm --size-sort выдает размер для данных, но не для кода.