On Sun, Mar 20, 2005 at 04:29:01PM -0800, Richard Henderson wrote:

> The easiest way is to do this in the linker instead of the compiler.
> See the xstormy16 port and how it handles R_XSTORMY16_FPTR16.  This
> has the distinct advantage that you do not commit to the creation of
> an indirect jump until you discover that the target label is outside
> the low 64k.

Looks perfect to me.  So we are not the first architecture needing
such tricks...  AVR would need 3 new relocs, used like this:

        .word pm16(label)

        ldi r30,pm16_lo8(label)
        ldi r31,pm16_hi8(label)

and the linker can do the rest of the magic (add jumps in a section
below 64K words if the label is above).

Cc: to Denis, as I may need help actually implementing these changes
(you know binutils internals much better than I do).

Thanks,
Marek

Reply via email to