public long findImageBase() {

		// FIXME! This needs to be consistent with the getImageBase() method
		// which currently considers prelink. 

		long minBase = -1;
		int n = Math.min(e_phnum, MAX_HEADERS_TO_CHECK_FOR_IMAGEBASE);
		for (int i = 0; i < n; ++i) {
			long index = e_phoff + (i * e_phentsize);
			if (!providerContainsRegion(index, e_phentsize)) {
				break;
			}
			try {
				int headerType = reader.readInt(index);
				if (headerType == ElfProgramHeaderConstants.PT_LOAD) {
					ElfProgramHeader header = new ElfProgramHeader(reader.clone(index), this);
					minBase = getMinBase(header.getVirtualAddress(), minBase);
				}
			}
			catch (IOException e) {
				// skip
			}
		}
		return minBase == -1 ? 0 : minBase;
	}
Inspect the Elf image and determine the default image base prior 
to any parse method being invoked (i.e., only the main Elf
header structure has been parsed during initialization.
The image base is the virtual address of the PT_LOAD program header
with the smallest address or 0 if no program headers exist.  By default,
the image base address should be treated as a addressable unit offset.
@return preferred image base
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/elf/ElfHeader.java