R_MIPS_26 testcase
Ralf Baechle
ralf@uni-koblenz.de
Wed Aug 4 14:02:00 GMT 1999
On Wed, Aug 04, 1999 at 01:49:26PM -0700, Mark Mitchell wrote:
> I think I already fixed this. I get:
>
> Disassembly of section .text:
>
> 0000000000000000 <bar-0x18000>:
> ...
>
> 0000000000018000 <bar>:
> 18000: 3c020002 lui $v0,0x2
> 18000: R_MIPS_HI16 .text
> 18004: 24428000 addiu $v0,$v0,-32768
> 18004: R_MIPS_LO16 .text
> ...
>
> which looks like the right thing to me: 0x20000 - 0x8000 = 0x18000
> unless I'm really losing it.
Yep, test cases #7 and #8 are ok now. #6 still is broken. Shifting
left of the the jump destination has to be done before adding
something to it like in this patch fragment:
@@ -6581,6 +6573,9 @@
/* There's nothing to do for non-local relocations. */
continue;
+ if (r_type == R_MIPS_26)
+ addend <<= 2;
+
r_symndx = ELF32_R_SYM (rel->r_info);
sym = local_syms + r_symndx;
if (ELF_ST_TYPE (sym->st_info) == STT_SECTION)
Ralf
More information about the Binutils
mailing list