Вопрос
Я работаю над клоном elfdump
команда.
Моя программа работает нормально при запуске elfdump -ecps *file*
на всех исполняемых файлах.Однако, когда я запускаю свою программу в файле библиотеки, скажем, libc.so, она выводит неправильный номер версии для всех символов в разделе .symtab (в частности, все они равны нулю).Я просматривал документацию много раз, но не могу понять, почему это происходит.
Может кто-нибудь дать несколько советов?Или, возможно, как определить, является ли это библиотекой или нет, чтобы я мог просто жестко запрограммировать 0?
Решение
Я полагаю, что вы можете определить, работаете ли вы с общей библиотекой, проверив, имеет ли поле e_type значение ET_DYN.(человек-эльф(5))
Есть статья Ульриха Дреппера, в котором описаны трюки с посимвольным управлением версиями glibc в ELF.Возможно, там есть дополнительная информация, с которой вы раньше не сталкивались.Страницы руководства по Linux, похоже, не содержат информации о версиях для каждого символа в документации ELF.