Версия для печати

Архив документации на OpenNet.ru / Раздел "Программирование, языки" (Многостраничная версия)
Утилиты обработки двоичных файлов binutils



Руководство пользователя по утилитам: nm, objcopy, ranlib, size, strings, strip, c++filt, nlmconv.

1. ВВЕДЕНИЕ

2. nm

3. objcopy

4. ranlib

5. size

6. strings

7. strip

8. c++filt

9. nlmconv

10. Выбор целевой операционной системы


Вперед Назад Содержание
Вперед Назад Содержание

Утилиты обработки двоичных файлов binutils 2.6



Руководство пользователя по утилитам: nm, objcopy, ranlib, size, strings, strip, c++filt, nlmconv.

1. ВВЕДЕНИЕ

2. nm

3. objcopy

4. ranlib

5. size

6. strings

7. strip

8. c++filt

9. nlmconv

10. Выбор целевой операционной системы


Вперед Назад Содержание
Вперед Назад Содержание

1. ВВЕДЕНИЕ

Это руководство пользователя содержит документацию по утилитам GNU (ver 2.6, преимущественно):

 nm       список символов из об'ектных файлов.
 objcopy  копирование и перевод об'ектных файлов.
 ranlib   построение индекса содержимого архива.
 size     список размеров файла секции и общий размер.
 strings  список печатных строк в файле.
 strip    удаление отладочной информации
 c++filt
 nlmconv  преобразование объектного кода в формат NLM
          (Netware Loadable Module)


Вперед Назад Содержание
Вперед Назад Содержание

2. nm

 nm [-a | --ebug-syms] [-g | --extern-only]
    [-B] [-C | --demangle] [-D | --dynamic]
    [-s | --print-armap] [-A | -O | --print-file-name]
    [-n | -v | --numeric-sort] [-p | --no-sort]
    [-r | --reverse-sort] [-size-sort] [-u | --undefined-only]
    [-t radix | --radix=RADIX] [-P | --portability]
    [--target=BFDNAME] [-f format | --format=FORMAT]
    [--no-demangle] [-V | --version] [--help] [objfile...]
GNU nm выводит список символов из объектных файлов objfile... Если в списке аргументов не указано ни одного объектного файла nm принимает 'a.out'.

Для каждого символа nm показывает:

Длинные и короткие формы опций, приведенные в качестве аль- тернативных, эквивалентны.
-A

-o

--print-file-name

Выделяет каждый символ имени входного файла в котором он был найден, до идентификации входного файла только, перед всеми его символами.

-a

--debug-syms

Отображает все отладочные символы, обычные символы не отоб- ражаются.

-B

Аналогично '--format=bsd' (для совместимости с версией для MIPS)

-C

--demangle

Преобразует имена низкоуровневых символов в имена пользова- тельского уровня. Так же удаляют любые начальные подчеркивания в зависимости от системы, это делает имена функций C++ читабельными. Подробнее см. гл. 10 [c++filt], стр 33.

--no-demangle

Не делать подготовку имен низкоуровневых символов. Установ- лено по умолчанию.

-D

--dynamic

Отображает все динамические символы подробнее чем нормальные символы. Это важно тлько для динамических объектов, таких как оп- ределенные типы разделяемых библиотек.

-f format

--format=FORMAT

Использует ваходной формат FORMAT который может быть bsd, sysv или posix. По умолчинию принято bsd. Только первый символ FORMAT-а имеет значение; он может быть как большим так и малень- ким.

-g

--extern-only

Отображает только внешние символы.

-n

-v

--numeric-sort

Сортирует символы по их адлесам, до алфавитного упорядычева- ния.

-p

--no-sort

Отменяет какой либо порядок сортировки. Печатает символы в порядке поступления.

-p

--portability

Использует стандарт POSIX.2 формата вывода вместо формата по умолчанию. Эквивалентно '-f posix'.

-s

--print-armap

Распечатывает список символов для каждого члена архива, включает индекс: карта (сохраненная в архиве утилитами ar или ranlib) которую модули содержат для каждого имени.

-r

--reverse-sort

Меняет порядок сортровки на обратный (как числовой так и алфавитный).

--size-sort

Сортировка символов по размеру. Размер вычисляется как разность между адресами текущего и следующего символов. Размер символа печатается перед значением.

