@Override
	protected boolean addReference(Program program, Instruction instr, int opIndex,
			AddressSpace space, Scalar scalar) {
		if (program.getExecutableFormat().equals(ElfLoader.ELF_NAME)) {
			if (instr.getMnemonicString().equalsIgnoreCase("add")) {
				try {
					Address gotAddr = instr.getMinAddress().add(scalar.getUnsignedValue());
					MemoryBlock block = program.getMemory().getBlock(gotAddr);
					if (block != null) {
						if (block.getName().indexOf(".got") >= 0) {
							return false;
						}
					}
				}
				catch (AddressOutOfBoundsException e) {
				}
			}
			else if (instr.getMnemonicString().equalsIgnoreCase("push")) {
				MemoryBlock block = program.getMemory().getBlock(instr.getMinAddress());
				if (block.getName().indexOf(".plt") >= 0) {
					return false;
				}
			}
		}
		return super.addReference(program, instr, opIndex, space, scalar);
	}
1) If the instruction's min address plus the scalar equals 
   an address inside the ".got" section, then the scalar 
   is NOT an address and a reference should not be created.

2) If the instruction is a push and it's min address is inside the ".plt"
   section, then the scalar is not a memory reference.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/ElfScalarOperandAnalyzer.java