This does solve the problem, now we get the right result: $ readelf -a init/do_mounts.o Relocation section '.rel__mcount_loc' at offset 0x2f60 contains 2 entries: Offset Info Type Sym.Value Sym. Name 00000000 00000202 R_MIPS_32 00000000 .text 00000004 00000202 R_MIPS_32 00000000 .text On Tue, Nov 23, 2010 at 11:41 AM, John Reiser <jreiser@xxxxxxxxxxxx> wrote: > It looks to me like the change which introduced "virtual functions" > forgot about cross-platform endianness. Can anyone please test this patch? > Thank you to Arnaud for supplying before+after data files do_mounts*.o. > > > recordmcount: Honor endianness in fn_ELF_R_INFO > > --- > scripts/recordmcount.h | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/scripts/recordmcount.h b/scripts/recordmcount.h > index 58e933a..3966717 100644 > --- a/scripts/recordmcount.h > +++ b/scripts/recordmcount.h > @@ -119,7 +119,7 @@ static uint_t (*Elf_r_sym)(Elf_Rel const *rp) = fn_ELF_R_SYM; > static void fn_ELF_R_INFO(Elf_Rel *const rp, unsigned sym, unsigned type) > { > - rp->r_info = ELF_R_INFO(sym, type); > + rp->r_info = _w(ELF_R_INFO(sym, type)); > } > static void (*Elf_r_info)(Elf_Rel *const rp, unsigned sym, unsigned type) = fn_ELF_R_INFO; > -- 1.7.3.2 > > > -- >