private void processPpcVleSections(ElfLoadHelper elfLoadHelper, TaskMonitor monitor)
			throws CancelledException {

		// TODO: Check language ID for VLE ":VLE"

		Program program = elfLoadHelper.getProgram();
		LanguageID langID = program.getLanguageID();
		if (langID.toString().indexOf(":VLE") < 0) {
			return; // non VLE variant
		}

		Register vleContextReg = program.getRegister("vle");
		if (vleContextReg == null || !vleContextReg.isProcessorContext()) {
			elfLoadHelper.log("ERROR: failed to locate 'vle' context register field");
			return;
		}

		monitor.setMessage("Checking for VLE sections...");

		RegisterValue enableVLE = new RegisterValue(vleContextReg, BigInteger.ONE);

		ElfHeader elf = elfLoadHelper.getElfHeader();
		if (elf.getSectionHeaderCount() != 0) {
			// Rely on section headers if present
			for (ElfSectionHeader section : elf.getSections(
				ElfSectionHeaderConstants.SHT_PROGBITS)) {
				monitor.checkCancelled();
				if ((section.getFlags() & SHF_PPC_VLE) == 0) {
					continue;
				}
				enableVLE(section, enableVLE, elfLoadHelper);
			}
		}
		else {
			for (ElfProgramHeader segment : elf.getProgramHeaders(
				ElfProgramHeaderConstants.PT_LOAD)) {
				monitor.checkCancelled();
				if ((segment.getFlags() & PF_PPC_VLE) == 0) {
					continue;
				}
				enableVLE(segment, enableVLE, elfLoadHelper);
			}
		}
	}
Identify PowerPC VLE sections and set the 'vle' context bit to enable
proper code disassembly.
@param elfLoadHelper Elf load helper object
@param monitor task monitor
@throws CancelledException
Ghidra/Processors/PowerPC/src/main/java/ghidra/app/util/bin/format/elf/extend/PowerPC_ElfExtension.java