--- rpl/src/formateur.c 2017/06/28 09:20:30 1.82 +++ rpl/src/formateur.c 2017/06/29 14:54:42 1.83 @@ -42,6 +42,9 @@ formateur(struct_processus *s_etat_proce int parentheses_groupe_gauche; int parentheses_groupe_droit; + integer8 (*__type_disp)(struct_processus + *s_etat_processus, void **arg); + logical1 registre45; logical4 autorisation_parenthese; @@ -3296,8 +3299,7 @@ formateur(struct_processus *s_etat_proce if (chaine == NULL) { - (*s_etat_processus).erreur_systeme = - d_es_allocation_memoire; + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return(NULL); } @@ -3306,6 +3308,31 @@ formateur(struct_processus *s_etat_proce strcat(chaine, " ]"); } } + else if ((*s_objet).type == EXT) + { + if ((__type_disp = dlsym((*s_objet).descripteur_bibliotheque, + "__type_disp")) == NULL) + { + // Symbole externe non affichable + + if ((chaine = malloc((strlen("External symbol") + 1) + * sizeof(unsigned char))) == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + } + + strcpy(chaine, "External symbol"); + } + else + { + // Symbole externe affichable + __type_disp(s_etat_processus, (void **) &chaine); + } + } + else + { + BUG(1, uprintf("Unknown symbol type\n")); + } return(chaine); }