On 02/05/14 12:43, Jan Waclawek wrote:
Will avr-gcc use the right relocation when picking one function from the
array and calling it?
No, the relocation happened earlier, when the function pointer is getting
allocated during linking (i.e when the *value* of the function pointer is
getting determined). All the function pointers are 16-bit, but they will
get a stub allocated in the "trampolines". If you use linker relaxation,
only those functions allocated above the >64kW boundary will get a stub,
others are used "directly".
Sorry, I meant if gcc will create the right relocation for the function
pointer value, so that the linker puts a stub in trampolines, or if I
have to use some special attribute to make it do so for some pointers.
You've already answer this below, so the answer is that gcc wiill always
create a 16-bit relocation and the linker will create a stub always for
function pointers going into data objetcs, or only for the ones above
128Kb (64Kwords) if linker relaxation is selected.
Thanks for the help.
Regards
David F.
_______________________________________________
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
https://lists.nongnu.org/mailman/listinfo/avr-gcc-list