Подтвердить что ты не робот

Каковы значения столбцов таблицы символов, отображаемые readelf?

Может ли кто-нибудь объяснить столбцы, отображаемые в таблице символов, используя readelf?

4b9b3361

Ответ 1

Рассмотрим следующее:

Таблица символов .symtab содержит 1203 записи:

 Num:    Value  Size Type    Bind   Vis      Ndx Name
 310: a0008120     0 NOTYPE  GLOBAL DEFAULT  ABS _gp  
 734: a0000010    32 OBJECT  GLOBAL DEFAULT   77 v 
 818: 9d000018   496 FUNC    GLOBAL DEFAULT   71 main 
 849: a0000124     4 OBJECT  GLOBAL DEFAULT   78 phrase 
 955: a0000000     9 OBJECT  GLOBAL DEFAULT   77 peppers  
1020: a000023c   192 OBJECT  GLOBAL DEFAULT   80 bins
  • Num:= Номер символа
  • Value= Адрес символа
  • Size= Размер символа
  • Type= тип символа: Func= Функция, Object, File (имя исходного файла), Section= раздел памяти, Notype= нетипированный абсолютный символ или undefined
  • Bind= GLOBAL привязка означает, что символ виден вне файла. LOCAL привязка видна только в файле. WEAK похож на глобальный, символ может быть переопределен.
  • Vis= Символы могут быть по умолчанию, защищены, скрыты или внутренними.
  • Ndx= Номер раздела, в котором находится символ. ABS означает абсолютное: не настроено на любое перемещение адреса раздела
  • Name= имя символа

Ответ 3

Я думаю, что поле Ndx показывает номер раздела, где этот символ определен.

Сделайте a readelf -a <file> и узнайте, в какой секции соответствует адрес для данного символа.

Я уверен, что номер раздела этого раздела появится в поле Ndx.

Ответ 4

Хорошо, этот вопрос старый, но старый добрый Google дает его, если вы ищете символьный символ readelf и NDX;

Вот что я узнал:

Код C, скомпилированный с помощью avr-gcc:

int XYZ = 123;
int ABC;

когда сгенерированный файл elf анализируется с помощью

readelf --symbols KoreOS.elf

вы получаете как вывод:

Num:    Value  Size Type    Bind   Vis      Ndx Name
...
148: 0080200b     2 OBJECT  GLOBAL DEFAULT    2 XYZ
...
258: 00803878     2 OBJECT  GLOBAL DEFAULT    3 ABC
...

Я использую столбец NDX как подсказку, если переменная инициализирована или нет. Но я не нашел документации нигде, поэтому я просто догадываюсь.

привет, Dominik