Solved

How do you verify a build in C++ Builder 4

Posted on 2000-03-07
8
173 Views
Last Modified: 2010-04-02
Hi, I recently did some development in Borland C++ 4.0.  I need to be able to duplicate a build of my software; in order to do that I create two executables and then run the dos command "fc /b" on both files.  There are differences even when I build two executables from the exact same code.  The address ranges for the differences are:

208-209,
438-5FF,
F604-F7C3,
100B0-11E54

Can you point me to where I could find out what is in those ranges so that I can explain away the differences in the executable files.  Any information would be appreciated.  Thanks,

dan
0
Comment
Question by:danharms
8 Comments
 
LVL 22

Expert Comment

by:nietod
ID: 2592778
>> Can you point me to where I could find out what is in those ranges
The first 1 or 2 might be in the EXE header so it might be possible for those, but the others are in the program code itself so that is not possible--without the code.

Did you do a complete rebuild (I think BCB calls it build all) where it rebuild all files from scratch rather than doing incrimental compilation and incrimental linking.  Incrimental compilation/linking could account for differences.
0
 

Author Comment

by:danharms
ID: 2592799
Yes I did do a complete rebuild.  What is the strangest to me is that I can do a build, wait a couple minutes and do another build and I will get differences in the same ranges.  I can't find any reference info. to find out what Builder puts at different addresses.
thanks
0
 
LVL 22

Expert Comment

by:nietod
ID: 2592846
the compilation date and time may be embedded in the header or other places and would account for some differences.

>> I can't find any reference info. to find out
>> what Builder puts at different addresses
Of course not.  It depends on the code.  Each EXE begins with a standard header, I can get you a format for that, but after that it varies depending the code you are compiling.  (Actually the header itself will vary from program to program, buit it has a well-defined format.)
0
 

Author Comment

by:danharms
ID: 2592913
Since it is completely dependant on the code I'm compiling.  Why does the structure of the EXE change when I compile the same code two different times?  
0
Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 

Author Comment

by:danharms
ID: 2592945
Since it is completely dependant on the code I'm compiling.  Why does the structure of the EXE change when I compile the same code two different times?  
0
 
LVL 22

Expert Comment

by:nietod
ID: 2592999
The only thing I can think of is embedded times+dates and possibly incremental compilation/linking.  Without incremental compilation/linking I would expect the program to be always identical, except maybe for a few bytes in the header that might have data/time info.

I'm not sure why there might be other differences.

Well, one thing is that the program consists of different segments, like a code segment and an data segment.  When loaded into memory these segments must start at page boundaries and must be integer multiples of page lengths in size.  It is possible that the compler/linker may pad these segments so that they start at page bondaries or have lengths that are integer multiples of page lengths when in the EXE.  If so, the padding is likely to be "garbage" adn vary from time to time.  Purely a guess.

If you are interested in the EXE format look at

http://www.wotsit.org/search.asp?section=binary

There are several entries for windows EXE formats.  Look for the ones for the NT or PE (portable executable) formats.
0
 
LVL 9

Expert Comment

by:ShaunWilde
ID: 2613473
You don't happen to have any auto version build macros running do you. I always forget to turn mine off when I am recompliing old code to trace a bug
0
 
LVL 14

Accepted Solution

by:
AlexVirochovsky earned 75 total points
ID: 2650537
I tested it for BC 3/4/5. Sometimes i get other size of exe file for same obj files! But module works same. Result:
Only Borland knows true reason of this,
but it is not important. That is, that important: you module works absolutele
same :not depending from size and structure of exe file!
Alex
0

Featured Post

Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Templates For Beginners Or How To Encourage The Compiler To Work For You Introduction This tutorial is targeted at the reader who is, perhaps, familiar with the basics of C++ but would prefer a little slower introduction to the more ad…
Written by John Humphreys C++ Threading and the POSIX Library This article will cover the basic information that you need to know in order to make use of the POSIX threading library available for C and C++ on UNIX and most Linux systems.   [s…
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now