private Set<RelocationFixup> getRelocationFixups(SegmentedAddressSpace space,
			MzExecutable mz, MessageLog log, TaskMonitor monitor) throws CancelledException {
		Set<RelocationFixup> fixups = new HashSet<>();

		OldDOSHeader header = mz.getHeader();
		BinaryReader reader = mz.getBinaryReader();

		for (MzRelocation relocation : mz.getRelocations()) {
			monitor.checkCancelled();

			int seg = relocation.getSegment();
			int off = relocation.getOffset();

			int relocationFileOffset = addressToFileOffset(seg, off, header);
			SegmentedAddress relocationAddress =
				space.getAddress((INITIAL_SEGMENT_VAL + seg) & 0xffff, off);

			try {
				int value = Short.toUnsignedInt(reader.readShort(relocationFileOffset));
				int relocatedSegment = (INITIAL_SEGMENT_VAL + value) & 0xffff;
				fixups.add(new RelocationFixup(relocation, relocationAddress, relocationFileOffset,
					relocatedSegment, true));
			}
			catch (AddressOutOfBoundsException | IOException e) {
				fixups.add(new RelocationFixup(relocation, relocationAddress, relocationFileOffset,
					0, false));
				log.appendMsg(String.format("Failed to process relocation: %s (%s)",
					relocationAddress, e.getMessage()));
			}
		}

		return fixups;
	}
Gets a {@link Set} of {@link RelocationFixup relocation fixups}, adjusted to where the image
is loaded into memory

@param space The address space
@param mz The {@link MzExecutable}
@param monitor A monitor
@return A {@link Set} of {@link RelocationFixup relocation fixups}, adjusted to where the 
  image is loaded into memory
@throws CancelledException If the action was cancelled
Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/MzLoader.java