Error: attempt to get value of unresolved symbol `L0'
Pali Rohár
pali@kernel.org
Sun Oct 16 10:20:46 GMT 2022
On Tuesday 11 October 2022 19:07:55 Pali Rohár wrote:
> On Tuesday 11 October 2022 15:33:59 Nick Clifton wrote:
> > Hi Pali, Hi Richard,
> >
> > > Having file name and line number would be also useful as it took me
> > > some time to figure out where is the issue...
> >
> > Right - I have tried a little harder and come up with a follow up patch.
> > This is now checked in, and given an input file that looks like this:
> >
> > % cat t.s
> > kernoff:
> > .set KERNEL_OFFSET, 0x40000
> > .set CONFIG_SYS_TEXT_BASE, 0x80008000
> > .word 44
> > .word KERNEL_OFFSET - (. - CONFIG_SYS_TEXT_BASE)
> > .word - (. - 0x80008000)
> > .word 0x40000 - (. - 0x0)
> >
> > The assembler now produces the following output:
> >
> > t.s: Assembler messages:
> > t.s:5: Error: expression is too complex to be resolved or converted into relocations
> > t.s:6: Error: expression is too complex to be resolved or converted into relocations
> >
> > Note - some targets do support applying multiple relocations to a
> > single address, but even then there can be expressions that cannot
> > be resolved this way. That is why the error message refers to
> > "converted into relocations" rather than just "converted into a
> > relocation".
> >
> > Cheers
> > Nick
> >
>
> Nice!
>
> Anyway, what should I use in code?
>
> .word . - CONFIG_SYS_TEXT_BASE - KERNEL_OFFSET
>
> or
>
> .word CONFIG_SYS_TEXT_BASE + KERNEL_OFFSET - .
>
> And can you guarantee that one of those form would work also in future
> gcc/binutils versions, and it is not something version specific or
> undocumented?
Hello Nick, could you clarify which option should I use?
And could you extend documentation about Dot symbol usage, what is
supported, what not, to make it clear?
https://sourceware.org/binutils/docs/as/Dot.html
More information about the Binutils
mailing list