none
Binary comparison of files in RELDIRs RRS feed

  • Question

  • Hello everyone

    We are experiencing a weird situation in WinCE600 source tree. There were some components in <PUBLIC> for historical reasons. And we had to run "Build and Sysgen" each time to have everything build. As you might know this is not complaint with MS rule "don't put/modify <PUBLIC> code" .

    Therefore we refactored those components under <3rdParty>.

    I have to emphasize that while we refactoring we had to change build orders  , add custom build steps , modify sources file - changing paths for directories , Release type field -. But we never changed source code.

    Now we can run SYSGEN successfuly but when two RELDIRs are compared (reldir of Build&Sysgen'ed and reldir of sysgen -after refactored-)  we observe differences in several binari files (dll/exe). But contents of ce.bib and number of files are equal.

    We know that compiler embeds timestamp in binary but there are alos differences in .text & .data sections.

    Has anyone experienced such a binary reproducibilty issue from same code before ?

    Regards


    Tugrul Guclu Embedded Systems Expert PMP , MCTS tugrul.guclu at gmail

    Wednesday, January 2, 2013 2:39 PM

Answers

  • There is a self explaining post from MS here. http://support.microsoft.com/kb/164151

    NOTE: There is no guarantee that Visual C++ will generate the same binary image when building the same source files on successive builds. However, you are guaranteed that the EXE (or DLL) will behave in precisely the same manner under execution, all other things being equal. Compile and link options and link order play a role in whether two binary images will compare equally.


    Tugrul Guclu Embedded Systems Expert PMP , MCTS tugrul.guclu at gmail

    • Marked as answer by tguclu Wednesday, January 9, 2013 12:13 PM
    Wednesday, January 9, 2013 12:12 PM

All replies

  • Hi tguclu,

    As per my understanding,

    In build procedure never go for "Build and Sysgen" and "Rebuild and Clean Sysgen".

    Because these two commands will include private and public folders in compilation.

    Which will corrupt your wince installation.

    You can use other four build options as required.

    So even though you are able to build successfully no guarantee that image will be proper.

    Its better if you reinstall wince and try with "Sysgen" or "Clean Sysgen".

    With Regards

    nadini

    Thursday, January 3, 2013 9:34 AM
  • Hi tguclu,

    As per my understanding,

    In build procedure never go for "Build and Sysgen" and "Rebuild and Clean Sysgen".

    Because these two commands will include private and public folders in compilation.

    Which will corrupt your wince installation.

    You can use other four build options as required.

    So even though you are able to build successfully no guarantee that image will be proper.

    Its better if you reinstall wince and try with "Sysgen" or "Clean Sysgen".

    With Regards

    nadini

    Hi nadini

    Thanks for your answer but actually my question was completely different. I agree that we should never execute Build and Sysgen unless we modify PUBLIC code from MS which is my case.

    Thanks


    Tugrul Guclu Embedded Systems Expert PMP , MCTS tugrul.guclu at gmail

    Thursday, January 3, 2013 11:17 AM
  • There is a self explaining post from MS here. http://support.microsoft.com/kb/164151

    NOTE: There is no guarantee that Visual C++ will generate the same binary image when building the same source files on successive builds. However, you are guaranteed that the EXE (or DLL) will behave in precisely the same manner under execution, all other things being equal. Compile and link options and link order play a role in whether two binary images will compare equally.


    Tugrul Guclu Embedded Systems Expert PMP , MCTS tugrul.guclu at gmail

    • Marked as answer by tguclu Wednesday, January 9, 2013 12:13 PM
    Wednesday, January 9, 2013 12:12 PM