Вопрос

Я работаю над клоном elfdump команда.

Моя программа работает нормально при запуске elfdump -ecps *file* на всех исполняемых файлах.Однако, когда я запускаю свою программу в файле библиотеки, скажем, libc.so, она выводит неправильный номер версии для всех символов в разделе .symtab (в частности, все они равны нулю).Я просматривал документацию много раз, но не могу понять, почему это происходит.

Может кто-нибудь дать несколько советов?Или, возможно, как определить, является ли это библиотекой или нет, чтобы я мог просто жестко запрограммировать 0?

Это было полезно?

Решение

Я полагаю, что вы можете определить, работаете ли вы с общей библиотекой, проверив, имеет ли поле e_type значение ET_DYN.(человек-эльф(5))

Есть статья Ульриха Дреппера, в котором описаны трюки с посимвольным управлением версиями glibc в ELF.Возможно, там есть дополнительная информация, с которой вы раньше не сталкивались.Страницы руководства по Linux, похоже, не содержат информации о версиях для каждого символа в документации ELF.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top