Question

Aux fins de vérification de code binaire / source, je voudrais pouvoir faire deux compiles sur le même ordinateur 2 semaines d'intervalle et ont les binaires soient identiques et donc passer un certain test de contrôle.

Jusqu'à présent, j'ai trouvé que très probablement l'horodatage sera écrit par le compilateur dans le binaire. Je peux travailler autour de cela en faisant la comparer sur les résultats dumpbin / RAWDATA par cet article msdn.

http://support.microsoft.com/kb/164151

Cependant, les résultats diffèrent de dumpbin encore en une douzaine de lieux et la différence semble être encore une sorte d'horodatage (passant de A1 à 73 C4 76) par exemple.

Je suppose que c'est l'horodatage que le compilateur delphi met dans les sections de code / données, mais je ne peux pas trouver où cela se passe ou comment désactiver. Tripoter les différentes options du compilateur / éditeur de liens n'a pas changé ce comportement.

Toute aide serait grandement appréciée.

Était-ce utile?

La solution

Nous avons étudié cette question il y a quelques années, et je me souviens bien, la réponse est tout simplement que les gens de Borland / CodeGear / Embarcadero ne souscrivent pas à l'idée que le compilateur doit produire exactement la même sortie donné exactement la même entrée ( étant donné que la date-heure est pas acceptable de considérer comme entrée).

Ceci est décevant, mais étant donné que Delphi est upmteen grandes anciennes versions, il ne sera probablement pas changer.

Autres conseils

D'après votre commentaire dans la question, je pense que vous êtes à la recherche de la réponse à cette question:

  

Comment puis-je vérifier qu'un certain binaire est créé par un certain ensemble de fichiers source

Une façon est d'avoir un processus automatisé qui construit:

  1. insère une balise de verififcation unique dans le code source (peut être aussi simple que d'une chaîne de GUID ou quelque chose d'autre dans un fichier include)
  2. Compile les binaires à l'aide de cette balise de vérification
  3. Packs le code source et binaire résultant dans une arborescence de répertoires de livraison

Vous devez vous assurer que votre code source utilise en fait cette balise de vérification (par exemple en montrant dans une boîte au sujet, ou quelque chose de similaire).

J'utilise FinalBuilder pour automatiser les processus de construction comme celui-ci.

- jeroen

Malheureusement, je ne l'ai pas entendu parler d'une réponse à ce problème.

Il ne suffit pas, mais il y a des horodatages endroits où quelques octets de déchets au hasard sur la mémoire se termine dans le résultat.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top