NM(1) NM(1)
НАЗВАНИЕ
nm - вывод таблицы имен объектного файла обычного фор-
мата
СИНТАКСИС
nm [-o] [-x] [-h] [-v] [-n] [-e] [-f] [-u] [-r] [-p] [-V] [-T] файл ...
ОПИСАНИЕ
Команда nm выдает на стандартный вывод таблицу имен для
каждого объектного файла, указанного в командной стро-
ке. Файл может быть как перемещаемым, так и абсолютным
об ектным файлом, или может быть архивом из таких фай-
лов. Для каждого элемента таблицы выдается следующая
информация:
Name Имя элемента таблицы.
Value Значение, выражаемое как смещение или адрес, в
зависимости от класса хранения.
Class Класс хранения.
Type Информация о типе. Если элемент описывает эк-
земпляр структуры или об единения, то за типом
будет выведено имя структуры или об единения
(например, struct-имя). Если элемент соответст-
вует массиву, то размер массива будет указан за
типом (например, char[n][m]). Заметим, что для
наличия этой информации файл должен быть отком-
пилирован командой cc(1) с опцией -g.
Size Размер в байтах, если он определен. Заметим,
что для наличия этой информации файл должен
быть откомпилирован командой cc(1) с опцией -g.
Line Номер строки в файле с исходным текстом, в ко-
торой об ект определяется, если эта информация
имеет смысл. Заметим, что для наличия этой ин-
формации файл должен быть откомпилирован коман-
дой cc(1) с опцией -g.
Section Для объектов с классом хранения статический
(static) и внешний (extern) указывается секция,
которой принадлежит об ект: секция команд
(.text), секция инициализированных данных
(.data) или секция неинициализированных данных
(.bss).
Следующие опции определяют содержание и формат информа-
ции, выдаваемой командой nm:
-o Выводить значение и размер в восьмеричном виде, а
не в десятичном.
-x Выводить значение и размер в шестнадцатеричном ви-
де, а не в десятичном.
-h Не выводить заголовок.
-v Отсортировать внешние объекты по значению.
-n Отсортировать внешние объекты по алфавиту.
-e Выдавать только статические и внешние объекты.
-f Выдавать всю информацию. Выводятся обычно подавля-
емые избыточные элементы таблицы имен (.text,
.data, .lib, .bss).
-u Выводить только неопределенные объекты.
-r Добавлять в начале каждой выводимой строки имя
объектного файла или архива.
-p Выводить в легко обозримом, кратком формате. Перед
именем каждого объекта стоит его значение (пробе-
лы, если не определено) и одна из следующих букв:
U (неопределенный), A (абсолютный), T (входит в
секцию команд), D (входит в секцию данных), S
(входит в секцию, определенную пользователем), R
(располагается в регистре), F (файл) или C (входит
в общий блок). Информация о локальных (не внешних)
об ектах выдается малыми буквами.
-V Вывести в стандартный протокол информацию о версии
команды nm.
-T По умолчанию команда nm выводит полные имена об -
ектов. Но так как об ектные файлы могут содержать
имена произвольной длины, то возможен сдвиг после-
дующих колонок. Опция -T вызывает усечение длинных
имен. При этом факт усечения отмечается звездочкой
в последней позиции, отведенной под имя.
Опции можно использовать в произвольном порядке, вместе
или по отдельности, и в произвольном месте командной
строки. Так, команды
nm f1 -e -v
и
nm -ve f1
работают одинаково: выдают статические и внешние об ек-
ты файла с сортировкой внешних об ектов по значению.
ФАЙЛЫ
TMPDIR/* Временные файлы.
Обычно каталог TMPDIR - это /usr/tmp, однако данное
соглашение можно изменить, присвоив переменной окруже-
ния TMPDIR другое значение [см. tempnam( ) в
tmpnam(3S)].
СМ. ТАКЖЕ
as(1), cc(1), ld(1).
tmpnam(3S), a.out(4), ar(4) в Справочнике программиста.
ДИАГНОСТИКА
nm: файл: cannot open
Файл не удается открыть.
nm: файл: bad magic
Файл не является об ектным файлом обычного форма-
та.
nm: файл: no symbols
Файл не содержит таблицы имен.
СЮРПРИЗЫ
В ситуации, когда выводятся все об екты, для сохранения
локализации информации нужно, чтобы об екты выводились
в том порядке, в каком они хранятся в таблице имен.
Следовательно, опции -v и -n следует использовать толь-
ко вместе с опцией -e.
|