m68k Coldfire and PC-relative addressing distances
Florian Weimer
fweimer@redhat.com
Tue Jul 11 09:34:59 GMT 2023
How does the Coldfire m68k subtarget and sure that displacements in PIC
code are within the addressable range?
We have a source file in glibc that fails at assembly because it
contains a branch that is out of range with -fpic. The GAS error is:
…/iso-2022-jp.s: Fatal error: Tried to convert PC relative branch to absolute jump
(Not sure if this is actually a branch, the diagnostic isn't really
helpful.)
The -fPIC option does not help, and -fpic -mpcrel ICEs at the end of
m68k.cc:sched_attr_op_type. The op variable at this point is:
(mem/u:HI (const:SI (plus:SI (symbol_ref:SI ("__jisx0212_to_ucs_idx") [flags 0x40] <var_decl 0x7ffff761df30 __jisx0212_to_ucs_idx>)
(const_int 2 [0x2]))) [2 MEM[(const struct jisx0212_idx *)&__jisx0212_to_ucs_idx].end
The iso-2022-jp.c source file has some large data tables, so it's
probably not surprising that -fpic doesn't work.
Thanks,
Florian
More information about the Gcc
mailing list