private void createGot() {
		if (lastSectionGotEntryAddress == null) {
			return;
		}
		int size = (int) lastSectionGotEntryAddress.subtract(sectionGotAddress) + 1;
		String blockName = getSectionGotName();
		try {
			MemoryBlock block = MemoryBlockUtils.createInitializedBlock(program, false, blockName,
				sectionGotAddress, size,
				"NOTE: This block is artificial and allows ELF Relocations to work correctly",
				"Elf Loader", true, false, false, loadHelper.getLog());

			// Mark block as an artificial fabrication
			block.setArtificial(true);

			DataConverter converter =
				program.getMemory().isBigEndian() ? BigEndianDataConverter.INSTANCE
						: LittleEndianDataConverter.INSTANCE;
			for (long symbolValue : gotMap.keySet()) {
				Address addr = gotMap.get(symbolValue);
				byte[] bytes;
				if (program.getDefaultPointerSize() == 4) {
					bytes = converter.getBytes((int) symbolValue);
				}
				else {
					bytes = converter.getBytes(symbolValue);
				}
				block.putBytes(addr, bytes);
				loadHelper.createData(addr, PointerDataType.dataType);
			}
		}
		catch (MemoryAccessException e) {
			throw new AssertException(e); // unexpected
		}
	}
Flush the section GOT table to a new %got memory block
Ghidra/Processors/MIPS/src/main/java/ghidra/app/util/bin/format/elf/relocation/MIPS_ElfRelocationContext.java