public static DWARFLocationListHeader read(BinaryReader reader, int defaultIntSize)
			throws IOException {
		// length : dwarf_length
		// version : 2 bytes
		// address_size : 1 byte
		// segment_selector_size : 1 byte
		// offset entry count: 4 bytes
		// offsets : array of elements that are dwarf_format_int sized

		long startOffset = reader.getPointerIndex();
		DWARFLengthValue lengthInfo = DWARFLengthValue.read(reader, defaultIntSize);
		if (lengthInfo == null) {
			return null;
		}

		long endOffset = reader.getPointerIndex() + lengthInfo.length();
		short version = reader.readNextShort();
		if (version < 5) {
			throw new DWARFException(
				"DWARFLocationListHeader (0x%x): unsupported DWARF version [%d]"
						.formatted(startOffset, version));
		}
		int addressSize = reader.readNextUnsignedByte();
		int segmentSelectorSize = reader.readNextUnsignedByte();
		int offsetEntryCount = reader.readNextUnsignedIntExact();
		long offsetListPosition = reader.getPointerIndex();

		reader.setPointerIndex(endOffset);
		if (segmentSelectorSize != 0) {
			throw new IOException("Unsupported segmentSelectorSize: " + segmentSelectorSize);
		}

		return new DWARFLocationListHeader(startOffset, endOffset, offsetListPosition,
			lengthInfo.intSize(), offsetEntryCount, addressSize, segmentSelectorSize);
	}
Header found at the start of a set of DWARFLocationList entries, which are stored sequentially
in the {@link DWARFSectionNames#DEBUG_LOCLISTS .debug_loclists} section.
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/dwarf/DWARFLocationListHeader.java