Index: tools/checkers/vcc.py
===================================================================
--- tools/checkers/vcc.py	(revision 96e7a94a8203abe8958d286980bc7d5547486761)
+++ tools/checkers/vcc.py	(revision ee42e43c628b18c45323f958209e636e51f1bfd0)
@@ -36,13 +36,16 @@
 import subprocess
 import jobfile
+import re
 
 jobs = [
-	"kernel/kernel.job",
-	"uspace/srv/clip/clip.job"
+	"kernel/kernel.job"
 ]
+
+re_attribute = re.compile("__attribute__\s*\(\(.*\)\)")
+re_va_list = re.compile("__builtin_va_list")
 
 def usage(prname):
 	"Print usage syntax"
-	print prname + " <ROOT>"
+	print prname + " <ROOT> [VCC_PATH]"
 
 def cygpath(upath):
@@ -68,7 +71,19 @@
 	
 	for line in preproc.splitlines():
+		
 		# Ignore preprocessor directives
+		
 		if (line.startswith('#')):
 			continue
+		
+		# Remove __attribute__((.*)) GCC extension
+		
+		line = re.sub(re_attribute, "", line)
+		
+		# Ignore unsupported __builtin_va_list type
+		# (a better solution replacing __builrin_va_list with
+		# an emulated implementation is needed)
+		
+		line = re.sub(re_va_list, "void *", line)
 		
 		tmpf.write("%s\n" % line)
@@ -80,5 +95,5 @@
 	return True
 
-def vcc(root, job):
+def vcc(vcc_path, root, job):
 	"Run Vcc on a jobfile"
 	
@@ -120,4 +135,7 @@
 		tmpfqname = os.path.join(base, tmpfname)
 		
+		vccfname = "%s.i" % srcfname
+		vccfqname = os.path.join(base, vccfname);
+		
 		# Only C files are interesting for us
 		if (tool != "cc"):
@@ -130,14 +148,16 @@
 		
 		# Run Vcc
+		print " -- %s --" % srcfname		
+		retval = subprocess.Popen([vcc_path, cygpath(tmpfqname)]).wait()
 		
-		retval = subprocess.Popen(['vcc', cygpath(tmpfqname)]).wait()
+		if (retval != 0):
+			return False
 		
-		# Cleanup
+		# Cleanup, but only if verification was successful
+		# (to be able to examine the preprocessed file)
 		
 		if (os.path.isfile(tmpfqname)):
 			os.remove(tmpfqname)
-		
-		if (retval != 0):
-			return False
+			os.remove(vccfqname)
 	
 	return True
@@ -149,4 +169,14 @@
 	
 	rootdir = os.path.abspath(sys.argv[1])
+	if (len(sys.argv) > 2):
+		vcc_path = sys.argv[2]
+	else:
+		vcc_path = "/cygdrive/c/Program Files (x86)/Microsoft Research/Vcc/Binaries/vcc"
+	
+	if (not os.path.isfile(vcc_path)):
+		print "%s is not a binary." % vcc_path
+		print "Please supply the full Cygwin path to Vcc as the second argument."
+		return
+	
 	config = os.path.join(rootdir, "HelenOS.config")
 	
@@ -157,5 +187,5 @@
 	
 	for job in jobs:
-		if (not vcc(rootdir, job)):
+		if (not vcc(vcc_path, rootdir, job)):
 			print
 			print "Failed job: %s" % job
