The patch implements linking of shared libraries for MIPS little-endian 32-bit target. Now supported a limited set of relocations and linking is possible in trivial cases only.
The following are the most significant peculiarities of MIPS target:
- MIPS ABI requires some special tags in the dynamic table.
- GOT consists of two parts local and global. The local part contains entries refer locally visible symbols. The global part contains entries refer global symbols.
- Entries in the .dynsym section which have corresponded entries in the GOT should be:
- Emitted at the end of .dynsym section
- Sorted accordingly to theirs GOT counterparts
- There are “paired” relocations. One or more R_MIPS_HI16 and R_MIPS_GOT16 relocations should be followed by R_MIPS_LO16 relocation. To calculate result of R_MIPS_HI16 and R_MIPS_GOT16 relocations we need to combine addends from these relocations and paired R_MIPS_LO16 relocation.
Could you please review the patch? Any suggestions or objections are very appreciated.
remove all parameters to this function. alloc should be owned by the TargetHandler for Mips. name/order could be completely decided by Mips too.