A strange compiling issue

Mel fbsd.questions at rachie.is-a-geek.net
Tue Sep 23 17:57:04 UTC 2008


On Tuesday 23 September 2008 11:45:40 Unga wrote:
> Hi
>
> I'm trying to compile Perl on FreeBSD. It get cleanly compiled on FreeBSD
> 7.0.
>
> But on another test system running RELENG_7 where I do weired things, it
> develops errors. There must be something wrong with my test system, I would
> like to understand what cause this error.
>
> cc -c -DPERL_CORE -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H
> -fno-strict-aliasing -pipe  -std=c89 -O -Wall -ansi   -W -Wextra
> -Wdeclaration-after-statement -Wendif-labels -Wc++-compat toke.c
>
> toke.c: In function 'Perl_yylex':
> toke.c:6633: error: lvalue required as unary '&' operand
> toke.c:6633: error: lvalue required as unary '&' operand

> Line 6633:
>                     if (memchr(tmpbuf, ':', len))
>                         sv_setpvn(PL_subname, tmpbuf, len);
>                     else {
>                         sv_setsv(PL_subname,PL_curstname);
>                         sv_catpvs(PL_subname,"::");
>                         sv_catpvn(PL_subname,tmpbuf,len);

These line numbers are off. There's no '&' anywhere here. Any chance this file 
wasn't passed through yacc/lex? Does an '&' show up in raw cpp output (maybe 
memchr was defined as some macro)? Try:
cpp -DPERL_CORE -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe  \
	-std=c89 -O -Wall -ansi   -W -Wextra -Wdeclaration-after-statement \
	-Wendif-labels -Wc++-compat -o toke.out

Then inspect toke.out.
-- 
Mel

Problem with today's modular software: they start with the modules
    and never get to the software part.


More information about the freebsd-questions mailing list