-t radix

--radix=RADIX

Использовать RADIX как основание системы счисления для печати значения символов. Десятичной системе соответствует 'd', восьмеричной - 'o', шестнадцатиричной - 'x'.

--target=BFDNAME

Задает формат объектного кода отличого от принятого по умолчанию в Вашей системе. Подробнее см. раздел 11.1. [Выбор целевой ОС], стр. 37.

-u

--undefined-only

Показывать только неопределенные символы (внешние для объектного файла).

-V

--version

Показать номер версии nm и завершить работу.

--help

Показать список опций nm и завершить работу.


Вперед Назад Содержание
Вперед Назад Содержание

3. objcopy

 objcopy [-F BFDNAME | --target=BFDNAME]
         [-I BFDNAME | --input-target=BFDNAME]
         [-O BFDNAME | --output-target=BFDNAME]
         [-S | --strip-all] [-g | --strip-debug]
         [-K SYMBOLNAME | --keep-symbol=SYMBOLNAME]
         [-N SYMBOLNAME | --strip-symbol=SYMBOLNAME]
         [-x | --discard-all] [-X | --discard-locals]
         [-b BYTE | --byte=BYTE]
         [-i INTERLEAVE | --interleave=INTERLEAVE]
         [-R SECTIONNAME | --remove-section=SCTIONNAME]
         [--gap-fill=VAL] [--pad-to=ADDRESS]
         [--set-start=VAL] [--adjust-start=INCR]
         [--adjust-vma=INCR]
         [--adjust-section-vma=SECTION{=,+,-}VAL]
         [--adjust-warnings] [--no-adjust-warnings]
         [--set-section-flags=SECTION=FLAGS]
         [--add-section=SECTIONNAME=FILENAME]
         [-v | --verbose] [-V | --version] [--help]
         INFILE [OUTFILE]
Утилита GNU objcopy копирует содержимое одних объектных файлов в другие. Для чтения и записи объектных файлов objcopy использует библиотеку GNU BFD. Она может записывать результирующие объектные файлы в формате отличном от формата исходных объектных файлов. Работа objcopy определяется опциями командной строки.

Во время трансляции objcopy создает временный файл, который после работы уничтожается. objcopy использует BFD на протяжении всей трансляции; это позволяет получить доступ ко всем форматам описанным в BFD и распозновать многие форматы без явного их указания. Смотри раздел BFD в 'Использование LD'.

objcopy может быть использован для создания S-записей используя вывод результата в 'srec' (используя '-O srec').

objcopy может быть использован для создания двоичных файлов используя вывод результата в 'binary' (используя '-O binary'). Когда objcopy создает двоичный файл, он на самом деле делает дамп памяти исходного объектного файла. Все символы и информация размещения могут быть удалены. Дамп памяти начиная с виртуального адреса первого раздела копируется в выходной файл.

Во время создания S-записи или двоичного файла, разделы содержащие отладочную информацию могут быть удалены с помощъю опции '-S'. Опция '-R' может быть полезна для удаления разделов содержащих информацию не нужную в двоичном файле.

INFILE

OUTFILE

Задают входной и выходной файлы, соответственно. Если Вы не указываете INFILE, objcopy создает временный файл и переименовывает результат в INFILE.

-I BFDNAME

--input-target=BFDNAME

Принять формат исходного объектного файла за формат BFDNAME. Подробнее см. раздел 12.1 [Выбор целевой ОС], стр. 37.

-O BFDNAME

--output-target=BFDNAME

Принять формат результирующего объектного файла за формат BFDNAME. Подробнее см. раздел 12.1 [Выбор целевой ОС], стр. 37.

-F BFDNAME

--target=BFDNAME

Использовать BFDNAME как формат входного и выходного объектных файлов; т.е. просто перереписывает INFILE в OUTFILE без трансляции. Подробнее см. раздел 12.1 [Выбор целевой ОС], стр. 37.

-R SECTIONNAME

--remove-section=SCTIONNAME

Удаляет любые разделы с названием SECTIONNAME из выходного файла. Опция может задаваться неоднократно. ВНИМАНИЕ неосторожное применение этой опции может привести к порче выходного файла.

-S

--strip-all

