X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=cgltrace.py;h=0e40663560ff720c40b9ac72b64c239d34260061;hb=cbabe34c0bc4c5190f53c2b4e6991ad10ad36e44;hp=86e8a299a6c2afe07bd3610e3ec54c4fc9960f81;hpb=3bcb33ca2c47bdb70d91d9988664d744f4146855;p=apitrace diff --git a/cgltrace.py b/cgltrace.py index 86e8a29..0e40663 100644 --- a/cgltrace.py +++ b/cgltrace.py @@ -27,15 +27,15 @@ """Cgl tracing generator.""" -from stdapi import API -from glapi import glapi -from cglapi import cglapi +from specs.stdapi import API +from specs.glapi import glapi +from specs.cglapi import cglapi from gltrace import GlTracer class CglTracer(GlTracer): - def is_public_function(self, function): + def isFunctionPublic(self, function): # The symbols visible in libGL.dylib can vary, so expose them all return True @@ -44,14 +44,8 @@ if __name__ == '__main__': print print '#include ' print '#include ' - print '#include ' print - print '#ifndef _GNU_SOURCE' - print '#define _GNU_SOURCE // for dladdr' - print '#endif' - print '#include ' - print - print '#include "trace_writer.hpp"' + print '#include "trace_writer_local.hpp"' print print '// To validate our prototypes' print '#define GL_GLEXT_PROTOTYPES' @@ -61,69 +55,13 @@ if __name__ == '__main__': print api = API() - api.add_api(cglapi) - api.add_api(glapi) + api.addApi(cglapi) + api.addApi(glapi) tracer = CglTracer() tracer.trace_api(api) print r''' - -/* - * Path to the true OpenGL framework - */ -static const char *libgl_filename = "/System/Library/Frameworks/OpenGL.framework/OpenGL"; - - -/* - * Handle to the true OpenGL framework. - */ -static void *libgl_handle = NULL; - - -/* - * Lookup a libGL symbol - */ -static void * __dlsym(const char *symbol) -{ - void *result; - - if (!libgl_handle) { - /* - * Unfortunately we can't just dlopen the true dynamic library because - * DYLD_LIBRARY_PATH/DYLD_FRAMEWORK_PATH take precedence, even for - * absolute paths. So we create a temporary symlink, and dlopen that - * instead. - */ - - char temp_filename[] = "/tmp/tmp.XXXXXX"; - - if (mktemp(temp_filename) != NULL) { - if (symlink(libgl_filename, temp_filename) == 0) { - libgl_handle = dlopen(temp_filename, RTLD_LOCAL | RTLD_NOW | RTLD_FIRST); - remove(temp_filename); - } - } - - if (!libgl_handle) { - OS::DebugMessage("error: couldn't load %s\n", libgl_filename); - OS::Abort(); - return NULL; - } - } - - result = dlsym(libgl_handle, symbol); - - if (result == dlsym(RTLD_SELF, symbol)) { - OS::DebugMessage("error: symbol lookup recursion\n"); - OS::Abort(); - return NULL; - } - - return result; -} - - PUBLIC void * gll_noop = 0;