Comment collecter des données de différents fichiers .a dans un tableau? Comment conserver des sections dans des fichiers .a avec un script ld?

Je dois collecter des données à partir de différents fichiers .a vers un tableau. Je le fais en collectant des données dans une section

premier fichier .c

TArElement __atsortingbute__((section(".my.special.section"))) uwiveuve = { ... 

deuxième fichier .c

 TArElement __atsortingbute__((section(".my.special.section"))) egwegwxb = { ... 

etc.

dans le script ld

 __my_mega_array_begin = ABSOLUTE(.); KEEP(*(.my.special.section)) __my_mega_array_end = ABSOLUTE(.); 

dans le fichier principal .c

 extern TArElement *__my_mega_array_begin extern TArElement *__my_mega_array_end const t_size array_size = __my_mega_array_end - __my_mega_array_begin; 

Ainsi, tout le monde peut associer son code à mon code, et mon code sera informé des données contenues dans son code. Ok, ça marche, mais pas vraiment … Le problème est que la directive KEEP fonctionne complètement avec les fichiers .o, mais pas avec les fichiers .a. si aucune section n’est utilisée dans un fichier .o particulier à l’intérieur d’un fichier .a, alors le fichier .o entier sera ignoré même si la directive KEEP est utilisée.

L’utilisation de l’option –whole-arhive à ld aidera, mais je ne suis pas autorisé à utiliser cette option pour certaines raisons. Je devrais tout faire avec le fichier script ld uniquement …

Une autre façon de résoudre le problème consiste à utiliser une liaison partielle en créant un fichier déplaçable. Ainsi, tous les fichiers .o au sein de .a seront liés à un fichier .o. Mais je ne suis pas autorisé à utiliser la liaison partielle non plus.

Je devrais donc le faire uniquement en utilisant le script ld et en utilisant le fichier .a.