Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Port stack-cleaner/as in Python
[simgrid.git] / tools / stack-cleaner / compiler-wrapper
1 #!/usr/bin/env python
2 # Compiler wrapper with stack-cleaner support (enabled by default).
3 # Usage: ./compiler-wrapper target-compiler args [-f[no-]stack-cleaner]
4
5 import sys
6 import os
7 import re
8
9 compiler = sys.argv[1]
10 enabled = True
11 args = []
12
13 for arg in sys.argv[2:]:
14     if arg == "--help":
15         sys.stderr.write(
16             "Compiler wrapper with stack-cleaner.\n"
17             "Usage: {} compiler [-f[no-]stack-cleaner] [options]\n".format(sys.argv[0]))
18         sys.exit(0)
19     elif arg == "-fno-stack-cleaner":
20         enabled = False
21     elif arg == "-fstack-cleaner":
22         enabled = True
23     else:
24         args.append(arg)
25
26 if enabled:
27     if re.match("^clang", os.path.basename(compiler)):
28         args.insert(0, "-no-integrated-as")
29     args.insert(0, os.path.dirname(sys.argv[0]))
30     args.insert(0, "-B")
31 args.insert(0, compiler)
32
33 os.execvp(args[0], args)
34 sys.stderr.write("compiler-wrapper: Could not exec\n")
35 os.exit(1)