Claudio Brotto

Se il compilatore è umorale ...

Leggevo stamattina questo post di Jim Griesmer.

Che mi ha colpito parecchio nella sua conclusione, al di là del contesto che ha scatenato il problema.

Surely if I build a component twice, consecutively, with no changes to source in-between, I certainly will end up with two identical copies of that component, right?

Senza barare e andare a leggere il resto del post, onestamente avrei detto di sì.

Cioè, a parità di *ogni* aspetto "ambientale" (stesse identiche impostazioni di compilazione, ottimizzazioni comprese, stesso identico codice sorgente, ecc...), mi sarei aspettato che per definizione l'output generato da *ogni* compilatore/linker/meccanismo_di_build fosse esattamente identico.

Detta in altri termini ancora, mi sarei aspettato che il comportamento di ogni "builder" fosse assolutamente deterministico.

Sembra di no :-O

In practice, you are not likely to see a difference in compiler/linker output from build to build.  So in theory, it is possible to make use of mismatched symbols.  However, compiler/linker determinism is not guaranteed, our debugger cannot depend on it.

Sto girando un po' per il web alla caccia di info a riguardo ... alla fine sono un po' curioso di sapere quali sono i parametri maggiormente candidati a causare modifiche all'output. E quali ambienti invece garantiscono quel determinismo che, sulla carta, non avrei mai messo in discussione :-(

Posted: Jul 07 2007, 02:23 PM by devlizard | with no comments
Filed under: