TL; DR:
- В двоичных файлах Fedora есть специальный сжатый раздел
.gnu_debugdata
, который читает GDB и который содержит мини-символы . - Содержимое этого раздела может быть удобно напечатано с помощью
eu-readelf -Ws --elf-section /usr/bin/ls
readelf -S /usr/bin/ls | grep abformat
Эта команда выводит разделов .Вы хотите символов вместо:
readelf -s /usr/bin/ls | grep abformat
readelf --all /usr/bin/ls | grep abformat
strings /usr/bin/ls | grep abformat
Strings пытается угадать, что вы хотите, и не выводит все строкинашел в двоичном коде.Посмотрите этот пост и попробуйте:
strings -a /usr/bin/ls | grep abformat
Обновление: Я подтвердил результаты, которые вы наблюдали: abformat
нигде не появляется, но GDB знаетоб этом.
Оказывается, есть .gnu_debugdata
сжатая секция (описанная здесь ), которая имеет мини-символы .
Чтобы извлечь эти данные, обычно вы должны сделать:
objcopy -O binary -j .gnu_debugdata /usr/bin/ls ls.mini.xz
Однако, что сломано в моей системе (выдает пустой вывод), поэтому вместо этого я использовал dd
:
# You may need to adjust the numbers below from "readelf -WS /usr/bin/ls"
dd if=/usr/bin/ls of=ls.mini.xz bs=1 skip=151896 count=3764
xz -d ls.mini.xz
nm ls.mini | grep abformat
Произведено:
00000000000005db0 t abformat_init
КЭД.
Дополнительная информация:
- Запутан GDB
no debugging symbols
адресованв эта ошибка . objcopy
отказ от копирования .gnu_debugdata
является предметом этой ошибки . Там это инструмент, который может удобно выводить эту информацию:
eu-readelf -Ws --elf-section /usr/bin/ls | grep abformat
37: 0000000000005db0 593 FUNC LOCAL DEFAULT 14 abformat_init