private static NotePropertyElement readNextNotePropertyElement(BinaryReader reader, int intSize)
			throws IOException {
		int prType = reader.readNextInt();
		int prDatasz = reader.readNextUnsignedIntExact();
		long dataStart = reader.getPointerIndex();

		String typeName;
		String value = "???";
		switch (prType) {
			case GNU_PROPERTY_STACK_SIZE: {
				typeName = "stack_size";
				long tmp = reader.readNextUnsignedValue(intSize);
				value = "%d (0x%08x)".formatted(tmp, tmp);
				break;
			}
			case GNU_PROPERTY_NO_COPY_ON_PROTECTED:
				typeName = "no_copy_on_protected";
				value = "set";
				break;
			default:
				if (GNU_PROPERTY_LOPROC <= prType && prType <= GNU_PROPERTY_HIPROC) {
					typeName = "processor opt 0x%08x".formatted(prType);
				}
				else if (GNU_PROPERTY_LOUSER <= prType && prType <= GNU_PROPERTY_HIUSER) {
					typeName = "app opt 0x%08x".formatted(prType);
				}
				else {
					typeName = "unknown opt 0x%08x".formatted(prType);
				}
				if (prDatasz > 0) {
					byte[] valueBytes = reader.readNextByteArray(prDatasz);
					value = NumericUtilities.convertBytesToString(valueBytes, " ");
				}
		}
		// TODO: the logic for getting to next element isn't well tested and the docs are not very
		// clear.
		reader.setPointerIndex(dataStart + prDatasz);
		reader.align(intSize);

		return new NotePropertyElement(prType, typeName, value, prDatasz);
	}
Contains the information of an individual note property.
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/elf/info/NoteGnuProperty.java