Не копировать информацию о распределении и символы из входного файла.

-g

--strip-debug

Не копировать отладочные символы из входного файла.

--strip-unneeded

Убрать все сивыолы ненужные для процесса загрузки.

-K SYMBOLNAME

--keep-symbol=SYMBOLNAME

Копировать из входного файла только символ SYMBOLNAME. Опция может задаваться неоднократно.

-N SYMBOLNAME

--strip-symbol=SYMBOLNAME

Не копировать из входного файла символ SYMBOLNAME. Опция может задаваться неоднократно, и может комбинироваться с любыми '--strip-' - опциями также как и '-K'.

-x

--discard-all

Не копировать не глобальные символы из входного файла.

-X

--discard-locals

Не копировать локальные символы, генерируемые компилятором (они обычно начинаются с 'L' имя '.' ).

-b BYTE

--byte=BYTE

Оставить только каждый BYTE-выи байт фходного файла (данные заголовка остаются без изменений). BYTE может быть в диапазоне от 0 до INTERLEAVE-1, где INTERLEAVE задается опцией -i или --interleave, и по умолчанию равен 4. Эта опция помогает создавать файлы для записи в ПЗУ. Обычно она используется с выводом в 'srec'.

-i INTERLEAVE

--interleave=INTERLEAVE

Копировать только каждый INTERLIV-ный байт. Выберите копируемый байт используя опцию '-b' или '--byte'.

--gap-fill=VAL

Заполняет промежутки в разделах значением VAL. Увеличивает размер раздела с нижних адресов и заполняет лишние пробелы значением VAL.

--pad-to=ADDRESS

Расширяет выходной фай до виртуального адреса ADDRESS. Это достигается увеличением размера последнего раздела. Заполняет промежутки в разделах значением указанным в опци '--gap-fill' (по умолчанию 0).

--set-start=VAL

Установить алрес нового файла в значение VAL. Не все форматы объектных файлов поддерживают установку начального адреса.

--adjust-start=INCR

Выронять стартовый адрес посредством добавления INCR. Не все форматы объектных файлов поддерживают установку начального адреса.

--adjust-vma=INCR

Выравнивание адресов всех разделов, как и стартового адреса, прибавлением INCR. Некоторые форматы объектных файлов не позволяют произвольно изменять адрес секции. Обратите внимание на то что расположение разделов остается без изменения; если программа ожидает згрузки раздела по определенному адресу, и эта опция использовалась изменения адреса загрузки раздела, то программа может работать неправильно.

--adjust-section-vma=SECTION{=,+,-}VAL

Установить или варовнять адрес раздела с названием SECTION. При использовании '=' адрес раздела устанавливается в VAL. Иначе VAL добавляется или вычитается из адреса раздела. См. выше комментарии к '--adjust-vma'. Если SECTION не существует во входном файле, будет выдано предупреждение, если не использована опция '--no-adjust-warnings'.

-adjust-warnings

Если использована опция '--adjust-section-vma', и раздел не существует, выдается предупреждение. Опция используется по умолчанию.

--no-adjust-warnings

Если использована опция '--adjust-section-vma', и раздел не существует, предупреждение не выдается.

--set-section-flags SECTION=FLAGS

Устанавливает флаги для указаного раздела. Аргумент FLAGS - является строкой имен флагов, разделенных точками. Возможны имены флагов: 'aloc', 'load', 'readonly', 'code', 'data' и 'rom'. не все флаги могут применяться для всех форматов объектного файла.

--add-section SECTIONNAME=FILENAME

Добавить новый раздел с именем SECTIONNAME. Солержимое нового раздела берется из файла FILENAME. Размер раздела будет равен размеру файла. Эта опция работет с форматами объектных файлов, поддерживающих управление именами.

-V

--version

Выводит номер версии objcopy.

-v

--verbose

Выводит имена всех измененных объектных файлов. В применении к архивам, 'objcopy -v' выводит имена всех членов архива.

--help

Выводит краткий список всех опций.

4. objdump

