J'ai un programme que j'ai écrit qui utilise LLVM 3.5 comme un compilateur JIT, que j'essaye de mettre à jour pour utiliser MCJIT dans LLVM 3.7. Je l'ai surtout travaillé, mais j'ai du mal à reproduire une fonctionnalité de débogage que j'ai implémentée avec LLVM 3.5. Je voudrais pouvoir voir le code machine hôte (par exemple x86, x64 ou ARM, pas LLVM IR) généré par le processus JIT; Dans les versions de débogage, je me déconnecte lorsque mon programme est en cours d'exécution. Avec LLVM 3.5 j'ai pu faire cela en appelant ExecutionEngine :: runJITOnFunction() pour remplir un objet llvm :: MachineCodeInfo, qui m'a donné l'adresse de début et la taille du code généré. Je pourrais alors démonter ce code.Comment puis-je désassembler le résultat de la compilation LLVM MCJIT?
Je n'arrive pas à trouver d'équivalent dans MCJIT. Je peux obtenir l'adresse de début de la fonction (par exemple via getPointerToFunction()) mais pas la taille.
J'ai vu Disassemble Memory mais en dehors de ne pas avoir autant de détails dans les réponses, il semble que ce soit plus sur la façon de désassembler une séquence d'octets. Je sais comment faire, ma question est: comment puis-je obtenir la séquence d'octets en premier lieu? Si cela peut aider à rendre ceci plus concret, veuillez réinterpréter cette question comme: "Comment puis-je étendre l'exemple Kaleidoscope JIT pour montrer le code machine (x86, ARM, etc.) qu'il produit, pas seulement le LLVM IR? "
Merci.