public void markupSourceFileInfo() {
		GoModuledata moduledata = getModuledata();
		if (moduledata == null) {
			return;
		}
		Program program = programContext.getProgram();
		SourceFileManager sfman = program.getSourceFileManager();

		try {
			GoPcValueEvaluator fileEval = new GoPcValueEvaluator(this, pcfile);
			GoPcValueEvaluator lineEval = new GoPcValueEvaluator(this, pcln);

			long startpc = entry;
			long prevFilenum = -1;
			int lineNum;
			while ((lineNum = lineEval.evalNext()) > 0) {
				int fileNum = fileEval.eval(startpc);
				if (fileNum < 0) {
					break;
				}
				fileEval.reset();

				if (fileNum != prevFilenum) {
					prevFilenum = fileNum;
					String fileName = getSourceFilename(fileNum);
					if (!GoConstants.GOLANG_AUTOGENERATED_FILENAME.equals(fileName)) {
						fileName = FSUtilities.normalizeNativePath(fileName);

						Address startAddr = programContext.getCodeAddress(startpc);
						long len = lineEval.getPC() - startpc;

						SourceFile sourceFile = new SourceFile(fileName);
						try {

							sfman.addSourceFile(sourceFile);
							sfman.addSourceMapEntry(sourceFile, lineNum, startAddr, len);
						}
						catch (AddressOverflowException | IllegalArgumentException e) {
							Msg.error(this, "Failed to add source file mapping", e);
						}
					}
				}
				startpc = lineEval.getPC();
			}
		}
		catch (LockException | IOException e) {
			Msg.error(this, "Failed to set source file info", e);
		}
	}
Returns information about the source file that this function was defined in.

@return {@link GoSourceFileInfo}, or null if no source file info present
@throws IOException if error reading lookup data
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/rtti/GoFuncData.java