Chasse aux bogues dans l'itérateur de polices système Android : une histoire de symboles cachés

2025-06-02

Cet article de blog relate la correction d’un bogue étonnamment longue. Android définit différents niveaux d’API, certains symboles n’étant disponibles qu’à partir d’une version spécifique. Firefox pour Android (Fenix) utilise `ASystemFontIterator_open`, disponible uniquement à partir de l’API 29. Pour assurer la compatibilité descendante, Fenix utilise `__ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__` et `__builtin_available` pour des vérifications au moment de la compilation et de l’exécution. Toutefois, le système de build de Firefox utilise par défaut la visibilité cachée (`-fvisibility=hidden`), ce qui fait que le symbole faible `ASystemFontIterator_open` devient indéfini dans la bibliothèque partagée, entraînant des plantages. La solution consistait en une simple modification pour modifier temporairement la visibilité par défaut lors de l’inclusion des en-têtes système Android.

Développement Correction de bogue