Vsevolod Sipakoff <versus@megalink.ru> writes:
> I've got strange errors trying to compile
> both netboot-0.9.0e and netboot-0.8.1
> Maybe it's because bison or flex is broken, I wonder?
>
> here is result of 'make':
> ======================================================
> making all in mknbi-mgl
> make[1]: Entering directory `/usr/local/src/netboot-0.9.0e/mknbi-mgl'
> gcc -O2 -Wall -DHAVE_CONFIG_H -I. -I.. -I../include -DPARANOID -c y.tab.c -o
> y.tab.o
> mglparse.y: In function `yyparse':
> mglparse.y:2388: called object is not a function
I had the same problem and tracked it down today.
The problem is in mknbi-mgl/mglparse.y in the lines
/* We need this for the code generator */
static struct sym strlen = {
funcsym, "", 0, -1, {
{ 0, 0, CMD_STRLEN, 1, &int_type,
{ &string_type },
{ ATTR_CONST }
}
}, NULL
};
strlen is used as a local variable name which conflicts with strcmp()
in glibc-2.1.x. When compiling with optimization (-O or -O2, but not
-Os) the preprocessor symbol __OPTIMIZE__ is defined and then
glibc-2.1.x defines strcmp() as a macro using the function strlen().
In mglparse.y however, strlen is defined as a variable, thus breaking
the call to strcmp() a few lines later.
The solution is to compile without -O or -O2, or better to rename the
variable strlen:
--- mknbi-mgl/mglparse.y.orig Sun Jan 3 21:38:29 1999
+++ mknbi-mgl/mglparse.y Tue Apr 11 12:34:19 2000
@@ -2373,7 +2373,7 @@
struct expr *ep;
/* We need this for the code generator */
- static struct sym strlen = {
+ static struct sym str_len = {
funcsym, "", 0, -1, {
{ 0, 0, CMD_STRLEN, 1, &int_type,
{ &string_type },
@@ -2387,11 +2387,11 @@
exprtype($1) == EXPR_STRING &&
$3 != NULL && !strcmp($3->name, "len")) {
ep = newexpr();
- ep->type = strlen.def.f.ret;
- ep->opcode = strlen.def.f.opcode;
- ep->exprnum = strlen.def.f.argnum;
+ ep->type = str_len.def.f.ret;
+ ep->opcode = str_len.def.f.opcode;
+ ep->exprnum = str_len.def.f.argnum;
ep->exprlist[0] = reorg($1);
- ep->spec.func = &strlen;
+ ep->spec.func = &str_len;
$$ = ep;
break;
}
===========================================================================
This Mail was sent to netboot mailing list by:
Urs Thuermann <urs@isnogud.escape.de>
To get help about this list, send a mail with 'help' as the only string in
it's body to majordomo@baghira.han.de. If you have problems with this list,
send a mail to netboot-owner@baghira.han.de.
For requests or suggestions regarding this mailing list archive please write to netboot@gkminix.han.de.