J'ai également porté newlib et GCC. Et je me souviens que je n'avais pas à faire beaucoup de choses pour faire fonctionner newlib (le portage de GCC, de gaz et de libbfd était la plus grande partie du travail).
juste eu à modifier certains fichiers sur nombres à virgule flottante, désactivez certains drapeaux POSIX/de SomeOtherStandard qui ont rendu pas utiliser certaines fonctions plus sophistiquées et à écrire le code de soutien pour longjmp
/setjmp
que la charge et le stockage registre d'état dans les tampons de saut. Mais vous devez certainement lui dire la cible en utilisant --target
donc il utilise le bon sous-répertoire de la machine et autres joyeusetés. Je me souviens que je devais ajouter un petit code à configure.sub
pour lui faire connaître ma cible et imprimer le trible de configuration complet (cpu-manufacturer-os ou similaire). J'ai juste trouvé que je devais aussi éditer un fichier appelé configure.host
, qui définit certaines options pour votre cible (par exemple, si un système d'exploitation gère les signaux levés par raise
, ou si newlib lui-même devrait simuler la manipulation).
J'ai utilisé this blog d'Anthony Green comme ligne directrice, où il décrit le portage de GCC, newlib et binutils. Je pense que c'est une excellente source lorsque vous devez le faire vous-même. Un plaisir à lire quand même. Il a fallu un total de 2 mois pour compiler et exécuter des programmes C amusants qui n'ont besoin que de C (avec des fonctions de lecture/écriture factices écrites dans le terminal du simulateur).
Donc, je pense que la quantité de travail est certainement gérable. Celui qui m'a rendu presque fou était les scripts de construction de libgloss
. J'ai certainement été perdu dans ces magies autoconf :) En tout cas, je vous souhaite bonne chance! :)
merci pour le lien. J'avais déjà repéré cette page, mais cela ne couvre pas le fonctionnement des sous-répertoires par machine de libgloss, ce qui était ma confusion – sparklewhiskers