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.@