private void processLoaderStringTable(LoaderInfoHeader loader) throws Exception {
		monitor.setMessage("Processing loader string table...");

		Address start =
			toAddr(loader.getLoaderStringsOffset() + loader.getSection().getContainerOffset());
		Address end =
			toAddr(loader.getExportHashOffset() + loader.getSection().getContainerOffset());

		createFragment("LoaderStringTable", start, end.subtract(start) + 1);

		List<ImportedLibrary> importedLibraries = loader.getImportedLibraries();
		for (ImportedLibrary library : importedLibraries) {
			Address current = start.add(library.getNameOffset());
			CreateStringCmd cmd = new CreateStringCmd(current, -1, false);
			cmd.applyTo(currentProgram);
		}

		List<ImportedSymbol> symbols = loader.getImportedSymbols();
		for (ImportedSymbol symbol : symbols) {
			Address current = start.add(symbol.getSymbolNameOffset());
			CreateStringCmd cmd = new CreateStringCmd(current, -1, false);
			cmd.applyTo(currentProgram);
		}

		List<ExportedSymbolKey> exportedKeys = loader.getExportedSymbolKeys();
		List<ExportedSymbol> exportedSymbols = loader.getExportedSymbols();
		for (int i = 0; i < exportedSymbols.size(); ++i) {
			Address current = start.add(exportedSymbols.get(i).getNameOffset());
			CreateStringCmd cmd =
				new CreateStringCmd(current, exportedKeys.get(i).getNameLength(), false);
			cmd.applyTo(currentProgram);
		}
	}
The loader string table contains strings that specify
the names of imported and exported symbols and imported libraries.
Strings for imported symbols and libraries must be null terminated,
but strings for exported symbols do not have this requirement.
The length is determined using the upper-16 of the hash value.
Ghidra/Features/Base/src/main/java/ghidra/app/cmd/formats/PefBinaryAnalysisCommand.java