objdump [-a | --archive-headers] [-b BFDNAME | --target=BFDNAME] [-d | --disassemble] [-D | --disassemble-all] [-f | --file-headers] [-h | --section-headers | --headers] [-i | --info] [-j SECTION | --section=SECTION] [-l | --line-numbers] [-S | --source] [-m MACHINE | --architecture=MACHINE] [-r | --reloc] [-R | --dynamic-reloc] [-s | --full-contens] [--stabs] [-t | --syms] [-T | --dynamic-syms] [-x | --all-headers] [-w | --wide] [--tart-address=ADDRESS] [--stop-address=ADDRESS] [--version] [--help] OBJFILE ...

objdump показывает информацию об одом или нескольких объектных файлах. Эта опция управляет выдачей специфической информации. Эта опция весьма полезна как программистам работающим со средствами компиляции, так и программистам просто компилирующим и работающим со своими программами.

OBJFILE ... является именем исследуемого объектного файла. Если Вы указываете архив, objdump показывает информацию о каждом члене.

Длинные и короткие формы опций, приведенные в качестве альтернативных, эквивалентны. В конце каждой опции, кроме того, должно быть задано '-l'.

-a

--archive-header

Для любого OBJFILE являющегося архивом, показывает информацию из заголовка (в формате аналогичном 'ls -l'). Кроме того, с 'ar tv', 'objdump -a' показывает формат объектного файла каждого члена архива.

-b BFDNAME

--target=BFDNAME

Интерпретирует формат объектного кода в объектном фацле как BFDNAME. Опция не является обязательной, т.к. objdump может автоматически распознавать множесво форматов. Например:

objdump -b oasys -m vax -h fu.o

выдает краткую информацию по секции заголовка ('-h') для ''fu.o, которая явно определена ('-m') как VAX-овский объектный файл в формате представляемом компиляторами Oasys. Вы можете записать доступные форматы с опцией '-i'. Подробнее см. раздел 12.1 [Выбор целевой ОС], стр. 37.

-d

--disassemble

Показывает OBJFILE в ассемблерных мнемониках машинных инструкций. Эта опция дезассемблирует только секции, в которых предполагается наличие машинного кода.

-D

--disassemble-all

Аналогична опции '-d', но дезассемблирует содержимое всех секций, независимо от наличия в них машинного кода.

-f

--file-header

Показывает краткую информацию для всех заголовков файла OBJFILE.

-h

--section-headers

--headers

Показывает краткую информацию для секции заголовка объектного файла. Сегменты в файле могут быть размещены по нестандартным адресам, например как при использовании '-Ttext', '-Tdata' или '-Tbss' в опции 'ld'. Тем не менее, в форматы некоторых объектных файлов, таких как 'a.out', не содержат информацию о начальных адресах сегментов. В таких случаях, несмотря на корректное перемещение секций 'ld', использование 'objdump -h' приводит к выдаче неправильных адресов из секции заголовка. Вместо этого отображаются обычные адреса, которые неявно подразумеваются.

--help

Показывает краткий список опций objdump.

-i

--info

Показывает список с указанием доступных архитектур и форматов объектных файлов. Используется с '-b' или '-m'.

-j NAME

--section=NAME

Показывает информацию только для раздела с именем NAME.

-l

--line-numbers

Выводит информацию (используя отладочную информацию) с именем файла и номерами строк соответствующих показываемому объектному коду. Используется только с '-d' или '-D'.

-m MACHINE

--architecture=MACHINE

Показывает что объектный файл OBJFILE сделан для архитектура MACHINE. Вы можете получить список доступных архитектур используя опцию '-i'ю

-r

--reloc

Печатает таблицу связей файла. Если использована с '-d' или '-D' связи будут напечатаны вперемежку с дизассемблируемым кодом.

-R

--dynamic-reloc

Печатает таблицу динамических связей файла. Опция действительна только для динамических объектов, таких как некоторые типы разделяемых библиотек.

-s

--full-contens

Выводит полное содержимое любой запрошенной секции.

-S

--source

Выводит исходнай код вперемежку с дисассемблируемым (если возможно). Требует опцию '-d'.

--stabs

Выводит полное содержимое запрошенной секции. Выводит содержимое секций: .stab .index, .stab .excl из ELF файлов. Это доступно только на системах (типа SOLARIS 2.0) в которых отладочная информация помещена в ELF раздел. Во многих других форматах файлов отладочная информация перемешана с другими символами и может быть просмотрена с помощью '--sims'.

--start-address=ADDRESS

Начать вывод данных с указанного адреса, не применяется с опциями '-d', '-r'.

--stop-address=ADDRESS

Зкончить вывод данных с указанного адреса, не применяется с опциями '-d', '-r'.

-t

--syms

Напечатать таблицу символов для файла. Аналогично результату от программы nm.

-T

--dynamic-syms

Напечатать информацию о динамических символах файла. Опция действительна только для динамических объектов, таких как некоторые типы разделяемых библиотек. Аналогично программе nm с опцией '-D' (--dynamic).

--version

Печатает номер версии objdump и завершается.

-x

--all-header

Распечатывает всю доступную информацию из заголовка, включая таблицы символов и таблицы связей загрузки. Использование '-x' эквивалентно '-a -f -h -r -t'.

-w

--wide

Форматировать некоторые строки для вывода на устройство имеющее более 80 колонок.


Вперед Назад Содержание
Вперед Назад Содержание

4. ranlib

 ranlib [-vV] ARCHIVE
ranlib создает индекс к содержимому архива и сохраняет его в архиве. Индекс содержит каждый символ определенный членом архива как переносимый объектный файл.

Вы можете использовать 'nm -s' или 'nm --print-armap' для просмотра этого индекса.

Прграмма ranlib - это всего лишь другая форма программы ar; запуск ranlib полностью эквивалентен запуску 'ar -s'. См. гл. 1 стр 3.

-v

-V

Показать номер версии ranlib.


Вперед Назад Содержание
Вперед Назад Содержание

5. size

 size [-A | -B | --format=COMPATIBILITY]
      [--help] [-d | -o | -x | --radix=NUMBER]
      [--target=BFDNAME] [-V | --version]
      OBJFILE ...
Утилита GNU size показывает размер разделов и общий размер для каждого объектного файла или архива OBJFILE указаного в списке аргументов. По умолчанию одна выходная строка генерируется для каждого объектного файла или для каждого модуля в архиве.

OBJFILE ... объектные файлы для работы.

Опци командной строки включают

-A

-B

--format=COMPATIBILITY

Используя одну из этих опций Вы выбираете одну из форм вывода утилити size, включающую вывод для SYSTEM V ('-A' или '--format=sysv'), или BERKELEY ('-B' или '--format=berkeley'). По умолчанию принят однострочный формат принятый в BERKELEY.

Здесь показан вывод в формате BERKELEY:

   size --format=BERKELEY ranlib size
 
   text   data  bss   dec    hex   filename
   294880 81920 11592 388392 5ed28 ranlib
   294880 81920 11888 388688 5ee50 size
Здесь показаны теже самые данные в формате SYSTEM V:

   size --format=BERKELEY ranlib size
   ranlib  :
   section    size     addr
   .text    294880     8192
   .data     81920   303104
   .bss      11592   385024
   Total    388392
 
   size    :
   section    size     addr
   .text    294880     8192
   .data     81920   303104
   .bss      11888   385024
   Total    388688
--help

Показывает список доступных опций.

-d

-o

-x

--radix=NUMBER

Используя одну из этих опций Вы можете установить режим отображения размера раздела в системах счисления: десятичной ('-d' или '--radix=10'); восмеричной ('-o' или '--radix=8'); шестнадцатиричной ('-x' или '--radix=16'). В опции '--radix=NUMBER' только три значения (8, 10, 16) подерживаюся. Общий размер будет выдан в двух системах счисления; десятичной и шестнадцатиричной для -d' или '-x', восьмеричной и шестнадцатиричной - если Вы использовали '-o'.

--target=BFDNAME

Устанавливает формат объектного кода для OBJFILE в BFDNAME. Эта опция не обязятельна; size может сам автоматически распознавать большинство форматов. Подробнее см. раздел 11.1 стр 37.

-V

--version

Показать номер версии size.


Вперед Назад Содержание
Вперед Назад Содержание

6. strings

 strings [-afov] [-MIN-LEN] [-n MIN-LEN] [-t RADIX] [-]
         [--all] [--print-file-name] [--bytes=MIN-LEN]
         [--raix=RADIX] [--target=BFDNAME]
         [--help] [--version] FILE ...
