TacOS-team / tacos

Système d'exploitation / Operating System
GNU General Public License v3.0
9 stars 4 forks source link

[libc] Dépendances pour lex #121

Closed MaximeCheramy closed 12 years ago

MaximeCheramy commented 12 years ago

Je viens de tenter de compiler mon projet de sysinfo (le compilo pseudo-C vers ASM maison) et le fichier généré par lex utilise des fonctions de la libc que nous n'avons pas (l'objectif c'est de pouvoir faire tourner le shell développé en ptut par l'un de mes groupes et qui va visiblement utiliser lex/yacc pour le langage interprété).

void realloc(void ptr, size_t size); void clearerr(FILE stream); int ferror(FILE stream); int fileno(FILE stream); int getc(FILE stream);

Vu qu'il n'y a rien de bien compliqué là dedans, je propose qu'on les code. Par contre cela ne sera sans doute pas suffisant pour faire tourner un programme généré à l'aide de lex + yacc : il faut aussi compiler la library lex... Et ça je n'ai pas essayé :). Edit: Je viens de regarder pour la lib et je n'ai pas l'impression que ce soit compliqué, mais je m'avance peut-être un peu trop.

MaximeCheramy commented 12 years ago

Il faut tester et ajouter la fonction realloc. @NoWiS-, tu voudrais pas nous coder vite fait le realloc ? J'ai du mal à rentrer dans ton code :D.

NoWiS- commented 12 years ago

Okay.

MaximeCheramy commented 12 years ago

depend de #95 (getopt)

Voici les erreurs de compilation / linkage :

y.tab.c:371:7: error: conflicting types for ‘malloc’ /home/max/programmation/tacos/libc/include/malloc.h:36:7: note: previous declaration of ‘malloc’ was here y.tab.c:378:6: error: conflicting types for ‘free’ /home/max/programmation/tacos/libc/include/malloc.h:37:5: note: previous declaration of ‘free’ was here y.tab.c: In function ‘yyparse’: y.tab.c:1529:7: warning: implicit declaration of function ‘yylex’ [-Wimplicit-function-declaration] y.tab.c:2224:7: warning: implicit declaration of function ‘yyerror’ [-Wimplicit-function-declaration] gr.yacc: At top level: gr.yacc:394:1: warning: return type defaults to ‘int’ [-Wreturn-type] gr.yacc: In function ‘main’: gr.yacc:401:2: warning: implicit declaration of function ‘getopt’ [-Wimplicit-function-declaration] gr.yacc:404:22: error: ‘optarg’ undeclared (first use in this function) gr.yacc:404:22: note: each undeclared identifier is reported only once for each function it appears in gr.yacc:409:6: error: ‘optind’ undeclared (first use in this function) gr.yacc:439:2: warning: ‘return’ with no value, in function returning non-void [-Wreturn-type] gr.yacc:395:8: warning: variable ‘file’ set but not used [-Wunused-but-set-variable] gr.yacc: At top level: gr.yacc:442:1: warning: return type defaults to ‘int’ [-Wreturn-type] gr.yacc: In function ‘yyerror’: gr.yacc:444:1: warning: control reaches end of non-void function [-Wreturn-type] lex.yy.c: In function ‘yyrealloc’: lex.yy.c:1969:2: warning: implicit declaration of function ‘realloc’ [-Wimplicit-function-declaration] source.lex: At top level: lex.yy.c:1310:17: warning: ‘yyunput’ defined but not used [-Wunused-function] lex.yy.c:1351:16: warning: ‘input’ defined but not used [-Wunused-function]

Pour les erreurs de redefined, c'est peut-être un flag à ajouter lorsqu'on définie les fonctions malloc dans notre libc, faut que je me renseigne sur ça. Sinon c'est essentiellement getopt et realloc qui manquent.