[mips] Support 64-bit relative relocations
MIPS 64-bit ABI does not provide special PC-relative relocation like R_MIPS_PC32 in 32-bit case. But we can use a "chain of relocation" defined by N64 ABIs. In that case one relocation record might contain up to three relocations which applied sequentially. Width of a final relocation mask applied to the result of relocation depends on the last relocation in the chain. In case of 64-bit PC-relative relocation we need the following chain: `R_MIPS_PC32 | R_MIPS_64`. The first relocation calculates an offset, but does not truncate the result. The second relocation just apply calculated result as a 64-bit value. The 64-bit PC-relative relocation might be useful in generation of `.eh_frame` sections to escape passing `-Wl,-z,notext` flags to linker. Differential Revision: https://reviews.llvm.org/D80390
Loading
Please sign in to comment