2009-02-17 3 views
1

Я работаю над клоном команды elfdump.Версии файлов ELF

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

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

+0

Ваш вопрос не достаточно конкретный, мы не можем помочь выше спецификации. Спецификация есть, и если вы следуете ей, все должно работать, если они не пытаются опубликовать точный пример, и он может получить хороший ответ. –

ответ

3

Вы можете определить, работаете ли вы с общей библиотекой, проверяя, действительно ли поле e_type является ET_DYN. (мужчина эльф (5))

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

Смежные вопросы