On 2016-07-05T15:31:57-0300, Marc Collin wrote: > I did some tests with 8cc (because it's easier to build than scc for me). > My results are that the binaries aren't identical. > Here's a script so you can try to reproduce it. > > #!/bin/sh > mkdir test_comp > cd test_comp > git clone https://github.com/rui314/8cc > mv 8cc 1c > cp -r 1c 2c > cp -r 1c Ac > cp -r 1c Bc > > # compile 8cc with gcc > cd 1c > make cc=gcc > > # compile 8cc with clang > cd ../2c > make cc=clang
I don't think this does what you expect it to do. At least looking at the 8cc makefile, the compiler is hardcoded as `cc', not the expansion of the variable `cc'. Try make cc=/bin/false or such. > # compile 8cc with 8cc > # using the binary that > # was compiled with gcc > cd ../Ac > make cc=../1c/8cc > > # compile 8cc with 8cc > # using the binary that > # was compiled with clang > cd ../Bc > make cc=../2c/8cc > > cd .. > > # compare binaries > md5sum Ac/8cc Bc/8cc > On my system, the resulting binaries include references to the path they were compiled at. $ ls */8cc 8cc/8cc other_8cc/8cc $ strings 8cc/8cc | grep home /home/sgilles/temp/a/8cc/include #include </home/sgilles/temp/a/8cc/include/8cc.h> /home/sgilles/temp/a/8cc $ strings other_8cc/8cc | grep home /home/sgilles/temp/a/other_8cc/include #include </home/sgilles/temp/a/other_8cc/include/8cc.h> /home/sgilles/temp/a/other_8cc I suspect this is what actually causes the differences in md5sums. -- S. Gilles