Это не обеспечивает отображение значимого символа
«Стандартный» способ выполнить это отображение - использовать addr2line . Что-то вроде:
addr2line -fe a.out 0x40076b 0x400796 0x4007bd ...
Обновление:
Хочу на лету конвертировать ...
Ну, вы должны были спросить , что тогда.
Это простой вопрос написания кода. Вам нужно написать код, который будет сопоставлять диапазоны адресов с именами символов (как это делает addr2line
).
На платформе ELF это на самом деле довольно просто: прочитайте Elf32_Sym
s из раздела .symtab
, чтобы построить карту адресов к символам, и найдите свои адреса на этой карте. Вам также необходимо прочитать соответствующий символ names из секции .strtab
(Elf32_Sym.st_name
- смещение в .strtab
).