aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xscripts/klee-gcc35
1 files changed, 35 insertions, 0 deletions
diff --git a/scripts/klee-gcc b/scripts/klee-gcc
new file mode 100755
index 00000000..3ed4c23a
--- /dev/null
+++ b/scripts/klee-gcc
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+
+import os, sys
+
+def isLinkCommand():
+ # Look for '-Wl,' as a signal that we are calling the linker. What a hack.
+ for arg in sys.argv:
+ if arg.startswith('-Wl,'):
+ return True
+
+def main():
+ if not isLinkCommand():
+ os.execvp("llvm-gcc", ["llvm-gcc", "-emit-llvm"] + sys.argv[1:])
+ return 1
+
+ # Otherwise, strip out arguments that llvm-ld doesn't understand. I don't
+ # want my previous explicit declaration of hackyness to imply that this bit
+ # of code here is not also a complete and total hack, it is.
+ args = sys.argv[1:]
+ linkArgs = []
+ for a in args:
+ if a in ('-g', '-W', '-O', '-D', '-f',
+ '-fnested-functions', '-pthread'):
+ continue
+ elif a.startswith('-Wl,'):
+ continue
+
+ linkArgs.append(a)
+
+ os.execvp("llvm-ld", ["llvm-ld", "--disable-opt"] + linkArgs)
+ return 1
+
+if __name__ == '__main__':
+ main()
+