Port-amiga archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Fail to build libgcc_s for 060
On Wed, 10 Apr 2019 10:15:21 +0200 (CEST)
Anders Lindgren <ali%dflund.se@localhost> wrote:
> libgcc_s_pic.a(_float.pico):(.text+0x8): relocation truncated to fit: R_68K_PLT16 against symbol `$_exception_handler' defined in .text section in libgcc_s_pic.a(_floatex.pico)
Looks like some 16-bit PC-relative PLT-calls have come out of range,
i.e. the jump-destination is more than 32K away.
> It seems strange that libgcc would not build for 68060, but -m68060 is
> really the only thing I've manipulated here; looking at the compile flags
> for the (generated asm) floatex.pico, it looks like:
> [...]
Apart from -m68060 there is -fPIE and -fPIC. PIC generates position
independant code, which was always required for shared objects (calls are
done relative via PLTs and data accesses relative via the GOT).
PIE might be new (or I didn't notice it in later years). It enables
address space layout randomization (ASLR) - and I'm not sure if it is
even meant to work together with PIC. I'm not familiar enough with it
to give a judgement here.
> _floatex.S -o _floatex.pico
>
> ..and there's indeed nothing else funky going on with the compiler flags.
Probably not. Besides that -m68060 might have generated a little bit larger
.text section, because some 020 or 88x instructions have to be emulated by
inline code (this is what you wanted, to avoid the emul traps).
But here _floatex.S is already an assembler source, which has probably
hardcoded PC-relative 16-bit calls. My guess it that they no longer work,
because the distance to their jump-destination in the PLT has just exceeded
32K.
> This whole build machinery is pretty opaque to me, so I'm not sure how to
> proceed. Surely it must be possible to build the target gcc specifically
> for 68060?
I have no clue about that build machinery either, but maybe you want to
check _floatex.S and look for the $_exception_handler calls in it.
Perhaps they can be converted to 32-bit PC-relative calls, which will
result in R_68K_PLT32 relocations.
--
Frank Wille
Home |
Main Index |
Thread Index |
Old Index