On Fri, Dec 21 2018, Xiyue Deng <[email protected]> wrote: [...]
>> Index: elf64-mips.c >> =================================================================== >> RCS file: /cvs/src/gnu/usr.bin/binutils-2.17/bfd/elf64-mips.c,v >> retrieving revision 1.1.1.1 >> diff -u -p -p -u -r1.1.1.1 elf64-mips.c >> --- elf64-mips.c 24 Apr 2011 20:14:42 -0000 1.1.1.1 >> +++ elf64-mips.c 19 Dec 2018 17:22:29 -0000 >> @@ -2252,6 +2252,8 @@ mips_elf64_rtype_to_howto (unsigned int >> return &mips16_elf64_howto_table_rel[r_type - R_MIPS16_min]; >> } >> BFD_ASSERT (r_type < (unsigned int) R_MIPS_max); >> + if (!(r_type < (unsigned int) R_MIPS_max)) >> + fprintf(stderr, "BFD:%s: relocation type %u\n", __func__, r_type); >> if (rela_p) >> return &mips_elf64_howto_table_rela[r_type]; >> else > > With the patch from Jeremie applied, the error message shows exact type > of relocation: > > > --8<-- > /usr/bin/ld: BFD 2.17 assertion fail > /usr/src/gnu/usr.bin/binutils-2.17/bfd/elf64-mips.c:2254 > BFD:mips_elf64_rtype_to_howto: relocation type 248 > /usr/bin/ld: BFD 2.17 internal error, aborting at > /usr/src/gnu/usr.bin/binutils-2.17/bfd/reloc.c line 445 in bfd_get_reloc_size > > /usr/bin/ld: Please report this bug. > > clang-6.0: error: linker command failed with exit code 1 (use -v to see > invocation) > -->8-- > > Hope this is helpful for MIPS people to properly fix this. This is consistent with visa@'s analysis. He committed a fix, which should arrive on your local CVS mirror soonish: --8<-- CVSROOT: /cvs Module name: src Changes by: [email protected] 2018/12/22 03:31:01 Modified files: gnu/usr.bin/binutils-2.17/bfd: elf64-mips.c Log message: Add support for R_MIPS_PC32 relocation. It is needed for linking code that has been compiled using clang. The added code is based on old binutils code from year 2000. Prodded by and OK jca@, OK kettenis@ guenther@ -->8-- You could backport it to -stable, but better use -current. ;) -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
