Question

Est-ce que quelqu'un ici peut me dire s'il existe quelque chose de similaire à LD_PRELOAD dans les versions récentes d'AIX? Plus précisément, je dois intercepter les appels de mon programme binaire vers time (), en renvoyant une heure constante, à des fins de test.

Était-ce utile?

La solution

AIX 5.3 a introduit les variables LDR_PRELOAD (pour les programmes 32 bits) et LDR_PRELOAD64 (pour les programmes 64 bits). Ils sont analogues à LD_PRELOAD sous Linux. Les deux sont des listes de bibliothèques séparées par des deux-points, et les symboles seront chargés de manière préemptive à partir des objets partagés répertoriés avant toute autre chose.

Par exemple, si vous avez un objet partagé foo.so:

 LDR_PRELOAD=foo.so

Si vous utilisez des archives, utilisez le style AIX pour spécifier l'objet dans l'archive:

 LDR_PRELOAD="bar.a(shr.so)"

Et séparez plusieurs entrées avec deux points:

 LDR_PRELOAD="foo.so:bar.a(shr.so)"

Autres conseils

AIX 5L utilise la variable LDR_PRELOAD.

Pas que je sache. La chose la plus proche que nous ayons faite (avec malloc / free pour le débogage) est de

  • créez un nouveau fichier de bibliothèque contenant uniquement les fonctions souhaitées (même nom que le fichier d'origine).
  • placez-le dans un répertoire différent de celui d'origine.
  • créer une dépendance entre notre fichier de bibliothèque et l'original.
  • changez LD_LIBRARY_PATH (ou SHLIB_PATH?) pour placer notre bibliothèque en premier dans la chaîne de recherche.

De cette manière, nos fonctions ont été sélectionnées en premier par le chargeur. Toutes celles que nous n’avions pas fournies étaient fournies par l’original.

C'était il y a quelque temps. AIX 5L est censé ressembler beaucoup plus à Linux (d’où le L), il est donc en mesure de faire exactement ce dont vous avez besoin.

Alternativement, si vous avez la source, communiquez les appels à time () avec mytime () et fournissez votre fonction. Vous ne testez pas exactement le même logiciel, mais les différences pour ce type de modification minimale ne devraient pas avoir d'importance.

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