@Override
	public Long getGOTValue() {
		ElfHeader header = getElfHeader();
		ElfDynamicTable dynamic = header.getDynamicTable();
		if (dynamic != null && dynamic.containsDynamicValue(ElfDynamicType.DT_PLTGOT)) {
			try {
				return header.adjustAddressForPrelink(
					dynamic.getDynamicValue(ElfDynamicType.DT_PLTGOT)) +
					getImageBaseWordAdjustmentOffset();
			}
			catch (NotFoundException e) {
				throw new AssertException("unexpected", e);
			}
		}
		Symbol gotSym = SymbolUtilities.getLabelOrFunctionSymbol(program,
			ElfConstants.GOT_SYMBOL_NAME, err -> log(err));
		if (gotSym != null) {
			return gotSym.getAddress().getAddressableWordOffset();
		}
		return null;
	}
Process the specified program header by ensuring that it has a suitable memory address assigned
and added to the memory resolver.
@param elfProgramHeader ELF program header to be processed
@param segmentNumber program header index number
@throws AddressOutOfBoundsException if an invalid memory address is encountered
Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/ElfProgramBuilder.java