Для каждого заданного файла утилита strings выводит последовательности печатных символов символов длиннее четырех (или числа, заданного с помощью опции) пропуская при этом все непечатные символы. По умолчанию, утилита выводит строки только из раздела инициализации и загрузки оъектных файлов; для других типов файлов утилита выводит строки из всего файла.

strings помогает просматривать содержимое нетекстовых файлов.

-a

--all

Сканировать не только раздел инициализации и загрузки объектного файла, а просмотреть файл полностью.

-f

--print-file-name

Печатать имя файла перед каждой строкой.

--help

Печатать информацию об использовании программы на стандартный вывод.

-MIN-LEN

-n MIN-LEN

--bytes=MIN-LEN

Печатать последовательности, которые содержат более чем MIN-LEN символов. По умолчанию принято 4.

-o

Так же как '-t o'. Некоторые другие верси strings трактуют '-o' как '-t d'. Т.к. Мы не смогли совместить обе трактовки, то оставили лишь одну из них.

-t RADIX

--raix=RADIX

Печатать смещение в файле перед каждой строкой. Односимвольный аргумент указывает систему счисления: '-o' - восьмеричная, '-d' - десятичная, '-x' - шестнадцатиричная.

--target=BFDNAME

Указывает формат объектного файла, отличного от принятого на Вашей системе по умолчанию. Подробнее см. раздел 12.1 стр 37.

-v

--version

Показать номер версии strings.


Вперед Назад Содержание
Вперед Назад Содержание

7. strip

 strip [-F BFDNAME | --target=BFDNAME]
       [-I BFDNAME | --input-target=BFDNAME]
       [-O BFDNAME | --output-target=BFDNAME]
       [-s | --strip-all] [-S | -g | --strip-debug]
       [-K SYMBOLNAME | --keep-symbol=SYMBOLNAME]
       [-N SYMBOLNAME | --strip-symbol=SYMBOLNAME]
       [-x | --discard-all] [-X | --discard-locals]
       [-R SECTIONNAME | --remove-section=SECTIONNAME]
       [-v | --verbose] [-V | --version] [--help]
       OBJFILE ...
GNU strip удаляет все символы в объектном файле OBJFILE. Список объектных файлов может включать содержать архивы. Обязятельно должен быть указан хотя бы один объектный файл.

strip изменяет заданные в аргументах файлы до записи модифицированных копий под другими именами.

-F BFDNAME

--target=BFDNAME

Трактует исходный OBJFILE как объектный файл в формате BFDNAME, и перезаписывает его в этом формате. Подробнее см. раздел 11.1 (выбор целевой ОС), стр. 37.

--help

Показывает краткий список опций для strip и завершается.

-I BFDNAME

--input-target=BFDNAME

Трактует исходный OBJFILE как объектный файл в формате BFDNAME. Подробнее см. раздел 12.1 (выбор целевой ОС), стр. 37.

-O BFDNAME

--output-target=BFDNAME

Меняет выходной OBJFILE на объектный файл в формате BFDNAME. Подробнее см. раздел 12.1 (выбор целевой ОС), стр. 37.

-R SECTIONNAME

--remove-section=SECTIONNAME

Удаляет любую секцию с именем SECTIONNAME в выходном файле. Эта опция может задаваться неоднократно. Неосторожное ее применение может попортить выходной файл.

-s

--strip-all

Удаляет все символы.

-S

-g

--strip-debug

Удаляет только отладочные символы.

--strip-unneeded

Удаляет все символы излишние для процесса загрузки.

-K SYMBOLNAME

--keep-symbol=SYMBOLNAME

Оставляет только символ SYMBOLNAME из входного файла. Эта опция может задаваться неоднократно.

-N SYMBOLNAME

--strip-symbol=SYMBOLNAME

Удаляет символ SYMBOLNAME из входного файла. Эта опция может задаваться неоднократно, и совмещаться с другими опциями кроме '-K'.

-x

--discard-all

Удаляет неглобальные символы.

-X

--discard-locals

Удаляет локальные символы, порожденные компилятором.

-V

--version

Показать номер версии strip.

-v

--verbose

Усиление вербализации отладочной информации.


Вперед Назад Содержание
Вперед Назад Содержание

8. c++filt

 c++filt [-_ | --strip-underscores]
         [-n | --no-strip-underscores]
         [-s FORMAT | --format=FORMAT]
         [--help] [--version] [SYMBOL ...]
