On Sun, Oct 09, 2022 at 09:37:13PM +0200, Pali Rohár wrote:
> For some unknown reason GNU assembler version 2.31.1 (arm-linux-gnueabi-as
> from Debian Buster) cannot compile following code from located in file
> board/nokia/rx51/lowlevel_init.S:
>
> kernoffs:
> .word KERNEL_OFFSET - (. - CONFIG_SYS_TEXT_BASE)
>
> when CONFIG_SYS_TEXT_BASE is set to 0x80008000. It throws strange compile
> error which is even without line number:
>
> AS board/nokia/rx51/lowlevel_init.o
> {standard input}: Assembler messages:
> {standard input}: Error: attempt to get value of unresolved symbol `L0'
> make[2]: *** [scripts/Makefile.build:293: board/nokia/rx51/lowlevel_init.o] Error 1
>
> I have no idea about this error and my experiments showed that ARM GNU
> assembler is happy with negation of that number. So changing code to:
>
> kernoffs:
> .word . - CONFIG_SYS_TEXT_BASE - KERNEL_OFFSET
>
> and then replacing mathematical addition by substraction of "kernoffs"
> value (so calculation of address does not change) compiles assembler file
> without any error now.
>
> There should be not any functional change.
>
> Signed-off-by: Pali Rohár <pali@???>
Thanks for following up with upstream here. I see they didn't answer
your final question, but my read of the series is that what you're doing
here should always work.
Reviewed-by: Tom Rini <trini@???>
Link:
https://sourceware.org/pipermail/binutils/2022-October/123472.html
--
Tom