RFC and PATCH - Defining variables in the linker script without defining them as symbols on the file

Ian Lance Taylor ian@wasabisystems.com
Wed Jul 21 15:20:00 GMT 2004


Nick Clifton <nickc@redhat.com> writes:

> > While testing if it's working, I found out that if I have a script with
> > those lines inside SECTIONS{
> > lixo = lixo_1;
> > TEMPORARY( lixo_1 = 0x1);
> > }
> > I have as result:
> > make ok;readelf -a ok|grep lixo
> > cc -Wl,-T -Wl,script -Wl,--deftmp -Wl,lixo1=0x19  -Wl,--deftmp
> > -Wl,lixo2=0x29    ok.c   -o ok
> >     49: 00000001     0 NOTYPE  GLOBAL DEFAULT  ABS lixo
> >     59: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND lixo_1
> > As you can see, lixo_1 ends up as undefined.
> > The parser accept the variable, but in the tree used to construct the
> > sentence lixo = lixo_1; lixo_1 is not defined yet.	Why the parser accept
> > a variable that wasn't defined yet?
> 
> Because it was never programmed not to.  There is no good reason to
> accept this, and in fact I agree that the parser ought to issue an
> error message.  It is just that I doubt if anyone has ever done this
> with a linker script before.

Note that there is a very good reason to accept
    foo = bar
if bar is defined in some .o file.  I don't think you can report an
error in the parser.

Ian



More information about the Binutils mailing list