December 1st, 2005

oryx_and_crake: (Default)
Thursday, December 1st, 2005 11:05 pm
Задача - сравнить два .ехе-файла, скомпилированные с одного проекта с одинаковыми настройками (все вообще одинаковое), но с некоторым промежутком времени, и, возможно, на разных машинах. Гадость заключается в том, что .exe-файлы при этом получаются чуточку разные. Подлая Вижуал Студия 2003 суёт туда timestamps где ни попадя и еще в одном месте прибавляет единичку с каждой последующей компиляцией проекта. Т.е. файлы получаются формально разными, хотя на самом деле они эквивалентны. Таймстемпы я кой-как победю, а вот с этим автоматическим прибавлением единицы я никак справиться не могу. По совету MSDN поставила статический номер версии в свойствах проекта - не помогает. Спасите. Буду немеряно благодарна. Хотя бы скажите, что это за переменная и как ее достать из формата PE/COFF.

P.S. В Гугль не посылать, windiff, bindiff, comp и dumpbin /rawdata с последующим fc /b не предлагать - пробовали, хуже.
P.P.S. Философский вопрос "на кой черт это надо, если файл изменился, то он и так изменился" прошу оставить за кадром. Это надо для дела.

(кросспост всюду, куда только можно)

UPDATE кому интересно: эта автоматически прибавляемая единица относится к переменной под названием Age, которая является составной частью Debug Directory в формате Codeview RSDS. Она имеет приблизительно следующую структуру:

CodeView format: RSDS

Signature: {d0b024a8-5829-424e-b997-66cc1626a1c2} Age: 1

PdbFile: d:\depot\bas\640_rel\fes_640_REL\src\opt\NTintel\GridView.pdb

впрочем, это уже не имеет никакого значения.
oryx_and_crake: (Default)
Thursday, December 1st, 2005 11:05 pm
Задача - сравнить два .ехе-файла, скомпилированные с одного проекта с одинаковыми настройками (все вообще одинаковое), но с некоторым промежутком времени, и, возможно, на разных машинах. Гадость заключается в том, что .exe-файлы при этом получаются чуточку разные. Подлая Вижуал Студия 2003 суёт туда timestamps где ни попадя и еще в одном месте прибавляет единичку с каждой последующей компиляцией проекта. Т.е. файлы получаются формально разными, хотя на самом деле они эквивалентны. Таймстемпы я кой-как победю, а вот с этим автоматическим прибавлением единицы я никак справиться не могу. По совету MSDN поставила статический номер версии в свойствах проекта - не помогает. Спасите. Буду немеряно благодарна. Хотя бы скажите, что это за переменная и как ее достать из формата PE/COFF.

P.S. В Гугль не посылать, windiff, bindiff, comp и dumpbin /rawdata с последующим fc /b не предлагать - пробовали, хуже.
P.P.S. Философский вопрос "на кой черт это надо, если файл изменился, то он и так изменился" прошу оставить за кадром. Это надо для дела.

(кросспост всюду, куда только можно)

UPDATE кому интересно: эта автоматически прибавляемая единица относится к переменной под названием Age, которая является составной частью Debug Directory в формате Codeview RSDS. Она имеет приблизительно следующую структуру:

CodeView format: RSDS

Signature: {d0b024a8-5829-424e-b997-66cc1626a1c2} Age: 1

PdbFile: d:\depot\bas\640_rel\fes_640_REL\src\opt\NTintel\GridView.pdb

впрочем, это уже не имеет никакого значения.