From: Richard Kenner Date: Mon, 8 May 1995 22:13:33 +0000 (-0400) Subject: (_objc_load_callback): Add declaration. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d8a55d096037ca3ed16b81d1caaff4b2b1623777;p=gcc.git (_objc_load_callback): Add declaration. (__objc_exec_class): Call _objc_load_callback after every Class or Category is added. From-SVN: r9592 --- diff --git a/gcc/objc/init.c b/gcc/objc/init.c index 52efeb00ecc..eb0e288215c 100644 --- a/gcc/objc/init.c +++ b/gcc/objc/init.c @@ -48,6 +48,12 @@ static void __objc_init_protocols (struct objc_protocol_list* protos); /* Add protocol to class */ static void __objc_class_add_protocols (Class, struct objc_protocol_list*); +/* This is a hook which is called by __objc_exec_class every time a class + or a category is loaded into the runtime. This may e.g. help a + dynamic loader determine the classes that have been loaded when + an object file is dynamically linked in */ +void (*_objc_load_callback)(Class class, Category* category) = 0; + /* Is all categories/classes resolved? */ BOOL __objc_dangling_categories = NO; @@ -190,6 +196,9 @@ __objc_exec_class (Module_t module) if (class->protocols) __objc_init_protocols (class->protocols); + + if (_objc_load_callback) + _objc_load_callback(class, 0); } /* Process category information from the module. */ @@ -221,6 +230,8 @@ __objc_exec_class (Module_t module) __objc_class_add_protocols (class, category->protocols); } + if (_objc_load_callback) + _objc_load_callback(class, category); } else { @@ -264,6 +275,8 @@ __objc_exec_class (Module_t module) __objc_class_add_protocols (class, category->protocols); } + if (_objc_load_callback) + _objc_load_callback(class, category); } }