Т.к. C++ позволяет перегружать функции, то появляется много одноименных функций (различающихся только типами своих параметров). Все имена C++ функций кодируются в низкоуровневый формат (процесс известный как MangLing). Программа C++filt делает обратное преобразование: она декодирует (DeMangles) низкоуровневые имена в пользовательские имена.

Каждое слово (содержащее буквы, цифры, подчеркивания, доллар, точку) рассматриваются на входе как потенциальная метка. Если метка может быть декодирована в имя C++, то это имя заменяет низкоуровневое имя при выводе.

Вы можете использовать c++filt для перекодировки отдельного символа.

 c++filt SYMBOL
Если аргумент SYMBOL не задан, C++filt читает символ из стандартного ввода и пишет перекодированное имя в стандартный вывод.
-_

--strip-underscores

На некоторых системах компиляторы C и C++ ставят символ '_' в начале каждого имени. Например C-имя 'foo' получит низкоуровневое имя '_foo'. Эта опция удаляет начальные подчеркивания. c++filt удаляет подчеркивания по умолчанию в зависимости от формата объектного файла.

-n

--no-strip-underscores

Не удалять начальные подчеркивания.

-s FORMAT

--format=FORMAT

c++filt понимает три различных метода кодирования, используемых различными C++ компиляторами. Этот аргумент выбирает какой метод должен использоваться:

GNU метод используемый GNU-компилятором (принято по умолчанию). LUCID метод используемый LUCID-компилятором. ARM используется спецификация C++ Annotated Refrence Manual.

--help

Показывает краткий список опций для c++filt и завершается.

--version

Показать номер версии c++filt.

                               ПРЕДУПРЕЖДЕНИЕ
 
      c++filt - новая утилита. Детали ее пользовательского
 интерфейса могут быть изменены в следующих реализациях. В
 частности, опции командной строки, которые могут понадобиться в
 будущем для перекодировки имени помещенного в этой же строке
 например:
 
   c++filt SYMBOL
                             в будущем может превратиться в
   c++filt OPTION SYMBOL


Вперед Назад Содержание
Вперед Назад Содержание

9. nlmconv

nlmconv конвертирует перемещаемый объектный файл в формат Netware Loadable Module (NLM).

                                ПРЕДУПРЕЖДЕНИЕ
      nlmconv используется только для Netware в качестве
 операционной целевой системы.
 nlmconv[-I BFDNAME | --input-target=BFDNAME]
         [-O BFDNAME | --output-target=BFDNAME]
         [-T HEADERFILE | --header-file=HEADERFILE]
         [-d | --debug] [-l LINKER | --linker=LINKER]
         [-h | --help] [-V | --version]
         INFILE OUTFILE
nlmconv конвертирует перемещаемый i386-объектный файл INFILE в NLM OUTFILE, читая информацию заголовка NLM из HEADERFILE если запрошено. Для инструкций по написанию NLM команд используемых в файле заголовка - см. раздел 'Linkers', 'NLMLink' в части 'NLM Development And Tools Overview', входящую в 'NLM Softwer Developers Kit' ('NLM SDK'), поставляемые NOVELL Inc. nlmconv использует Binary File Descriptor библиотеку для чтения INFILE; подробнее см. раздел 'BFD в использование LD'.

nlmconv производит шаг линковки. Другими словами, Вы можете указать более одного файла для ввода, если Вы укажете их в файле описания (лучше чем указать один входной файл в командной строке). В этом случае nlmconv автоматически вызовет для Вас компоновщик (линкер).

-I BFDNAME

--input-target=BFDNAME

Формат входного объектного файла. nlmconv обычно может определить формат заданного файла. Подробнее см. раздел 12.1 (выбор целевой ОС), стр. 37.

-O BFDNAME

--output-target=BFDNAME

Формат выходного объектного файла. nlmconv выводит формат выходного объектного файла, основываясь на формате входного, так для i386-входного файла выходной формат будет NLM32-i386. Подробнее см. раздел 12.1 (выбор целевой ОС), стр. 37.

-T HEADERFILE

--header-file=HEADERFILE

Читает HEADERFILE для получения информации об NLM. Для инструкций по написанию NLM команд используемых в файле заголовка

