Xtensa --- dangerous relocation: windowed long call crosses 1GB boundary -


i got following error during compilation

(.sram.text+0x1283): dangerous relocation: windowed longcall crosses 1gb boundary; return may fail: (und+0xdeadcafe)

in 1 of functions.

the architecture xtensa , toolchain used gnu toolchain built xtensa. error inside function elf_xtensa_do_reloc() in file elf32-xtensa.c in binutils source code.

please let me know cause of error , possible solution.

thanks , regards, hari

this known caveat of default xtensa windowed-register abi. quoting xtensa isa reference manual:

the window increment stored return address register in a4 occupies 2 significant bits of register, , therefore bits must filled in subroutine return. retw , retw.n instructions fill in these bits 2 significant bits of own address. prevents register-window calls being used call routine in different 1gb region of address space.

you have 2 options fix this:

  1. you can try adjusting load base address code and/or make smaller (!) until fits within 1gb region fix it.
  2. if doesn't work or isn't option, you'll have recompile everything running on xtensa system compiler supports alternative call0 abi, treats register file 'flat' , avoids offending windowed call , return instructions.

Comments

Popular posts from this blog

How has firefox/gecko HTML+CSS rendering changed in version 38? -

android - CollapsingToolbarLayout: position the ExpandedText programmatically -

Listeners to visualise results of load test in JMeter -