On Wed, Mar 15, 2000 at 04:08:08PM +0100, Geert Uytterhoeven wrote:
> I'm trying to compile lmbench on Linux/MIPS(EL). Gcc (egcs-2.90.27 980315
> (egcs-1.0.2 release)) complains about
No, as from binutils (all versions) coplains.
> ../bin/linux/lat_ctx.s: Assembler messages:
> ../bin/linux/lat_ctx.s:4293: Error: Branch out of range
> ../bin/linux/lat_ctx.s:40459: Error: Branch out of range
> At line 4293 it jumps to line 40460 using `j', which is obviously further then
> 32K instructions apart (and incompatible with -KPIC, which is always[*] used).
> How can I fix this?
- Fix the assembler. Enjoy ... lmbench is faik the only real world
program which triggers this problem so I've never been very motivated to
fix this ...
- Get a newer version of lmbench which does no longer rely on such insane
> [*] Why is MIPS code always compiled PIC?
The calling convention for PIC code is to always have the address of the
callee in $25. This implies that mixing PIC and non-PIC code is not
possible, therefore everything is PIC.