This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

JMPADD reloc in MIPS ECOFF file


Hi!

Can anyone help me ? How to force MIPS binutils to emit an
ECOFF object file with JMPADDR relocs ?

I have an old MIPS-based X-Terminal, Tektronix TekXPress 338.
This device is based on the old MIPS VxWorks 5.0.4 (WIND 2.0 kernel).
I'm tryind to build an application with GCC/binutils.

As it is known, the VxWorks applications is just a "half-linked"
.o objects with undefined externals. The VxWorks itself
is a sort of huge ".so library". Never VxWorks versions are
using ELF, but my old version uses ECOFF.

http://tekxp-linux.hopto.org/pmwiki/pmwiki.php/Software/Toolchains

Unfortunately, built-in VxWork's `ld` accepts only REFHI, REFLO
and JMPADDR relocs but does not support for GPREL relocs while
the modern binutils emits GPREL.

I'm using a `objcopy` to convert from ELF to ECOFF.

How to make an ECOFF with JMPADDR relocs ?


$ mips-linux-gcc -O2 -mips1 -mno-half-pic -fno-pic -mno-abicalls -ffreestanding -c hellovx.c -o hellovx.elf $ mips-linux-objcopy -O ecoff-bigmips hellovx.elf hellovx.ecoff

$ mips-linux-objdump -x hellovx.elf
...
RELOCATION RECORDS FOR [.text]:
OFFSET   TYPE              VALUE
00000004 R_MIPS_HI16       hello
00000008 R_MIPS_LO16       hello
00000014 R_MIPS_26         write

$ mips-linux-objdump -x hellovx.ecoff
...
RELOCATION RECORDS FOR [.text]:
OFFSET           TYPE              VALUE
0000000000000004 REFLO             hello
0000000000000008 GPREL             hello
0000000000000014 REFHI             write
...

The R_MIPS_LO16  becames GPREL, but R_MIPS_26 --> REFHI  ???
How it is possible ?

The binutils is 2.13.90.0.16 .

--
-=AV=-


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]