Index: src/untrusted/irt/irt.gyp |
diff --git a/src/untrusted/irt/irt.gyp b/src/untrusted/irt/irt.gyp |
index d71264221a23620b55bd17556acedcfa9386fb7f..5ee5ae7a8deca6ac3bb4464a40f346a912ab6906 100644 |
--- a/src/untrusted/irt/irt.gyp |
+++ b/src/untrusted/irt/irt.gyp |
@@ -43,6 +43,17 @@ |
'../nacl/sys_private.c', |
'../valgrind/dynamic_annotations.c', |
], |
+# On x86-64 we build the IRT with sandbox base-address hiding. This means that |
Mark Seaborn
2015/03/19 20:54:48
Nit: indent comment
Derek Schuff
2015/03/19 21:28:30
Done.
|
+# all of its components must be built with LLVM's assembler. Currently the |
+# unwinder library is built with nacl-gcc and so does not use base address |
+# hiding. The IRT does not use exceptions, so we do not actually need the |
+# unwinder at all. To prevent it from being linked into the IRT, we provide |
+# stub implementations of its functions that are referenced from libc++abi |
+# (which is built with exception handling enabled) and from crtbegin.c. |
+ 'stub_sources': [ |
+ '../../../pnacl/support/bitcode/unwind_stubs.c', |
+ 'frame_info_stubs.c', |
+ ], |
'irt_nonbrowser': [ |
'irt_core_resource.c', |
'irt_entry_core.c', |
@@ -89,7 +100,16 @@ |
'build_newlib': 1, |
'build_irt': 1, |
}, |
- 'sources': ['<@(irt_sources)'], |
+ 'sources': ['<@(irt_sources)','<@(stub_sources)'], |
Mark Seaborn
2015/03/19 20:54:48
Nit: add space after comma
Derek Schuff
2015/03/19 21:28:30
Done.
|
+ 'conditions': [ |
+ # Disable stub sources on ARM |
+ # TODO(dschuff): remove this when we switch to arm-nacl-clang |
+ ['target_arch=="arm"', { |
+ 'variables': { |
+ 'stub_sources' : [] |
Mark Seaborn
2015/03/19 20:54:48
Nit: would it be more idiomatic for the condition
Derek Schuff
2015/03/19 21:28:30
I tried that, but maybe I didn't get the gyp synta
|
+ } |
+ }], |
+ ], |
'dependencies': [ |
'<(DEPTH)/native_client/tools.gyp:prep_toolchain', |
'<(DEPTH)/native_client/src/untrusted/nacl/nacl.gyp:nacl_lib_newlib', |