protected void processSectionRelocations() throws CancelledException {
		LinkedHashMap<RelocationInfo, Address> relocationMap = new LinkedHashMap<>();
		for (Section section : machoHeader.getAllSections()) {
			monitor.checkCancelled();

			MemoryBlock sectionMemoryBlock = getMemoryBlock(section);
			if (sectionMemoryBlock == null) {
				if (section.getNumberOfRelocations() > 0) {
					log.appendMsg("Unable to process relocations for " + section.getSectionName() +
						". No memory block was created.");
				}
				continue;
			}
			List<RelocationInfo> relocations = section.getRelocations();
			monitor.initialize(relocations.size(), "Processing section relocations...");
			for (RelocationInfo relocationInfo : relocations) {
				monitor.increment();
				Address address = sectionMemoryBlock.getStart().add(relocationInfo.getAddress());
				relocationMap.put(relocationInfo, address);
			}
		}
		performRelocations(relocationMap);
	}
Processes the section relocations from all {@link Section}s.

@throws CancelledException if the operation was cancelled.
Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/MachoProgramBuilder.java