Author: Alecsandru Patrascu <[email protected]>
Branch: nopax_update1
Changeset: r91936:41d9025e47f4
Date: 2017-06-20 14:37 +0300
http://bitbucket.org/pypy/pypy/changeset/41d9025e47f4/
Log: updates after review
diff --git a/rpython/config/translationoption.py
b/rpython/config/translationoption.py
--- a/rpython/config/translationoption.py
+++ b/rpython/config/translationoption.py
@@ -4,7 +4,6 @@
from rpython.config.config import ChoiceOption, StrOption, Config,
ConflictConfigError
from rpython.config.config import ConfigError
from rpython.config.support import detect_number_of_processors
-from rpython.config.support import detect_pax
from rpython.translator.platform import platform as compiler
@@ -146,9 +145,6 @@
BoolOption("profopt", "Enable profile guided optimization. Defaults to
enabling this for PyPy. For other training workloads, please specify them in
profoptargs",
cmdline="--profopt", default=False),
StrOption("profoptargs", "Absolute path to the profile guided optimization
training script + the necessary arguments of the script",
cmdline="--profoptargs", default=None),
- BoolOption("nopax", "Use this in case your system comes with a PAX
protection. --nopax will disable it for pypy, so that it can use the jit.
Requires paxmark to be installed",
- default=detect_pax(),
- cmdline="--nopax"),
BoolOption("instrument", "internal: turn instrumentation on",
default=False, cmdline=None),
BoolOption("countmallocs", "Count mallocs and frees", default=False,
diff --git a/rpython/translator/c/genc.py b/rpython/translator/c/genc.py
--- a/rpython/translator/c/genc.py
+++ b/rpython/translator/c/genc.py
@@ -14,6 +14,7 @@
from rpython.translator.gensupp import uniquemodulename, NameManager
from rpython.translator.tool.cbuild import ExternalCompilationInfo
+
_CYGWIN = sys.platform == 'cygwin'
_CPYTHON_RE = py.std.re.compile('^Python 2.[567]')
@@ -333,8 +334,6 @@
extra_opts = []
if self.config.translation.profopt:
extra_opts += ["profopt"]
- if self.config.translation.nopax:
- extra_opts += ["nopax"]
if self.config.translation.make_jobs != 1:
extra_opts += ['-j', str(self.config.translation.make_jobs)]
if self.config.translation.lldebug:
@@ -386,7 +385,7 @@
raise Exception("No profoptargs specified, neither in the
command line, nor in the target. If the target is not PyPy, please specify
profoptargs")
if self.config.translation.shared:
mk.rule('$(PROFOPT_TARGET)', '$(TARGET) main.o',
- '$(CC_LINK) $(LDFLAGS_LINK) main.o -L.
-l$(SHARED_IMPORT_LIB) -o $@ $(RPATH_FLAGS) -lgcov')
+ ['$(CC_LINK) $(LDFLAGS_LINK) main.o -L.
-l$(SHARED_IMPORT_LIB) -o $@ $(RPATH_FLAGS) -lgcov', '$(MAKE) postcompile
BIN=$(PROFOPT_TARGET)'])
else:
mk.definition('PROFOPT_TARGET', '$(TARGET)')
@@ -398,15 +397,6 @@
'$(MAKE) CFLAGS="-fprofile-use -fprofile-correction -fPIC
$(CFLAGS) -fno-lto" LDFLAGS="-fprofile-use $(LDFLAGS) -fno-lto"
$(PROFOPT_TARGET)',
]))
- # No-pax code
- if self.config.translation.nopax:
- mk.definition('PAX_TARGET', '%s' % (exe_name))
- rules.append(('$(PAX_TARGET)', '$(TARGET) main.o', [
- '$(CC_LINK) $(LDFLAGS_LINK) main.o -L.
-l$(SHARED_IMPORT_LIB) -o $@ $(RPATH_FLAGS)',
- 'attr -q -s pax.flags -V m $(PAX_TARGET)']))
- mk.rule('nopax', '',
- '$(MAKE) CFLAGS="$(CFLAGS) $(CFLAGSEXTRA)"
LDFLAGS="$(LDFLAGS)" $(PAX_TARGET)')
-
for rule in rules:
mk.rule(*rule)
diff --git a/rpython/translator/platform/posix.py
b/rpython/translator/platform/posix.py
--- a/rpython/translator/platform/posix.py
+++ b/rpython/translator/platform/posix.py
@@ -3,6 +3,7 @@
import py, os, sys
from rpython.translator.platform import Platform, log, _run_subprocess
+from rpython.config.support import detect_pax
import rpython
rpydir = str(py.path.local(rpython.__file__).join('..'))
@@ -196,9 +197,17 @@
for args in definitions:
m.definition(*args)
+ # Post compile rule to be executed after a TARGET is ran
+ #
+ # Some processing might be necessary on the resulting binary,
+ # which is received in $(BIN) parameter
+ postcompile_rule = ('postcompile', '', ['true'])
+ if detect_pax():
+ postcompile_rule[2].append('attr -q -s pax.flags -V m $(BIN)')
+
rules = [
('all', '$(DEFAULT_TARGET)', []),
- ('$(TARGET)', '$(OBJECTS)', '$(CC_LINK) $(LDFLAGSEXTRA) -o $@
$(OBJECTS) $(LIBDIRS) $(LIBS) $(LINKFILES) $(LDFLAGS)'),
+ ('$(TARGET)', '$(OBJECTS)', ['$(CC_LINK) $(LDFLAGSEXTRA) -o $@
$(OBJECTS) $(LIBDIRS) $(LIBS) $(LINKFILES) $(LDFLAGS)', '$(MAKE) postcompile
BIN=$(TARGET)']),
('%.o', '%.c', '$(CC) $(CFLAGS) $(CFLAGSEXTRA) -o $@ -c $<
$(INCLUDEDIRS)'),
('%.o', '%.s', '$(CC) $(CFLAGS) $(CFLAGSEXTRA) -o $@ -c $<
$(INCLUDEDIRS)'),
('%.o', '%.cxx', '$(CXX) $(CFLAGS) $(CFLAGSEXTRA) -o $@ -c $<
$(INCLUDEDIRS)'),
@@ -207,6 +216,8 @@
for rule in rules:
m.rule(*rule)
+ m.rule(*postcompile_rule)
+
if shared:
m.definition('SHARED_IMPORT_LIB', libname),
m.definition('PYPY_MAIN_FUNCTION', "pypy_main_startup")
@@ -216,7 +227,7 @@
'int main(int argc, char* argv[]) '
'{ return $(PYPY_MAIN_FUNCTION)(argc, argv); }" > $@')
m.rule('$(DEFAULT_TARGET)', ['$(TARGET)', 'main.o'],
- '$(CC_LINK) $(LDFLAGS_LINK) main.o -L.
-l$(SHARED_IMPORT_LIB) -o $@ $(RPATH_FLAGS)')
+ ['$(CC_LINK) $(LDFLAGS_LINK) main.o -L.
-l$(SHARED_IMPORT_LIB) -o $@ $(RPATH_FLAGS)', '$(MAKE) postcompile
BIN=$(DEFAULT_TARGET)'])
return m
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit