Some MIPS relocations including R_MIPS_HI16/R_MIPS_LO16 use combined addends. Such addend is calculated using addends of both paired relocations. Each R_MIPS_HI16 relocation is paired with the next R_MIPS_LO16 relocation. ABI requires to compute such combined addend in case of REL relocation record format only.
For details see p. 4-17 at ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf
This patch implements lookup of the next paired relocation suing new InputSectionBase::findPairedRelocLocation method. The primary disadvantage of this approach is that we put MIPS specific logic into the common code. The next disadvantage is that we lookup R_MIPS_LO16 for each R_MIPS_HI16 relocation, while in fact multiple R_MIPS_HI16 might be paired with the single R_MIPS_LO16. From the other side this way allows us to keep MipsTargetInfo class stateless and implement later relocation handling in parallel.
This patch does not support R_MIPS_HI16/R_MIPS_LO16 relocations against _gp_disp symbol. In that case the relocations use a special formula for the calculation. That will be implemented later.
Do you have to template isRela? IIRC, it is always Elf_Rel on MIPS.