this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Various fixes, libobjc2 trunk is now required

+23
+5
src/CoreServices/CMakeLists.txt
··· 28 28 Math64.cpp 29 29 ) 30 30 31 + SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib${SUFFIX}/darling") 32 + #SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--enable-new-dtags") 33 + SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) 34 + SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 35 + 31 36 add_library(CoreServices SHARED ${CoreServices_SRCS}) 32 37 target_link_libraries(CoreServices -licuuc System.B.dylib util 33 38 -lgnustep-corebase)
+11
src/libobjcdarwin/ClassRegister.cpp
··· 16 16 #include "common/selector.h" 17 17 #include "common/cfstring.h" 18 18 #include <map> 19 + #include <queue> 19 20 20 21 // Superclass references in Mach-O don't use classref 21 22 // Neither do category class references 22 23 std::map<const void*,Class> g_classPointers; 24 + std::queue<Class> g_pendingInitClasses; 23 25 24 26 // Here we process Mach-O files that have been loaded before this native library 25 27 // Then we register a handler to process all images loaded in the future ··· 72 74 UpdateClassRefs(mh); 73 75 UpdateSelectors(mh, slide); 74 76 UpdateCFStrings(mh); 77 + 78 + static SEL selInit = sel_getUid("init"); 79 + while (!g_pendingInitClasses.empty()) 80 + { 81 + id c = (id) g_pendingInitClasses.front(); 82 + IMP imp = objc_msg_lookup(c, selInit); 83 + g_pendingInitClasses.pop(); 84 + imp(c, selInit); 85 + } 75 86 } 76 87 77 88 void ProcessImageUnload(const struct mach_header* mh, intptr_t)
+7
src/libobjcdarwin/common/method.h
··· 1 1 #ifndef COMMON_METHOD_H 2 2 #define COMMON_METHOD_H 3 + #include <queue> 4 + #include <cstring> 5 + 6 + extern std::queue<Class> g_pendingInitClasses; 3 7 4 8 template<typename ListType> void ConvertMethodListGen(Class c, const ListType* list) 5 9 { ··· 15 19 16 20 SEL sel = sel_registerTypedName_np(m->selName, m->types); 17 21 class_addMethod(c, sel, reinterpret_cast<IMP>(m->impl), m->types); 22 + 23 + if (isMeta && strcmp(m->selName, "init") == 0) 24 + g_pendingInitClasses.push(c); 18 25 } 19 26 } 20 27