]> git.saurik.com Git - cycript.git/commitdiff
Port to Linux: g++ 4.8 and JavaScriptCoreGTK+ 4.0.
authorJay Freeman (saurik) <saurik@saurik.com>
Thu, 26 Nov 2015 01:50:39 +0000 (17:50 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Thu, 26 Nov 2015 01:50:39 +0000 (17:50 -0800)
Console.cpp
Inject.cpp
JavaScript.hpp
ObjectiveC/Library.mm
configure
configure.ac

index 6239c357d962cd3c437d7f254904ad4156fb92b9..3089edc2d66d6c411bd140885c06469b9dcba830 100644 (file)
@@ -612,7 +612,7 @@ static void Console(CYOptions &options) {
     }
 }
 
-void InjectLibrary(pid_t, int, const char *[]);
+void InjectLibrary(pid_t, int, const char *const []);
 
 int Main(int argc, char * const argv[], char const * const envp[]) {
     bool tty(isatty(STDIN_FILENO));
@@ -719,7 +719,8 @@ int Main(int argc, char * const argv[], char const * const envp[]) {
                     // XXX: arg needs to be escaped in some horrendous way of doom
                     // XXX: this is a memory leak now because I just don't care enough
                     char *command;
-                    asprintf(&command, "ps axc|sed -e '/^ *[0-9]/{s/^ *\\([0-9]*\\)\\( *[^ ]*\\)\\{3\\} *-*\\([^ ]*\\)/\\3 \\1/;/^%s /{s/^[^ ]* //;q;};};d'", optarg);
+                    int writ(asprintf(&command, "ps axc|sed -e '/^ *[0-9]/{s/^ *\\([0-9]*\\)\\( *[^ ]*\\)\\{3\\} *-*\\([^ ]*\\)/\\3 \\1/;/^%s /{s/^[^ ]* //;q;};};d'", optarg));
+                    _assert(writ != -1);
 
                     if (FILE *pids = popen(command, "r")) {
                         char value[32];
@@ -867,7 +868,8 @@ int Main(int argc, char * const argv[], char const * const envp[]) {
         _syscall(chmod(address.sun_path, 0777));
 
         _syscall(listen(server, 1));
-        InjectLibrary(pid, 1, (const char *[]) {address.sun_path, NULL});
+        const char *const argv[] = {address.sun_path, NULL};
+        InjectLibrary(pid, 1, argv);
         client_ = _syscall(accept(server, NULL, NULL));
     }
 #else
index eb8535190c0fa3d88e636476851b56450a477271..b5136f6b94340a2c6b2c5b6178064be2f57fdb09 100644 (file)
@@ -55,7 +55,7 @@ Type_ *shift(Type_ *data, size_t size) {
     return reinterpret_cast<Type_ *>(reinterpret_cast<uint8_t *>(data) + size);
 }
 
-void InjectLibrary(int pid, int argc, const char *argv[]) {
+void InjectLibrary(int pid, int argc, const char *const argv[]) {
     auto cynject(LibraryFor(reinterpret_cast<void *>(&main)));
     auto slash(cynject.rfind('/'));
     _assert(slash != std::string::npos);
index bd1bd6796324dfb978855f3612cb768096525abc..9a58ccf1d7c3a80f289191acf190039790d35c50 100644 (file)
@@ -210,17 +210,21 @@ class CYJSString {
 };
 
 #ifdef __APPLE__
+#define _weak __attribute__((__weak_import__));
+#else
+#define _weak
+#endif
+
 typedef struct OpaqueJSWeakObjectMap *JSWeakObjectMapRef;
 typedef void (*JSWeakMapDestroyedCallback)(JSWeakObjectMapRef map, void *data);
 
-extern "C" JSWeakObjectMapRef JSWeakObjectMapCreate(JSContextRef ctx, void *data, JSWeakMapDestroyedCallback destructor) __attribute__((__weak_import__));
-extern "C" void JSWeakObjectMapSet(JSContextRef ctx, JSWeakObjectMapRef map, void *key, JSObjectRef) __attribute__((__weak_import__));
-extern "C" JSObjectRef JSWeakObjectMapGet(JSContextRef ctx, JSWeakObjectMapRef map, void *key) __attribute__((__weak_import__));
-extern "C" bool JSWeakObjectMapClear(JSContextRef ctx, JSWeakObjectMapRef map, void *key, JSObjectRef object) __attribute__((__weak_import__));
-extern "C" void JSWeakObjectMapRemove(JSContextRef ctx, JSWeakObjectMapRef map, void* key) __attribute__((__weak_import__));
+extern "C" JSWeakObjectMapRef JSWeakObjectMapCreate(JSContextRef ctx, void *data, JSWeakMapDestroyedCallback destructor) _weak;
+extern "C" void JSWeakObjectMapSet(JSContextRef ctx, JSWeakObjectMapRef map, void *key, JSObjectRef) _weak;
+extern "C" JSObjectRef JSWeakObjectMapGet(JSContextRef ctx, JSWeakObjectMapRef map, void *key) _weak;
+extern "C" bool JSWeakObjectMapClear(JSContextRef ctx, JSWeakObjectMapRef map, void *key, JSObjectRef object) _weak;
+extern "C" void JSWeakObjectMapRemove(JSContextRef ctx, JSWeakObjectMapRef map, void* key) _weak;
 
 typedef bool (*JSShouldTerminateCallback)(JSContextRef ctx, void *context);
-extern "C" void JSContextGroupSetExecutionTimeLimit(JSContextGroupRef, double limit, JSShouldTerminateCallback, void *context) __attribute__((__weak_import__));
-#endif
+extern "C" void JSContextGroupSetExecutionTimeLimit(JSContextGroupRef, double limit, JSShouldTerminateCallback, void *context) _weak;
 
 #endif/*CYCRIPT_JAVASCRIPT_HPP*/
index dccc3ad3b8a9488f13d6dbd4a382604d8980067c..c302305791bbd0bc9c4074270da90f1afccfdfb7 100644 (file)
@@ -1086,6 +1086,7 @@ NSObject *CYCopyNSObject(CYPool &pool, JSContextRef context, JSValueRef value) {
 @end
 /* }}} */
 /* Bridge: NSOrderedSet {{{ */
+#ifdef __APPLE__
 @implementation NSOrderedSet (Cycript)
 
 - (NSString *) cy$toCYON:(bool)objective inSet:(std::set<void *> &)objects {
@@ -1099,6 +1100,7 @@ NSObject *CYCopyNSObject(CYPool &pool, JSContextRef context, JSValueRef value) {
 }
 
 @end
+#endif
 /* }}} */
 /* Bridge: NSProxy {{{ */
 @implementation NSProxy (Cycript)
index c5f9a0f0fd599d0adc8e11e65850dd82848cc12b..8be0f218a8b112553ba464de02f0a74423efc9d4 100755 (executable)
--- a/configure
+++ b/configure
@@ -20178,7 +20178,7 @@ $as_echo "$ac_cv_framework_JavaScriptCore" >&6; }
 
 else
 
-        for cy_webkit_pkg in "webkit-1.0" "WebKitGtk"; do
+        for cy_webkit_pkg in "javascriptcoregtk-4.0"; do
 
 pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WEBKIT" >&5
@@ -20447,7 +20447,7 @@ $as_echo "$ac_cv_framework_JavaScriptCore" >&6; }
 
 else
 
-        for cy_webkit_pkg in "webkit-1.0" "WebKitGtk"; do
+        for cy_webkit_pkg in "javascriptcoregtk-4.0"; do
 
 pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WEBKIT" >&5
@@ -20716,7 +20716,7 @@ $as_echo "$ac_cv_framework_JavaScriptCore" >&6; }
 
 else
 
-        for cy_webkit_pkg in "webkit-1.0" "WebKitGtk"; do
+        for cy_webkit_pkg in "javascriptcoregtk-4.0"; do
 
 pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WEBKIT" >&5
index aa814004a619fdbf78037a357732c512e8906311..a8ef86bb20859147ca55fb628775bb18622bf882 100644 (file)
@@ -150,7 +150,7 @@ AC_DEFUN([CY_CHECK_JAVASCRIPTCORE], [
     ], [
         AC_SUBST([CY_EXECUTE], [1])
     ], [
-        for cy_webkit_pkg in "webkit-1.0" "WebKitGtk"; do
+        for cy_webkit_pkg in "javascriptcoregtk-4.0"; do
             PKG_CHECK_MODULES([WEBKIT], [$cy_webkit_pkg], [
                 AC_SUBST([CY_EXECUTE], [1])
                 AC_LIB_APPENDTOVAR([CPPFLAGS], [`$PKG_CONFIG --cflags $cy_webkit_pkg`])