IroS
:
-pourquoi l'erreur survient avec TIGCC 0.95 et pas 0.94? (je vien de réinstaller la 0.94 pour voir si j'avais pas toucher a kkchose sans vouloir)
Parce que le linker a changé.
-comment résoudre le problème?
Il faudra que les auteurs de
gennlib.a corrigent leur librairie.
et puis C bien beau de dire "C'est gennlib.a qui utilise des noms réservés qu'elle n'est pas censée utiliser", n'empèche que G jamais eu de pb jusqu'au passage de TIGCC 0.94 a 0.95. C pas plutot TIGCC qui réserve des noms déjà utilisés?
Ces noms ont toujours été réservés. L'ancien linker ne les traîtait pas spécialement en mode
_nostub, mais ça ne veut pas dire que les noms n'étaient pas réservés.
geogeo
:
Genlib n'est pas une librairie statique comme les autres car elle s'appuye sur la librairie qui ce trouve sur la calculatrice, et comme on le sais, pour utiliser une libreirie dynamique il faut être en Kernel, or on peu programmer en nostub avec genlib.a ce qui est faux.
Ça n'a rien à voir avec le problème. Le problème est que cette "librairie statique" utilise (à tord) des identifiants comme
genlib__0000 qui sont réservés par le linker et ont une signification bien particulière. N'importe quelle librairie statique qui utilise ces identifiants aura le même problème. Le fait qu'il y a une librairie dynamique derrière n'a rien à voir avec ce problème.
IroS :
n'empèche k'il n'y avais aucun pb en utilisant genlib + TIGCC 0.94 et k'il y en a en utilisant genlib + TIGCC 0.95!
ça ne viens surement pas de genlib puisqu'elle n'a pas été modifiée entre-temps
Mauvais raisonnement. Un programme peut être bogué d'une manière qui ne se remarque qu'avec une version bien déterminée du compilateur. Par exemple (et c'est le cas ici), si un programme abuse d'un nom réservé, ça ne se fera remarquer que quand le nom sera réellement utilisé.
Et si ces noms sont reconnus comme des appels de librairies même en
_nostub maintenant, c'est parce que:
1. le nouveau linker gère les modes différemment, donc il serait difficile de désactiver ça.
2. nous pensons à terme utiliser cette syntaxe pour les DLLs
_nostub (pour laisser le linker s'occuper des DLLs
_nostub), donc tu auras de toute façon un problème tôt ou tard.
Maintenant, si tu penses toujours que c'est un bogue de
TIGCC, tu remplis un bug report en anglais (si possible avec tous les détails techniques que je t'ai expliqués ici) pour que Sebastian soit aussi au courant et pour que tu puisses discuter ça avec lui. (C'est Sebastian qui a implémenté ça de cette manière.) Mais je reste de l'avis que c'est
gennlib.a (et le
genlib.h qui va avec) qui ont besoin d'être corrigés.