[PATCH] D40147: [MIPS] Handle cross-mode (regular <-> microMIPS) jumps

Simon Atanasyan via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 31 02:27:47 PST 2018


atanasyan updated this revision to Diff 132118.
atanasyan added a comment.

One more variant of the patch. The `if Mips` code were removed from `InputSectionBase::relocate` and `InputSection::relocateNonAlloc` methods. Now the less-significant bit is configured in the `getRelocTargetVA` routine. I could not remove Mips-ness from `DynamicSection<ELFT>::addSym` and `Writer<ELFT>::getEntryAddr` because if an `e_entry` field or a dynamic table entry contains microMIPS symbol value this value should have the less-significant bit to notify loader / dynamic-linker about the symbol's type.


Repository:
  rLLD LLVM Linker

https://reviews.llvm.org/D40147

Files:
  ELF/Arch/Mips.cpp
  ELF/InputSection.cpp
  ELF/SyntheticSections.cpp
  ELF/Writer.cpp
  test/ELF/mips-micro-bad-cross-calls.s
  test/ELF/mips-micro-cross-calls.s
  test/ELF/mips-micro-plt.s
  test/ELF/mips-micro-relocs.s

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D40147.132118.patch
Type: text/x-patch
Size: 15069 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180131/83998804/attachment.bin>


More information about the llvm-commits mailing list