re-compiling


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users re-compiling
# 1  
Old 03-09-2006
re-compiling

I have a problem.

How can I be sure that the binary currently in production is the binary originally produced by the compiler? I ask because recompiling the sources (ALL sources + stripping away the metadata: strip ...) does not give the same result.

I am pretty sure that I wasn't hacked!

Your comments to how this can happen and how to ensure a reproducible binary are highly appreciated.

Thanks

Frank
# 2  
Old 03-09-2006
Some compilers timestamp their output. Ditto some linkers. Immediately after you get an executable file from your compiler, use cksum to get a crc. Record the crc and file length of the executable. Then you can compare the file's current crc and length to what you recorded.
# 3  
Old 03-09-2006
Yes compilers do that, but you get rid of the metadata by using strip.
# 4  
Old 03-09-2006
Quote:
Originally Posted by aViking
Yes compilers do that, but you get rid of the metadata by using strip.
I have never heard of elf descriptors being called "metadata", but if you think that stuff goes away, how would a kernel know, as one example, where the text segment ends and the data segment begins? And what does this have to do with the price of beans in China on Tuesday? When I look at my strip man page, I see "strip removes the symbol table and line number information from object files". I don't see anything there about removing timestamps. Nothing about removing "metadata" either. Did I miss something?
# 5  
Old 03-09-2006
As Perderabo says - ld can add information to an output executable file. For starters, try ident or what on the executable.

nm will list symbols in the executable file - if it has not been stripped. By the way, strip is not the default behavior for cc myfile.c -o myfile --

cc -s -o myfile myfile.c does strip the image file, as does strip <filename>
# 6  
Old 03-21-2006
Streaming

Could it be that the compiler and/or linker uses streaming and so produces a different order of objects in the executable, which of course would then mean that the same source code could potentially produce different executables.

Regardless of the wording of "unnecessary" information, would there be other good reasons why sources a, b, c, d does not always produce the byte by byte same executable?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Linux

kernel compiling

Hello, I have several questions to get awnsered about the newer linux kernels (2.6.25) and above. 1st question: Ive read that the newer kernels you can compile the marvell sd8686 driver from the source. can anyone confrim this? only binaries i see for that driver are for 2.6.24 and im already... (0 Replies)
Discussion started by: old noob
0 Replies

2. HP-UX

Problem in HP-UX compiling

Hi When im trying to do make --version and make --help in HP-UX it throws error Make: Unknown flag argument -. Stop. a soft link is present in this directory /usr/bin/make and hard link is in /usr/ccs/bin/make what could be the reason can any1 ..please tell me how to solve this... (1 Reply)
Discussion started by: vasanthan
1 Replies

3. Programming

Compiling with Dll in HP Ux

Hi all, I had trouble compiling my application with a custom dll, the error appear to be some undefined reference to the functions i had created in my dll. Is there a need to update any environmental variable such as LD_LIBRARY_PATH as in linux system. Please advise. One more thing is do... (2 Replies)
Discussion started by: dwgi32
2 Replies

4. Solaris

Compiling programs

Hi guys i have posted a thread months ago and a guy called dukenuke or smething like that told me that i have to install Sun Studio if i want to be able to compile programs. I have installed Sun Studio 12 and put it in my PATH but no success compiling anything. when i download some source (tar.gz)... (2 Replies)
Discussion started by: saveka
2 Replies

5. HP-UX

compiling the RRDtool

I tried to compile the RRDtool on HP-UX (IA56). I have gcc-3.4.3 and perl 5.8.0 I got this: Writing Makefile for RRDs cd perl-shared && make /opt/perl/bin/perl /opt/perl/lib/5.8.0/ExtUtils/xsubpp -typemap /opt/perl/lib/5.8.0/ExtUtils/typemap RRDs.xs > RRDs.xsc && mv... (2 Replies)
Discussion started by: Kalin
2 Replies

6. AIX

compiling with aix 5.1

Hello, i will compile php and apache on an aix 5.1. Configure works fine. When i start the make the following error appears: /usr/include/sys/context.h:155: parse error before "sigset64_t" /usr/include/sys/context.h:158: parse error before '}' token make: 1254-004 The error code from the... (1 Reply)
Discussion started by: n-may
1 Replies

7. Programming

compiling

I am new to unix so please forgive ignorance. I am running openbsd-2.9 and need some help. All the software I run was added via the package system openbsd has. There have been times when I need an app. But it was not in the openbsd ports and or packages system. I usually just wait for it to show up... (1 Reply)
Discussion started by: Blunt_Killer
1 Replies

8. UNIX for Dummies Questions & Answers

compiling qt

i am trying to compile and install free qt for x11 2.2.4 in order to use kde 2.1. i'm using freebsd 4.3 i currently have XFree86 installed and working. i followed these instructions: ftp://ftp.trolltech.com/qt/source/INSTALL i get through the unpacking fine and i set my .profile. --... (2 Replies)
Discussion started by: nydel
2 Replies

9. UNIX for Dummies Questions & Answers

compiling

would anyone know of a good online tutorial on compiling and installing tarballs? i'm looking for one that assumes that you know very little to nothing about unix. (3 Replies)
Discussion started by: nydel
3 Replies

10. Programming

C compiling

I recently loaded SuSE on my intel comp. I am presently taking a walk down memory lane from my days at UofT. I was fiddling round with cc and the gcc compilers. I wrote a basic basic basic program . I tried to compile it as I remember doing in Uni. The problem is that it can't find the header... (5 Replies)
Discussion started by: cantcatchme
5 Replies
Login or Register to Ask a Question