Разберите вывод компилятора Microsoft Visual Studio 2003
Я вижу странное поведение выводимых объектными файлами инструментов Microsoft Visual Studio 2003.file
утилита говорит мне:
asmfile.obj: 80386 COFF executable not stripped - version 30821
Для объектов, созданных ассемблером, но для объектов из файлов C, я получаю просто:
cfile.obj: data
Используя Microsoftdumpbin
утилита иobjdump
Я получил от cygwin, я могу разобрать файл, собранный из сборки, но я не получаю никаких полезных результатов ни от одной утилиты для файлов, собранных на C.
У меня есть пара вопросов, связанных с этой разницей:
Какой формат объектного файла генерируется компилятором MSVC2003?Как я могу разобрать этот объектный файл?Я особенно заинтересован в получении разборки в синтаксисе AT & T - я делаю порт с большой исходной базой, чтобы он работал с GCC, и я хотел бы использовать этот метод в качестве ярлыка для некоторых встроенных процедур сборки в проект.
Изменить: добавив еще немного информации.
Когда я бегуdumpbin
на одном из этих файлов не дает мне никаких результатов:
C:\> dumpbin /disasm Func.obj
Microsoft (R) COFF/PE Dumper Version 7.10.6030
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file Func.obj
FileType: ANONYMOUS OBJECT
Сobjdump
, это дает:
$ objdump -d Func.obj
objdump: Func.obj: File truncated
На файлах, собранных из сборки, я получаю разумные результаты.
Редактировать снова: добавление информации о командной строке.
Файлы сборки создаются с помощью командной строки, похожей на следующую:
ml -nologo -W3 -WX -c -coff -FoAssemblyFile.obj -Zi -Cx AssemblyFile.asm
ml
когда выполнено само по себе говорит:
Microsoft (R) Macro Assembler Version 6.15.8803
Copyright (C) Microsoft Corp 1981-2000. All rights reserved.
Файлы C создаются с помощью следующей команды:
cl -nologo -W4 -WX -Gs32768 -GX -Gy -c -FdCFile.pdb -FoCFile.obj -Zi
-Gm -O1 -Oy- -Gy -GL -X CFile.c
Есть некоторые-I
а также-D
варианты переданыml
и кcl
, но я здесь опущен для краткости.cl
варианты описаныВот.