Liaison à plusieurs bibliothèques, dont l’une enveloppe un ensemble d’appels système

Donc, voici le scénario que je regarde:

J’ai 3 bibliothèques – A, B et C.

  • La bibliothèque A implémente la fonction foo() et l’expose en tant qu’API.
  • Fonction foo() appelle l’appel POSIX write() pour écrire des données.
  • La bibliothèque B écrit un wrapper dans l’appel write() glibc à l’aide de l’option linker -wrap.
  • La bibliothèque C relie à la fois A et B.

Tout appel à write() la bibliothèque C sera intercepté par la bibliothèque d’encapsulation B. Mais ma question est la suivante: si la bibliothèque C appelle foo() , l’appel à write() dans foo () sera-t-il intercepté par B?

Si A est lié à -wrap=write , foo appellera le wrapper. Si ce n’est pas le cas, ce ne sera pas le cas.

La même chose est vraie pour les appels à write en C Il n’y a aucune différence entre A et C en ce qui concerne l’appel en write .