- см. раздел 'Linkers' в части 'NLM Development And Tools

Overview', входящую в 'NLM Softwer Developers Kit' ('NLM SDK'), поставляемые NOVELL Inc.

-d

--debug

Распечатывает на устройство stderror команды линкера, используемые nlmconv.

-l LINKER

--linker=LINKER

Использовать LINKER для любой компоновки. Парамер LINKER может быть абсолютным либо относительным путем.

-h

--help

Показывает краткий список опций для nlmconv и завершается.

-V

--version

Показать номер версии nlmconv.


Вперед Назад Содержание
Назад Содержание

10. Выбор целевой операционной системы

Вы можете указать три аспекта целевой системы утилитам GNU, каждый несколькими путями.

Далее изложен краткий список способов для указания значений в порядке уменьшения значимости.

10.1 Выбор целевой ОС

TARGET - формат объектного файла. Заданый формат может поддерживатся многими ОС(см. раздел 11.2). Выбор цели может также отличатся в различных ОС или архитектурах.

Команда для просмотра валидных форматов - 'objdump -i' (первая колонка вывода содержит нужную информацию).

Некоторые примерные значения: 'a.out-hp300bsd','ecoff-littlemips', 'a.out-sunos-big'.

Указание цели для objdump.

Пути указания:

  1. опция коммандной строки: '-b','--target'
  2. переменная окружения GNUTARGET
  3. вычисляется из входного файла
Указание цели для входного файла objcopy и strip.

Пути указания:

  1. опция коммандной строки: '-I','--input-target','-F','--target'
  2. переменная окружения GNUTARGET
  3. вычисляется из входного файла
Указание цели для выходного файла objcopy и strip.

Пути указания:

  1. опция коммандной строки: '-O','--output-target','-F','--target'
  2. по формату входного файла
  3. переменная окружения GNUTARGET
  4. вычисляется из входного файла
Указание цели для nm,size и strings.

Пути указания:

  1. опция коммандной строки: '--target'
  2. переменная окружения GNUTARGET
  3. вычисляется из входного файла
Указание цели входного файла для компоновщика.

Пути указания:

  1. опция коммандной строки: '-b','--formattarget'
  2. команда TARGET из script файла
  3. переменная окружения GNUTARGET
  4. значение по умолчанию для выбранной эмуляции компоновщика
Указание цели выходного файла для компоновщика.

Пути указания:

  1. опция коммандной строки: '--oformat'
  2. команда OUTPUT_FORMAT из script файла
  3. по входному файлу

10.2 Выбор архитектуры

Под архитектурой понимается тип процессора, на котором будет выполнятся объекний файл. Имя процессора может состоять из имени семейства процессоров и имени процессора.

Команда для получения списка доступных архитектур 'objdump -i' (вторая колонка содержит необходимую информацию).

Примеры:

 'm68k:68020','mips:3000','sparc'.

Выбор архитектуры для OBJDUMP

Пути указания

  1. опция командной строки: '-m','--architecture'
  2. вычисляется из входного файлы

Выбор архитектуры для OBJCOPY, NM, SIZE, STRINGS

Пути указания

  1. вычисляется из входного файлы

Выбор архитектуры для входного файла LINKER

Пути указания

  1. вычисляется из входного файлы

Выбор архитектуры для выходного файла LINKER

Пути указания

  1. команда OUTPUT_ARCH из script файла
  2. архитектура по умолчанию для выходного файла компоновщика (см. раздел 11.1 гл. Выбор целевой системы...)

10.3 Эмуляция компоновщика

Эмуляция компоновщика - есть прерогатива только компоновщика, который принимает стандартные патаметры компоновщика в аспекте иной целевой ОС. В частности:

  1. описание компоновщика
  2. цель
  3. некоторые 'перехватываемые' функции
Список возможных эмулируемых систем выдается по '-ld V'.

Примеры систем:

 'hp300bsd', 'mipslit', 'sun4'.
Пути указания
  1. опции командной строки: '-m' (см. раздел 'Опции', гл. 'Использование ld')
  2. переменная окружения LDEMULATION
  3. компилирование в DEFAULT-EMULATION для 'Makefile', содержащем EMUL в файле 'config/target.mt'


Вперед Назад Содержание