Vous avez un avertissement deprecated-declarations car RTN_BblHead
est maintenant obsolète. Utilisez RTN_InsHead
à la place.
De include\pin\gen\image.ph
:
/* DO NOT EDIT */
/* RTN_BblHead is now deprecated. See RTN_InsHead.
*/
extern PIN_DEPRECATED_API BBL RTN_BblHead(RTN x);
C'est également mentionné dans la documentation: RTN_BblHead
Vous pouvez également passer -Wno-deprecated-declarations
à GCC pour supprimer cet avertissement.
Modifier
Rappelez-vous que PIN est avant tout un cadre DBI (instrumentation binaire dynamique): il est extrêmement bon quand il vient à l'instrument le flux de code exécuté, et moins bon quand il a besoin de briser non code exécuté.
instrumentation de routine permet à l'Pintool inspecter et instrument une routine entière lorsque l'image est contenue dans est d'abord chargé » mais comme les points de documentation:
A Pintool can walk the instructions of a routine. There is not enough information available to break the instructions into BBLs.
Pin trouvent les instructions d'un RTN par la découverte statique, donc Pin ne peut pas garantir qu'il trouvera toutes les instructions dans le RTN et ceci est encore plus difficile pour les BBL. Je suppose qu'ils ont essayé à un certain moment (d'où la disponibilité de RTN_BblHead dans le passé) pour fournir une découverte statique des BBLs mais le taux de découverte était trop faible (ou trop sujette aux erreurs) pour être jugé acceptable, donc la fonction est devenue obsolète. En bref, oui, vous avez besoin de trouver une instruction RTN par des instructions (sachant que la pin peut manquer certaines instructions car cela est fait statiquement). Vous ne pouvez découvrir les BBL d'une routine que si la routine est exécutée à un moment donné.
Etes-vous sûr que vos échecs proviennent de ce code? Avez-vous essayé d'exécuter un outil avec seulement ce code et toujours vu cet avertissement? – nitzanms
Oui, j'ai essayé mais je n'ai pas changé. –