@@ -289,14 +289,9 @@ unsigned MipsELFObjectWriter::getRelocType(MCContext &Ctx,
289289 case FK_TPRel_8:
290290 return ELF::R_MIPS_TLS_TPREL64;
291291 case FK_GPRel_4:
292- if (is64Bit ()) {
293- unsigned Type = (unsigned )ELF::R_MIPS_NONE;
294- Type = setRType ((unsigned )ELF::R_MIPS_GPREL32, Type);
295- Type = setRType2 ((unsigned )ELF::R_MIPS_64, Type);
296- Type = setRType3 ((unsigned )ELF::R_MIPS_NONE, Type);
297- return Type;
298- }
299- return ELF::R_MIPS_GPREL32;
292+ return setRTypes (ELF::R_MIPS_GPREL32,
293+ is64Bit () ? ELF::R_MIPS_64 : ELF::R_MIPS_NONE,
294+ ELF::R_MIPS_NONE);
300295 case Mips::fixup_Mips_GPREL16:
301296 return ELF::R_MIPS_GPREL16;
302297 case Mips::fixup_Mips_26:
@@ -329,34 +324,16 @@ unsigned MipsELFObjectWriter::getRelocType(MCContext &Ctx,
329324 return ELF::R_MIPS_GOT_OFST;
330325 case Mips::fixup_Mips_GOT_DISP:
331326 return ELF::R_MIPS_GOT_DISP;
332- case Mips::fixup_Mips_GPOFF_HI: {
333- unsigned Type = (unsigned )ELF::R_MIPS_NONE;
334- Type = setRType ((unsigned )ELF::R_MIPS_GPREL16, Type);
335- Type = setRType2 ((unsigned )ELF::R_MIPS_SUB, Type);
336- Type = setRType3 ((unsigned )ELF::R_MIPS_HI16, Type);
337- return Type;
338- }
339- case Mips::fixup_MICROMIPS_GPOFF_HI: {
340- unsigned Type = (unsigned )ELF::R_MIPS_NONE;
341- Type = setRType ((unsigned )ELF::R_MICROMIPS_GPREL16, Type);
342- Type = setRType2 ((unsigned )ELF::R_MICROMIPS_SUB, Type);
343- Type = setRType3 ((unsigned )ELF::R_MICROMIPS_HI16, Type);
344- return Type;
345- }
346- case Mips::fixup_Mips_GPOFF_LO: {
347- unsigned Type = (unsigned )ELF::R_MIPS_NONE;
348- Type = setRType ((unsigned )ELF::R_MIPS_GPREL16, Type);
349- Type = setRType2 ((unsigned )ELF::R_MIPS_SUB, Type);
350- Type = setRType3 ((unsigned )ELF::R_MIPS_LO16, Type);
351- return Type;
352- }
353- case Mips::fixup_MICROMIPS_GPOFF_LO: {
354- unsigned Type = (unsigned )ELF::R_MIPS_NONE;
355- Type = setRType ((unsigned )ELF::R_MICROMIPS_GPREL16, Type);
356- Type = setRType2 ((unsigned )ELF::R_MICROMIPS_SUB, Type);
357- Type = setRType3 ((unsigned )ELF::R_MICROMIPS_LO16, Type);
358- return Type;
359- }
327+ case Mips::fixup_Mips_GPOFF_HI:
328+ return setRTypes (ELF::R_MIPS_GPREL16, ELF::R_MIPS_SUB, ELF::R_MIPS_HI16);
329+ case Mips::fixup_MICROMIPS_GPOFF_HI:
330+ return setRTypes (ELF::R_MICROMIPS_GPREL16, ELF::R_MICROMIPS_SUB,
331+ ELF::R_MICROMIPS_HI16);
332+ case Mips::fixup_Mips_GPOFF_LO:
333+ return setRTypes (ELF::R_MIPS_GPREL16, ELF::R_MIPS_SUB, ELF::R_MIPS_LO16);
334+ case Mips::fixup_MICROMIPS_GPOFF_LO:
335+ return setRTypes (ELF::R_MICROMIPS_GPREL16, ELF::R_MICROMIPS_SUB,
336+ ELF::R_MICROMIPS_LO16);
360337 case Mips::fixup_Mips_HIGHER:
361338 return ELF::R_MIPS_HIGHER;
362339 case Mips::fixup_Mips_HIGHEST:
0 commit comments