Node iOS ports - hewigovens/hewigovens.github.com GitHub Wiki
##Draft
由于iOS的安全特性,只允许分配PROT_READ | PROT_EXEC or PROT_READ | PROT_WRITE的内存区域,所以v8的JIT基本上就废了(除非越狱),这也是Chrome在iOS上使用的是JavaScriptCore的原因;目前唯一的例外是MobileSafari,JIT是可以work的(所谓的dynamic signing),可以看到Apple在速度和安全性上的权衡。
##References
- http://reverse.put.as/wp-content/uploads/2011/06/syscan11_breaking_ios_code_signing.pdf
- http://www.amazon.com/iOS-Hackers-Handbook-Charlie-Miller/dp/1118204123
- https://github.com/TooTallNate/node/tree/iphone-build-v0.8
- https://code.google.com/p/v8/issues/detail?id=1312
0. patch
../deps/v8/src/arm/constants-arm.h:33:2: error: #error ARM EABI support is required.
1.xcode_emulation.py remove all -arch i386, minversion 10.5
2.modify node.gyp v8.gyp add /usr/include/c++/4.2.1
3.v8/platform-macosx.cc change asm("bkpt") to asm("trap")
http://stackoverflow.com/questions/4970841/equivalent-of-int-3-on-arm-ios-processors
http://stackoverflow.com/questions/3644465/can-i-create-a-breakpoint-in-code-in-ios-like-asmint-3-on-vc-and-conti
https://code.google.com/p/v8/issues/detail?id=1312
4.ldid -S mksnapshot