Из спецификации ELF каждый символ определяется с использованием следующей структуры:
typedef struct {
Elf32_Word
Elf32_Addr
Elf32_Word
unsigned char
unsigned char
Elf32_Half
} Elf32_Sym;
Таким образом, в общем случае это будет 16 байтов.Динамическая и статическая таблица символов используют одну и ту же структуру, поэтому синтаксический анализ этой таблицы одинаков как для статического, так и для связывания.Конечно, значения значений не всегда одинаковы.
Вы можете получить символ в таблице символов двумя способами.Во-первых, если вы уже знаете индекс символа, вы можете просто перейти к этому индексу.Но иногда у вас нет индекса символа, у вас есть только имя символа, и на самом деле вы хотите проверить, есть ли в таблице символов определение символа с таким именем.Во второй ситуации вы используете разделы хеша.Они используются для быстрой проверки наличия символа в таблице символов: symbol-name
-> hash
-> symb_index
-> проверить, если symbol_table[symb_index] == symbol-name
.