@Override
	public RelocationResult relocate(Address address, CoffRelocation relocation,
			CoffRelocationContext relocationContext)
			throws MemoryAccessException, RelocationException {

		Program program = relocationContext.getProgram();
		Memory mem = program.getMemory();

		int byteLength = 4; // most relocations affect 4-bytes (change if different)

		int bytesToAdjust = mem.getInt(address);
		Address symbolAddr = relocationContext.getSymbolAddress(relocation);
		switch (relocation.getType()) {

			case IMAGE_REL_ARM_ABSOLUTE:
				return RelocationResult.SKIPPED;

			case IMAGE_REL_ARM_ADDR32:
				mem.setInt(address, (int) symbolAddr.getOffset());
				break;

			case IMAGE_REL_ARM_ADDR32NB:
				mem.setInt(address, (int) symbolAddr.getOffset());
				break;

			case IMAGE_REL_THUMB_MOV32:
				int symAddress = (int) symbolAddr.getOffset();
				long highImmed16 = getImmed16(symAddress >> 16);
				long lowImmed16 = getImmed16(symAddress & 0xffff);
				long longBytesToAdjust = mem.getLong(address);
				longBytesToAdjust = longBytesToAdjust | (highImmed16 << 32) | lowImmed16;
				byteLength = 8;
				mem.setLong(address, longBytesToAdjust);
				break;

			case IMAGE_REL_THUMB_BRANCH24:
				int displacement = (int) symbolAddr.subtract(address) - 4;
				int adjustment = getThAddr24(displacement);
				bytesToAdjust = bytesToAdjust & 0xd000f800;
				int adjusted = bytesToAdjust | adjustment;
				mem.setInt(address, adjusted);
				break;

			case IMAGE_REL_THUMB_BLX23:
				displacement = (int) symbolAddr.subtract(address) - 4;
				adjustment = getThAddr24(displacement);
				bytesToAdjust = bytesToAdjust & 0xd000f800;
				adjusted = bytesToAdjust | adjustment;
				mem.setInt(address, adjusted);
				break;

			default: {
				return RelocationResult.UNSUPPORTED;
			}
		}
		return new RelocationResult(Status.APPLIED, byteLength);
	}
Instruction fixed up with the 25-bit relative displacement to target
(which is 4-byte aligned)
Ghidra/Processors/ARM/src/main/java/ghidra/app/util/bin/format/coff/relocation/ARM_CoffRelocationHandler.java