Если ваш исполняемый файл имеет значение , а не , то команда nm
(см. Также Страница Linux для nm
) будет делать то, что вы хотите - он печатает таблицу имен символов / адресов / типов. У него есть несколько вариантов вывода; в Linux форматирование в стиле "sysv" приближается к тому, чтобы дать вам то, что вы хотите. Образец:
$ nm -f sysv /bin/perl</p>
<p>Symbols from /bin/perl:</p>
<p>Name Value Class Type Size Line Section</p>
<p>Bases.3 |000000000813019c| d | OBJECT|0000000000000014| |.data
F0convert |00000000080c6905| t | FUNC|00000000000000c6| |.text
PL_AMG_names |0000000008137c80| D | OBJECT|0000000000000108| |.data
PL_No |0000000008137904| D | OBJECT|0000000000000004| |.data
PL_Yes |0000000008137900| D | OBJECT|0000000000000004| |.data
[ ... ]
PL_curinterp |0000000008138e88| B | OBJECT|0000000000000004| |.bss
PL_do_undump |0000000008137910| D | OBJECT|0000000000000001| |.data
PL_dollarzero_mutex |0000000008138e58| B | OBJECT|0000000000000018| |.bss
PL_fold |000000000812c020| R | OBJECT|0000000000000100| |.rodata
PL_fold_locale |0000000008135c80| D | OBJECT|0000000000000100| |.data
PL_force_link_funcs |0000000008137da0| D | OBJECT|00000000000006c8| |.data
PL_freq |000000000812c120| R | OBJECT|0000000000000100| |.rodata
PL_hexdigit |0000000008137908| D | OBJECT|0000000000000004| |.data
PL_memory_wrap |000000000812bfa3| R | OBJECT|0000000000000013| |.rodata
[ ... ]
PerlIO_setpos |0000000008112134| T | FUNC|00000000000000a6| |.text
PerlIO_sprintf |00000000081122ee| T | FUNC|000000000000002a| |.text
PerlIO_stdio |0000000008138720| D | OBJECT|0000000000000070| |.data
PerlIO_stdoutf |0000000008112066| T | FUNC|000000000000003b| |.text
[ ... ]
Если вы создаете объектный файл из исходного кода C:
int x = 10;
и пропустите через nm
, это даст:
$ nm -f sysv xxxx.o
Symbols from xxxx.o:
Name Value Class Type Size Line Section
x |0000000000000000| D | OBJECT|0000000000000004| |.data
Обратите внимание, что сообщаемое им поле Value
является адресом указанного символа, а не содержимым переменной.
Если вы запустите strip
поверх нее, эта таблица будет удалена, и все, что nm
сообщит вам, это «без символов».