private void checkForGlobalGP(Program program, AddressSetView set, TaskMonitor monitor) {
		// don't want to check for it
		if (!discoverGlobalGPSetting) {
			return;
		}

		// TODO: Use gp_value provided by MIPS .reginfo or dynamic attributes - check for Elf loader symbol
		// see MIPS_ElfExtension.MIPS_GP_VALUE_SYMBOL
		Symbol symbol = SymbolUtilities.getLabelOrFunctionSymbol(program, "_mips_gp_value",
			err -> Msg.error(this, err));
		if (symbol != null) {
			gp_assumption_value = symbol.getAddress();
			return;
		}

		if (set != null && !set.isEmpty()) {
			// if GP is already Set, don't go looking for a value.
			AddressRangeIterator registerValueAddressRanges =
				program.getProgramContext().getRegisterValueAddressRanges(gp);
			while (registerValueAddressRanges.hasNext()) {
				// but set it so we know if the value we are assuming actually changes
				AddressRange next = registerValueAddressRanges.next();
				if (set.contains(next.getMinAddress(), next.getMaxAddress())) {
					RegisterValue registerValue =
						program.getProgramContext().getRegisterValue(gp, next.getMinAddress());
					gp_assumption_value = next.getMinAddress().getNewAddress(
						registerValue.getUnsignedValue().longValue());
					return;
				}
			}
		}

		// look for the global _gp variable set by ELF binaries

		symbol =
			SymbolUtilities.getLabelOrFunctionSymbol(program, "_gp", err -> Msg.error(this, err));
		if (symbol == null) {
			symbol = SymbolUtilities.getLabelOrFunctionSymbol(program, "_GP",
				err -> Msg.error(this, err));
		}

		if (symbol != null) {
			gp_assumption_value = symbol.getAddress();
		}

		// look for any setting of _gp_# variables
		Symbol s1 =
			SymbolUtilities.getLabelOrFunctionSymbol(program, "_gp_1", err -> Msg.error(this, err));
		if (s1 == null) {
			return;
		}
		// if we found a _gp symbol we set, and there is a global symbol, something is amiss
		if (gp_assumption_value != null && s1.getAddress().equals(gp_assumption_value)) {
			gp_assumption_value = null;
			return;
		}
		Symbol s2 =
			SymbolUtilities.getLabelOrFunctionSymbol(program, "_gp_2", err -> Msg.error(this, err));
		if (s2 == null) {
			// if there is only 1, assume can use the value for now
			gp_assumption_value = s1.getAddress();
		}
		return;
	}
Check for a global GP register symbol or discovered symbol
@param set
Ghidra/Processors/MIPS/src/main/java/ghidra/app/plugin/core/analysis/MipsAddressAnalyzer.java