private RelocationResult doRelocate(ElfRelocation relocation, Address relocationAddress,
			int relocType, int symbolIndex) throws MemoryAccessException {

		if (relocType == 0) {
			return RelocationResult.SKIPPED;
		}

		ElfSymbol elfSymbol = getSymbol(symbolIndex);
		Address symbolAddr = getSymbolAddress(elfSymbol);
		long symbolValue = getSymbolValue(elfSymbol);
		String symbolName = elfSymbol != null ? elfSymbol.getNameAsString() : null;

		MIPS_ElfRelocationType relocationType = handler.getRelocationType(relocType);
		if (relocationType == null) {
			handler.markAsUndefined(program, relocationAddress, relocType, symbolName, symbolIndex,
				getLog());
			return RelocationResult.UNSUPPORTED;
		}

		return handler.relocate(this, relocation, relocationType, relocationAddress,
			getSymbol(symbolIndex), symbolAddr, symbolValue, symbolName);
	}
{@link MIPS_ElfRelocationContext} provides extended relocation context with the ability
to retain deferred relocation lists.  In addition, the ability to generate a section GOT
table is provided to facilitate relocations encountered within object modules.
Ghidra/Processors/MIPS/src/main/java/ghidra/app/util/bin/format/elf/relocation/MIPS_ElfRelocationContext.java