LINUX.ORG.RU

выравнивание внутри структур данных

 ,


1

3

Есть полезная утиль pahole, но беда в том, что на новых системах ( binutils >= 2.31 ) она не видит размеров части структур и показывает далеко не все структуры.

на старой системе «pahole main.o | wc» дает «10716 64215 543699», а на новой всего «95 492 4135». Версии pahole везде 1.15 (распоследняя).

Замечено, что в новой сиситеме видны только те структуры, которые описаны и используются в данном файле. т.е. не видно данных про структуры которые были в заголовочных файлах!

Может есть способ заставить gcc/binutils генерировать все данные, чтоб pahole их могла показать?

★★★★★

Я бы проверял версию dwarf, а не утилит. Возможно, что pahole что-то не реализует из более новой версии. Тогда компилятору можно будет указать поддерживаемую версию.

xaizek ★★★★★
()
Последнее исправление: xaizek (всего исправлений: 1)
Ответ на: комментарий от xaizek

сборка с разными ключами -g -g3 -gdwarf -gdwarf-3 разницы не дает.

информация «readelf --debug-dump=info» совпадает с тем как компилировали.

Есть разница в разрядности - на старой она 32 бита, на новой - 64.

Интересно, что от версии компилятора ничего не зависит.

Я посмотрел ассемблерный файл и понял, что в нем нет нужной информации.

Похоже, что нужно сравнивать опции при компиляции (модуля ядра). Там строка компиляции под 3кб.

vel ★★★★★
() автор топика
Последнее исправление: vel (всего исправлений: 1)

Опция "-femit-struct-debug-baseonly" убивает всю дополнительную информацию

Починил pahole :)

vel ★★★★★
() автор топика
Ответ на: комментарий от vel

Зашли лучше багрепорт разработчику пахома. :)

Крутая и полезная утилита. Только мой патч туда так и не приняли. :)

a1batross ★★★★★
()
Последнее исправление: a1batross (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.