diff options
author | Jose Fonseca <jfonseca@vmware.com> | 2016-05-06 10:44:33 +0100 |
---|---|---|
committer | Jose Fonseca <jfonseca@vmware.com> | 2016-05-06 11:30:22 +0100 |
commit | 1ffdbbdc999d155c3abf2a012cf6515ee9ac2a38 (patch) | |
tree | 773555b82a424f40581d36782d405763d687096a | |
parent | 05e5c863bde2d0cb1cea14b50e77b524a719833b (diff) |
cgltrace: Use DYLD_INTERPOSE (WIP).
-rw-r--r-- | cli/cli_trace.cpp | 11 | ||||
-rw-r--r-- | dispatch/dispatch.py | 16 | ||||
-rw-r--r-- | wrappers/CMakeLists.txt | 12 | ||||
-rw-r--r-- | wrappers/cgltrace.py | 1376 | ||||
-rw-r--r-- | wrappers/gltrace.py | 2 | ||||
-rw-r--r-- | wrappers/trace.py | 10 |
6 files changed, 1402 insertions, 25 deletions
diff --git a/cli/cli_trace.cpp b/cli/cli_trace.cpp index 97c1cc83..4e8f39e2 100644 --- a/cli/cli_trace.cpp +++ b/cli/cli_trace.cpp @@ -47,8 +47,8 @@ #if defined(__APPLE__) -#define TRACE_VARIABLE "DYLD_FRAMEWORK_PATH" -#define GL_TRACE_WRAPPER "OpenGL.framework/OpenGL" +#define TRACE_VARIABLE "DYLD_INSERT_LIBRARIES" +#define GL_TRACE_WRAPPER "cgltrace.dylib" #elif defined(_WIN32) #define GL_TRACE_WRAPPER "opengl32.dll" #else @@ -176,13 +176,6 @@ traceProgram(trace::API api, (void)useInject; #endif /* !_WIN32 */ -#if defined(__APPLE__) - /* On Mac OS X, using DYLD_LIBRARY_PATH, we actually set the - * parent directory, not the file. */ - wrapperPath.trimFilename(); - wrapperPath.trimFilename(); -#endif - /* * Spawn child process. */ diff --git a/dispatch/dispatch.py b/dispatch/dispatch.py index 9e778561..299ec53c 100644 --- a/dispatch/dispatch.py +++ b/dispatch/dispatch.py @@ -58,13 +58,18 @@ class Dispatcher: # define standard name aliases for convenience, but only when not # tracing, as that would cause symbol clashing with the tracing # functions - print '#ifdef RETRACE' - for function in module.functions: - print '#define %s _%s' % (function.name, function.name) - print '#endif /* RETRACE */' - print + #print '#ifdef RETRACE' + #for function in module.functions: + # print '#define %s _%s' % (function.name, function.name) + #print '#endif /* RETRACE */' + #print def dispatchFunctionDecl(self, module, function): + print 'extern "C" ' + function.prototype() + ';' + print '#define _%s %s' % (function.name, function.name) + print + return + ptype = function_pointer_type(function) pvalue = function_pointer_value(function) print 'typedef ' + function.prototype('* %s' % ptype) + ';' @@ -72,6 +77,7 @@ class Dispatcher: print def dispatchModuleImpl(self, module): + return for function in module.functions: self.dispatchFunctionImpl(module, function) diff --git a/wrappers/CMakeLists.txt b/wrappers/CMakeLists.txt index 84ec9a41..e5f235e7 100644 --- a/wrappers/CMakeLists.txt +++ b/wrappers/CMakeLists.txt @@ -323,23 +323,21 @@ elseif (APPLE) add_dependencies (cgltrace glproc) set_target_properties (cgltrace PROPERTIES - # OpenGL framework name - OUTPUT_NAME "OpenGL" - # Mac framework - FRAMEWORK true - # Specificy the version and reexport GLU symbols - LINK_FLAGS "-compatibility_version 1 -current_version 1.0.0 -Wl,-reexport_library,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib" + # avoid the default "lib" prefix + PREFIX "" ) target_link_libraries (cgltrace glhelpers glproc_gl trace + "-framework OpenGL" # CGL* + ${OPENGL_gl_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS} ) - install (TARGETS cgltrace FRAMEWORK DESTINATION ${WRAPPER_INSTALL_DIR}) + install (TARGETS cgltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR}) elseif (X11_FOUND) # libGL.so add_custom_command ( diff --git a/wrappers/cgltrace.py b/wrappers/cgltrace.py index 6c72f696..59ef58ae 100644 --- a/wrappers/cgltrace.py +++ b/wrappers/cgltrace.py @@ -28,17 +28,1376 @@ from gltrace import GlTracer -from specs.stdapi import Module, API +from specs.stdapi import Module, API, Void from specs.glapi import glapi from specs.cglapi import cglapi +funcs = set(( + "CGLAreContextsShared", + "CGLBackDispatch", + "CGLChoosePixelFormat", + "CGLClearDrawable", + "CGLCopyContext", + "CGLCreateContext", + "CGLCreatePBuffer", + "CGLDescribePBuffer", + "CGLDescribePixelFormat", + "CGLDescribeRenderer", + "CGLDestroyContext", + "CGLDestroyPBuffer", + "CGLDestroyPixelFormat", + "CGLDestroyRendererInfo", + "CGLDisable", + "CGLEnable", + "CGLErrorString", + "CGLFlushDrawable", + "CGLFrontDispatch", + "CGLGetContextRetainCount", + "CGLGetDeviceFromGLRenderer", + "CGLGetGlobalOption", + "CGLGetNextContext", + "CGLGetOffScreen", + "CGLGetOption", + "CGLGetPBuffer", + "CGLGetPBufferRetainCount", + "CGLGetParameter", + "CGLGetPixelFormat", + "CGLGetPixelFormatRetainCount", + "CGLGetShareGroup", + "CGLGetSurface", + "CGLGetVersion", + "CGLGetVirtualScreen", + "CGLIsEnabled", + "CGLLockContext", + "CGLOpenCLMuxLockDown", + "CGLQueryRendererInfo", + "CGLReleaseContext", + "CGLReleasePBuffer", + "CGLReleasePixelFormat", + "CGLRestoreDispatch", + "CGLRestoreDispatchFunction", + "CGLRetainContext", + "CGLRetainPBuffer", + "CGLRetainPixelFormat", + "CGLSelectDispatch", + "CGLSelectDispatchBounded", + "CGLSelectDispatchFunction", + "CGLSetFullScreen", + "CGLSetFullScreenOnDisplay", + "CGLSetGlobalOption", + "CGLSetOffScreen", + "CGLSetOption", + "CGLSetPBuffer", + "CGLSetPBufferVolatileState", + "CGLSetParameter", + "CGLSetSurface", + "CGLSetVirtualScreen", + "CGLTexImageIOSurface2D", + "CGLTexImagePBuffer", + "CGLUnlockContext", + "CGLUpdateContext", + "CGLGetCurrentContext", + "CGLSetCurrentContext", + "glAccum", + "glActiveShaderProgram", + "glActiveStencilFaceEXT", + "glActiveTexture", + "glActiveTextureARB", + "glAlphaFunc", + "glAreTexturesResident", + "glArrayElement", + "glAttachObjectARB", + "glAttachShader", + "glBegin", + "glBeginConditionalRender", + "glBeginConditionalRenderNV", + "glBeginQuery", + "glBeginQueryARB", + "glBeginQueryIndexed", + "glBeginTransformFeedback", + "glBeginTransformFeedbackEXT", + "glBindAttribLocation", + "glBindAttribLocationARB", + "glBindBuffer", + "glBindBufferARB", + "glBindBufferBase", + "glBindBufferBaseEXT", + "glBindBufferOffsetEXT", + "glBindBufferRange", + "glBindBufferRangeEXT", + "glBindFragDataLocation", + "glBindFragDataLocationEXT", + "glBindFragDataLocationIndexed", + "glBindFramebuffer", + "glBindFramebufferEXT", + "glBindProgramARB", + "glBindProgramPipeline", + "glBindRenderbuffer", + "glBindRenderbufferEXT", + "glBindSampler", + "glBindTexture", + "glBindTransformFeedback", + "glBindVertexArray", + "glBindVertexArrayAPPLE", + "glBitmap", + "glBlendColor", + "glBlendColorEXT", + "glBlendEquation", + "glBlendEquationEXT", + "glBlendEquationSeparate", + "glBlendEquationSeparateATI", + "glBlendEquationSeparateEXT", + "glBlendEquationSeparatei", + "glBlendEquationSeparateiARB", + "glBlendEquationi", + "glBlendEquationiARB", + "glBlendFunc", + "glBlendFuncSeparate", + "glBlendFuncSeparateEXT", + "glBlendFuncSeparatei", + "glBlendFuncSeparateiARB", + "glBlendFunci", + "glBlendFunciARB", + "glBlitFramebuffer", + "glBlitFramebufferEXT", + "glBufferData", + "glBufferDataARB", + "glBufferParameteriAPPLE", + "glBufferSubData", + "glBufferSubDataARB", + "glCallList", + "glCallLists", + "glCheckFramebufferStatus", + "glCheckFramebufferStatusEXT", + "glClampColor", + "glClampColorARB", + "glClear", + "glClearAccum", + "glClearBufferfi", + "glClearBufferfv", + "glClearBufferiv", + "glClearBufferuiv", + "glClearColor", + "glClearColorIiEXT", + "glClearColorIuiEXT", + "glClearDepth", + "glClearDepthf", + "glClearIndex", + "glClearStencil", + "glClientActiveTexture", + "glClientActiveTextureARB", + "glClientWaitSync", + "glClipPlane", + "glColor3b", + "glColor3bv", + "glColor3d", + "glColor3dv", + "glColor3f", + "glColor3fv", + "glColor3i", + "glColor3iv", + "glColor3s", + "glColor3sv", + "glColor3ub", + "glColor3ubv", + "glColor3ui", + "glColor3uiv", + "glColor3us", + "glColor3usv", + "glColor4b", + "glColor4bv", + "glColor4d", + "glColor4dv", + "glColor4f", + "glColor4fv", + "glColor4i", + "glColor4iv", + "glColor4s", + "glColor4sv", + "glColor4ub", + "glColor4ubv", + "glColor4ui", + "glColor4uiv", + "glColor4us", + "glColor4usv", + "glColorMask", + "glColorMaskIndexedEXT", + "glColorMaski", + "glColorMaterial", + "glColorPointer", + "glColorSubTable", + "glColorSubTableEXT", + "glColorTable", + "glColorTableEXT", + "glColorTableParameterfv", + "glColorTableParameteriv", + "glCombinerInputNV", + "glCombinerOutputNV", + "glCombinerParameterfNV", + "glCombinerParameterfvNV", + "glCombinerParameteriNV", + "glCombinerParameterivNV", + "glCombinerStageParameterfvNV", + "glCompileShader", + "glCompileShaderARB", + "glCompileShaderIncludeARB", + "glCompressedTexImage1D", + "glCompressedTexImage1DARB", + "glCompressedTexImage2D", + "glCompressedTexImage2DARB", + "glCompressedTexImage3D", + "glCompressedTexImage3DARB", + "glCompressedTexSubImage1D", + "glCompressedTexSubImage1DARB", + "glCompressedTexSubImage2D", + "glCompressedTexSubImage2DARB", + "glCompressedTexSubImage3D", + "glCompressedTexSubImage3DARB", + "glConvolutionFilter1D", + "glConvolutionFilter2D", + "glConvolutionParameterf", + "glConvolutionParameterfv", + "glConvolutionParameteri", + "glConvolutionParameteriv", + "glCopyBufferSubData", + "glCopyColorSubTable", + "glCopyColorTable", + "glCopyConvolutionFilter1D", + "glCopyConvolutionFilter2D", + "glCopyPixels", + "glCopyTexImage1D", + "glCopyTexImage2D", + "glCopyTexSubImage1D", + "glCopyTexSubImage2D", + "glCopyTexSubImage3D", + "glCreateProgram", + "glCreateProgramObjectARB", + "glCreateShader", + "glCreateShaderObjectARB", + "glCreateShaderProgramv", + "glCullFace", + "glDeleteBuffers", + "glDeleteBuffersARB", + "glDeleteFencesAPPLE", + "glDeleteFramebuffers", + "glDeleteFramebuffersEXT", + "glDeleteLists", + "glDeleteNamedStringARB", + "glDeleteObjectARB", + "glDeleteProgram", + "glDeleteProgramPipelines", + "glDeleteProgramsARB", + "glDeleteQueries", + "glDeleteQueriesARB", + "glDeleteRenderbuffers", + "glDeleteRenderbuffersEXT", + "glDeleteSamplers", + "glDeleteShader", + "glDeleteSync", + "glDeleteTextures", + "glDeleteTransformFeedbacks", + "glDeleteVertexArrays", + "glDeleteVertexArraysAPPLE", + "glDepthBoundsEXT", + "glDepthFunc", + "glDepthMask", + "glDepthRange", + "glDepthRangeArrayv", + "glDepthRangeIndexed", + "glDepthRangef", + "glDetachObjectARB", + "glDetachShader", + "glDisable", + "glDisableClientState", + "glDisableIndexedEXT", + "glDisableVertexAttribAPPLE", + "glDisableVertexAttribArray", + "glDisableVertexAttribArrayARB", + "glDisablei", + "glDrawArrays", + "glDrawArraysIndirect", + "glDrawArraysInstanced", + "glDrawArraysInstancedARB", + "glDrawBuffer", + "glDrawBuffers", + "glDrawBuffersARB", + "glDrawElementArrayAPPLE", + "glDrawElements", + "glDrawElementsBaseVertex", + "glDrawElementsIndirect", + "glDrawElementsInstanced", + "glDrawElementsInstancedARB", + "glDrawElementsInstancedBaseVertex", + "glDrawPixels", + "glDrawRangeElementArrayAPPLE", + "glDrawRangeElements", + "glDrawRangeElementsBaseVertex", + "glDrawRangeElementsEXT", + "glDrawTransformFeedback", + "glDrawTransformFeedbackStream", + "glEdgeFlag", + "glEdgeFlagPointer", + "glEdgeFlagv", + "glElementPointerAPPLE", + "glEnable", + "glEnableClientState", + "glEnableIndexedEXT", + "glEnableVertexAttribAPPLE", + "glEnableVertexAttribArray", + "glEnableVertexAttribArrayARB", + "glEnablei", + "glEnd", + "glEndConditionalRender", + "glEndConditionalRenderNV", + "glEndList", + "glEndQuery", + "glEndQueryARB", + "glEndQueryIndexed", + "glEndTransformFeedback", + "glEndTransformFeedbackEXT", + "glEvalCoord1d", + "glEvalCoord1dv", + "glEvalCoord1f", + "glEvalCoord1fv", + "glEvalCoord2d", + "glEvalCoord2dv", + "glEvalCoord2f", + "glEvalCoord2fv", + "glEvalMesh1", + "glEvalMesh2", + "glEvalPoint1", + "glEvalPoint2", + "glFeedbackBuffer", + "glFenceSync", + "glFinalCombinerInputNV", + "glFinish", + "glFinishFenceAPPLE", + "glFinishObjectAPPLE", + "glFinishRenderAPPLE", + "glFlush", + "glFlushMappedBufferRange", + "glFlushMappedBufferRangeAPPLE", + "glFlushRenderAPPLE", + "glFlushVertexArrayRangeAPPLE", + "glFogCoordPointer", + "glFogCoordPointerEXT", + "glFogCoordd", + "glFogCoorddEXT", + "glFogCoorddv", + "glFogCoorddvEXT", + "glFogCoordf", + "glFogCoordfEXT", + "glFogCoordfv", + "glFogCoordfvEXT", + "glFogf", + "glFogfv", + "glFogi", + "glFogiv", + "glFramebufferRenderbuffer", + "glFramebufferRenderbufferEXT", + "glFramebufferTexture", + "glFramebufferTexture1D", + "glFramebufferTexture1DEXT", + "glFramebufferTexture2D", + "glFramebufferTexture2DEXT", + "glFramebufferTexture3D", + "glFramebufferTexture3DEXT", + "glFramebufferTextureEXT", + "glFramebufferTextureFaceEXT", + "glFramebufferTextureLayer", + "glFramebufferTextureLayerEXT", + "glFrontFace", + "glFrustum", + "glGenBuffers", + "glGenBuffersARB", + "glGenFencesAPPLE", + "glGenFramebuffers", + "glGenFramebuffersEXT", + "glGenLists", + "glGenProgramPipelines", + "glGenProgramsARB", + "glGenQueries", + "glGenQueriesARB", + "glGenRenderbuffers", + "glGenRenderbuffersEXT", + "glGenSamplers", + "glGenTextures", + "glGenTransformFeedbacks", + "glGenVertexArrays", + "glGenVertexArraysAPPLE", + "glGenerateMipmap", + "glGenerateMipmapEXT", + "glGetActiveAttrib", + "glGetActiveAttribARB", + "glGetActiveSubroutineName", + "glGetActiveSubroutineUniformName", + "glGetActiveSubroutineUniformiv", + "glGetActiveUniform", + "glGetActiveUniformARB", + "glGetActiveUniformBlockName", + "glGetActiveUniformBlockiv", + "glGetActiveUniformName", + "glGetActiveUniformsiv", + "glGetAttachedObjectsARB", + "glGetAttachedShaders", + "glGetAttribLocation", + "glGetAttribLocationARB", + "glGetBooleanIndexedvEXT", + "glGetBooleani_v", + "glGetBooleanv", + "glGetBufferParameteri64v", + "glGetBufferParameteriv", + "glGetBufferParameterivARB", + "glGetBufferPointerv", + "glGetBufferPointervARB", + "glGetBufferSubData", + "glGetBufferSubDataARB", + "glGetClipPlane", + "glGetColorTable", + "glGetColorTableEXT", + "glGetColorTableParameterfv", + "glGetColorTableParameterfvEXT", + "glGetColorTableParameteriv", + "glGetColorTableParameterivEXT", + "glGetCombinerInputParameterfvNV", + "glGetCombinerInputParameterivNV", + "glGetCombinerOutputParameterfvNV", + "glGetCombinerOutputParameterivNV", + "glGetCombinerStageParameterfvNV", + "glGetCompressedTexImage", + "glGetCompressedTexImageARB", + "glGetConvolutionFilter", + "glGetConvolutionParameterfv", + "glGetConvolutionParameteriv", + "glGetDoublei_v", + "glGetDoublev", + "glGetError", + "glGetFinalCombinerInputParameterfvNV", + "glGetFinalCombinerInputParameterivNV", + "glGetFloati_v", + "glGetFloatv", + "glGetFragDataIndex", + "glGetFragDataLocation", + "glGetFragDataLocationEXT", + "glGetFramebufferAttachmentParameteriv", + "glGetFramebufferAttachmentParameterivEXT", + "glGetHandleARB", + "glGetHistogram", + "glGetHistogramParameterfv", + "glGetHistogramParameteriv", + "glGetInfoLogARB", + "glGetInteger64i_v", + "glGetInteger64v", + "glGetIntegerIndexedvEXT", + "glGetIntegeri_v", + "glGetIntegerv", + "glGetInternalformativ", + "glGetLightfv", + "glGetLightiv", + "glGetMapdv", + "glGetMapfv", + "glGetMapiv", + "glGetMaterialfv", + "glGetMaterialiv", + "glGetMinmax", + "glGetMinmaxParameterfv", + "glGetMinmaxParameteriv", + "glGetMultisamplefv", + "glGetNamedStringARB", + "glGetNamedStringivARB", + "glGetObjectLabelEXT", + "glGetObjectParameterfvARB", + "glGetObjectParameterivAPPLE", + "glGetObjectParameterivARB", + "glGetPixelMapfv", + "glGetPixelMapuiv", + "glGetPixelMapusv", + "glGetPointerv", + "glGetPolygonStipple", + "glGetProgramBinary", + "glGetProgramEnvParameterdvARB", + "glGetProgramEnvParameterfvARB", + "glGetProgramInfoLog", + "glGetProgramLocalParameterdvARB", + "glGetProgramLocalParameterfvARB", + "glGetProgramPipelineInfoLog", + "glGetProgramPipelineiv", + "glGetProgramStageiv", + "glGetProgramStringARB", + "glGetProgramiv", + "glGetProgramivARB", + "glGetQueryIndexediv", + "glGetQueryObjecti64v", + "glGetQueryObjecti64vEXT", + "glGetQueryObjectiv", + "glGetQueryObjectivARB", + "glGetQueryObjectui64v", + "glGetQueryObjectui64vEXT", + "glGetQueryObjectuiv", + "glGetQueryObjectuivARB", + "glGetQueryiv", + "glGetQueryivARB", + "glGetRenderbufferParameteriv", + "glGetRenderbufferParameterivEXT", + "glGetSamplerParameterIiv", + "glGetSamplerParameterIuiv", + "glGetSamplerParameterfv", + "glGetSamplerParameteriv", + "glGetSeparableFilter", + "glGetShaderInfoLog", + "glGetShaderPrecisionFormat", + "glGetShaderSource", + "glGetShaderSourceARB", + "glGetShaderiv", + "glGetString", + "glGetStringi", + "glGetSubroutineIndex", + "glGetSubroutineUniformLocation", + "glGetSynciv", + "glGetTexEnvfv", + "glGetTexEnviv", + "glGetTexGendv", + "glGetTexGenfv", + "glGetTexGeniv", + "glGetTexImage", + "glGetTexLevelParameterfv", + "glGetTexLevelParameteriv", + "glGetTexParameterIiv", + "glGetTexParameterIivEXT", + "glGetTexParameterIuiv", + "glGetTexParameterIuivEXT", + "glGetTexParameterPointervAPPLE", + "glGetTexParameterfv", + "glGetTexParameteriv", + "glGetTransformFeedbackVarying", + "glGetTransformFeedbackVaryingEXT", + "glGetUniformBlockIndex", + "glGetUniformBufferSizeEXT", + "glGetUniformIndices", + "glGetUniformLocation", + "glGetUniformLocationARB", + "glGetUniformOffsetEXT", + "glGetUniformSubroutineuiv", + "glGetUniformdv", + "glGetUniformfv", + "glGetUniformfvARB", + "glGetUniformiv", + "glGetUniformivARB", + "glGetUniformuiv", + "glGetUniformuivEXT", + "glGetVertexAttribIiv", + "glGetVertexAttribIivEXT", + "glGetVertexAttribIuiv", + "glGetVertexAttribIuivEXT", + "glGetVertexAttribLdv", + "glGetVertexAttribPointerv", + "glGetVertexAttribPointervARB", + "glGetVertexAttribdv", + "glGetVertexAttribdvARB", + "glGetVertexAttribfv", + "glGetVertexAttribfvARB", + "glGetVertexAttribiv", + "glGetVertexAttribivARB", + "glHint", + "glHistogram", + "glIndexMask", + "glIndexPointer", + "glIndexd", + "glIndexdv", + "glIndexf", + "glIndexfv", + "glIndexi", + "glIndexiv", + "glIndexs", + "glIndexsv", + "glIndexub", + "glIndexubv", + "glInitNames", + "glInsertEventMarkerEXT", + "glInterleavedArrays", + "glIsBuffer", + "glIsBufferARB", + "glIsEnabled", + "glIsEnabledIndexedEXT", + "glIsEnabledi", + "glIsFenceAPPLE", + "glIsFramebuffer", + "glIsFramebufferEXT", + "glIsList", + "glIsNamedStringARB", + "glIsProgram", + "glIsProgramARB", + "glIsProgramPipeline", + "glIsQuery", + "glIsQueryARB", + "glIsRenderbuffer", + "glIsRenderbufferEXT", + "glIsSampler", + "glIsShader", + "glIsSync", + "glIsTexture", + "glIsTransformFeedback", + "glIsVertexArray", + "glIsVertexArrayAPPLE", + "glIsVertexAttribEnabledAPPLE", + "glLabelObjectEXT", + "glLabelObjectWithResponsibleProcessAPPLE", + "glLightModelf", + "glLightModelfv", + "glLightModeli", + "glLightModeliv", + "glLightf", + "glLightfv", + "glLighti", + "glLightiv", + "glLineStipple", + "glLineWidth", + "glLinkProgram", + "glLinkProgramARB", + "glListBase", + "glLoadIdentity", + "glLoadMatrixd", + "glLoadMatrixf", + "glLoadName", + "glLoadTransposeMatrixd", + "glLoadTransposeMatrixdARB", + "glLoadTransposeMatrixf", + "glLoadTransposeMatrixfARB", + "glLockArraysEXT", + "glLogicOp", + "glMap1d", + "glMap1f", + "glMap2d", + "glMap2f", + "glMapBuffer", + "glMapBufferARB", + "glMapBufferRange", + "glMapGrid1d", + "glMapGrid1f", + "glMapGrid2d", + "glMapGrid2f", + "glMapVertexAttrib1dAPPLE", + "glMapVertexAttrib1fAPPLE", + "glMapVertexAttrib2dAPPLE", + "glMapVertexAttrib2fAPPLE", + "glMaterialf", + "glMaterialfv", + "glMateriali", + "glMaterialiv", + "glMatrixMode", + "glMinSampleShading", + "glMinSampleShadingARB", + "glMinmax", + "glMultMatrixd", + "glMultMatrixf", + "glMultTransposeMatrixd", + "glMultTransposeMatrixdARB", + "glMultTransposeMatrixf", + "glMultTransposeMatrixfARB", + "glMultiDrawArrays", + "glMultiDrawArraysEXT", + "glMultiDrawElementArrayAPPLE", + "glMultiDrawElements", + "glMultiDrawElementsBaseVertex", + "glMultiDrawElementsEXT", + "glMultiDrawRangeElementArrayAPPLE", + "glMultiTexCoord1d", + "glMultiTexCoord1dARB", + "glMultiTexCoord1dv", + "glMultiTexCoord1dvARB", + "glMultiTexCoord1f", + "glMultiTexCoord1fARB", + "glMultiTexCoord1fv", + "glMultiTexCoord1fvARB", + "glMultiTexCoord1i", + "glMultiTexCoord1iARB", + "glMultiTexCoord1iv", + "glMultiTexCoord1ivARB", + "glMultiTexCoord1s", + "glMultiTexCoord1sARB", + "glMultiTexCoord1sv", + "glMultiTexCoord1svARB", + "glMultiTexCoord2d", + "glMultiTexCoord2dARB", + "glMultiTexCoord2dv", + "glMultiTexCoord2dvARB", + "glMultiTexCoord2f", + "glMultiTexCoord2fARB", + "glMultiTexCoord2fv", + "glMultiTexCoord2fvARB", + "glMultiTexCoord2i", + "glMultiTexCoord2iARB", + "glMultiTexCoord2iv", + "glMultiTexCoord2ivARB", + "glMultiTexCoord2s", + "glMultiTexCoord2sARB", + "glMultiTexCoord2sv", + "glMultiTexCoord2svARB", + "glMultiTexCoord3d", + "glMultiTexCoord3dARB", + "glMultiTexCoord3dv", + "glMultiTexCoord3dvARB", + "glMultiTexCoord3f", + "glMultiTexCoord3fARB", + "glMultiTexCoord3fv", + "glMultiTexCoord3fvARB", + "glMultiTexCoord3i", + "glMultiTexCoord3iARB", + "glMultiTexCoord3iv", + "glMultiTexCoord3ivARB", + "glMultiTexCoord3s", + "glMultiTexCoord3sARB", + "glMultiTexCoord3sv", + "glMultiTexCoord3svARB", + "glMultiTexCoord4d", + "glMultiTexCoord4dARB", + "glMultiTexCoord4dv", + "glMultiTexCoord4dvARB", + "glMultiTexCoord4f", + "glMultiTexCoord4fARB", + "glMultiTexCoord4fv", + "glMultiTexCoord4fvARB", + "glMultiTexCoord4i", + "glMultiTexCoord4iARB", + "glMultiTexCoord4iv", + "glMultiTexCoord4ivARB", + "glMultiTexCoord4s", + "glMultiTexCoord4sARB", + "glMultiTexCoord4sv", + "glMultiTexCoord4svARB", + "glNamedStringARB", + "glNewList", + "glNormal3b", + "glNormal3bv", + "glNormal3d", + "glNormal3dv", + "glNormal3f", + "glNormal3fv", + "glNormal3i", + "glNormal3iv", + "glNormal3s", + "glNormal3sv", + "glNormalPointer", + "glObjectPurgeableAPPLE", + "glObjectUnpurgeableAPPLE", + "glOrtho", + "glPNTrianglesfATI", + "glPNTrianglesfATIX", + "glPNTrianglesiATI", + "glPNTrianglesiATIX", + "glPassThrough", + "glPatchParameterfv", + "glPatchParameteri", + "glPauseTransformFeedback", + "glPixelMapfv", + "glPixelMapuiv", + "glPixelMapusv", + "glPixelStoref", + "glPixelStorei", + "glPixelTransferf", + "glPixelTransferi", + "glPixelZoom", + "glPointParameterf", + "glPointParameterfARB", + "glPointParameterfv", + "glPointParameterfvARB", + "glPointParameteri", + "glPointParameteriNV", + "glPointParameteriv", + "glPointParameterivNV", + "glPointSize", + "glPointSizePointerAPPLE", + "glPolygonMode", + "glPolygonOffset", + "glPolygonStipple", + "glPopAttrib", + "glPopClientAttrib", + "glPopGroupMarkerEXT", + "glPopMatrix", + "glPopName", + "glPrimitiveRestartIndex", + "glPrioritizeTextures", + "glProgramBinary", + "glProgramEnvParameter4dARB", + "glProgramEnvParameter4dvARB", + "glProgramEnvParameter4fARB", + "glProgramEnvParameter4fvARB", + "glProgramEnvParameters4fvEXT", + "glProgramLocalParameter4dARB", + "glProgramLocalParameter4dvARB", + "glProgramLocalParameter4fARB", + "glProgramLocalParameter4fvARB", + "glProgramLocalParameters4fvEXT", + "glProgramParameteri", + "glProgramParameteriEXT", + "glProgramStringARB", + "glProgramUniform1d", + "glProgramUniform1dv", + "glProgramUniform1f", + "glProgramUniform1fv", + "glProgramUniform1i", + "glProgramUniform1iv", + "glProgramUniform1ui", + "glProgramUniform1uiv", + "glProgramUniform2d", + "glProgramUniform2dv", + "glProgramUniform2f", + "glProgramUniform2fv", + "glProgramUniform2i", + "glProgramUniform2iv", + "glProgramUniform2ui", + "glProgramUniform2uiv", + "glProgramUniform3d", + "glProgramUniform3dv", + "glProgramUniform3f", + "glProgramUniform3fv", + "glProgramUniform3i", + "glProgramUniform3iv", + "glProgramUniform3ui", + "glProgramUniform3uiv", + "glProgramUniform4d", + "glProgramUniform4dv", + "glProgramUniform4f", + "glProgramUniform4fv", + "glProgramUniform4i", + "glProgramUniform4iv", + "glProgramUniform4ui", + "glProgramUniform4uiv", + "glProgramUniformMatrix2dv", + "glProgramUniformMatrix2fv", + "glProgramUniformMatrix2x3dv", + "glProgramUniformMatrix2x3fv", + "glProgramUniformMatrix2x4dv", + "glProgramUniformMatrix2x4fv", + "glProgramUniformMatrix3dv", + "glProgramUniformMatrix3fv", + "glProgramUniformMatrix3x2dv", + "glProgramUniformMatrix3x2fv", + "glProgramUniformMatrix3x4dv", + "glProgramUniformMatrix3x4fv", + "glProgramUniformMatrix4dv", + "glProgramUniformMatrix4fv", + "glProgramUniformMatrix4x2dv", + "glProgramUniformMatrix4x2fv", + "glProgramUniformMatrix4x3dv", + "glProgramUniformMatrix4x3fv", + "glProvokingVertex", + "glProvokingVertexEXT", + "glPushAttrib", + "glPushClientAttrib", + "glPushGroupMarkerEXT", + "glPushMatrix", + "glPushName", + "glQueryCounter", + "glRasterPos2d", + "glRasterPos2dv", + "glRasterPos2f", + "glRasterPos2fv", + "glRasterPos2i", + "glRasterPos2iv", + "glRasterPos2s", + "glRasterPos2sv", + "glRasterPos3d", + "glRasterPos3dv", + "glRasterPos3f", + "glRasterPos3fv", + "glRasterPos3i", + "glRasterPos3iv", + "glRasterPos3s", + "glRasterPos3sv", + "glRasterPos4d", + "glRasterPos4dv", + "glRasterPos4f", + "glRasterPos4fv", + "glRasterPos4i", + "glRasterPos4iv", + "glRasterPos4s", + "glRasterPos4sv", + "glReadBuffer", + "glReadPixels", + "glRectd", + "glRectdv", + "glRectf", + "glRectfv", + "glRecti", + "glRectiv", + "glRects", + "glRectsv", + "glReleaseShaderCompiler", + "glRenderMode", + "glRenderbufferStorage", + "glRenderbufferStorageEXT", + "glRenderbufferStorageMultisample", + "glRenderbufferStorageMultisampleEXT", + "glResetHistogram", + "glResetMinmax", + "glResumeTransformFeedback", + "glRotated", + "glRotatef", + "glSampleCoverage", + "glSampleCoverageARB", + "glSampleMaski", + "glSamplePass", + "glSamplePassARB", + "glSamplerParameterIiv", + "glSamplerParameterIuiv", + "glSamplerParameterf", + "glSamplerParameterfv", + "glSamplerParameteri", + "glSamplerParameteriv", + "glScaled", + "glScalef", + "glScissor", + "glScissorArrayv", + "glScissorIndexed", + "glScissorIndexedv", + "glSecondaryColor3b", + "glSecondaryColor3bEXT", + "glSecondaryColor3bv", + "glSecondaryColor3bvEXT", + "glSecondaryColor3d", + "glSecondaryColor3dEXT", + "glSecondaryColor3dv", + "glSecondaryColor3dvEXT", + "glSecondaryColor3f", + "glSecondaryColor3fEXT", + "glSecondaryColor3fv", + "glSecondaryColor3fvEXT", + "glSecondaryColor3i", + "glSecondaryColor3iEXT", + "glSecondaryColor3iv", + "glSecondaryColor3ivEXT", + "glSecondaryColor3s", + "glSecondaryColor3sEXT", + "glSecondaryColor3sv", + "glSecondaryColor3svEXT", + "glSecondaryColor3ub", + "glSecondaryColor3ubEXT", + "glSecondaryColor3ubv", + "glSecondaryColor3ubvEXT", + "glSecondaryColor3ui", + "glSecondaryColor3uiEXT", + "glSecondaryColor3uiv", + "glSecondaryColor3uivEXT", + "glSecondaryColor3us", + "glSecondaryColor3usEXT", + "glSecondaryColor3usv", + "glSecondaryColor3usvEXT", + "glSecondaryColorPointer", + "glSecondaryColorPointerEXT", + "glSelectBuffer", + "glSeparableFilter2D", + "glSetFenceAPPLE", + "glShadeModel", + "glShaderBinary", + "glShaderSource", + "glShaderSourceARB", + "glStencilFunc", + "glStencilFuncSeparate", + "glStencilFuncSeparateATI", + "glStencilMask", + "glStencilMaskSeparate", + "glStencilOp", + "glStencilOpSeparate", + "glStencilOpSeparateATI", + "glSwapAPPLE", + "glTestFenceAPPLE", + "glTestObjectAPPLE", + "glTexBuffer", + "glTexCoord1d", + "glTexCoord1dv", + "glTexCoord1f", + "glTexCoord1fv", + "glTexCoord1i", + "glTexCoord1iv", + "glTexCoord1s", + "glTexCoord1sv", + "glTexCoord2d", + "glTexCoord2dv", + "glTexCoord2f", + "glTexCoord2fv", + "glTexCoord2i", + "glTexCoord2iv", + "glTexCoord2s", + "glTexCoord2sv", + "glTexCoord3d", + "glTexCoord3dv", + "glTexCoord3f", + "glTexCoord3fv", + "glTexCoord3i", + "glTexCoord3iv", + "glTexCoord3s", + "glTexCoord3sv", + "glTexCoord4d", + "glTexCoord4dv", + "glTexCoord4f", + "glTexCoord4fv", + "glTexCoord4i", + "glTexCoord4iv", + "glTexCoord4s", + "glTexCoord4sv", + "glTexCoordPointer", + "glTexEnvf", + "glTexEnvfv", + "glTexEnvi", + "glTexEnviv", + "glTexGend", + "glTexGendv", + "glTexGenf", + "glTexGenfv", + "glTexGeni", + "glTexGeniv", + "glTexImage1D", + "glTexImage2D", + "glTexImage2DMultisample", + "glTexImage3D", + "glTexImage3DMultisample", + "glTexParameterIiv", + "glTexParameterIivEXT", + "glTexParameterIuiv", + "glTexParameterIuivEXT", + "glTexParameterf", + "glTexParameterfv", + "glTexParameteri", + "glTexParameteriv", + "glTexStorage1D", + "glTexStorage2D", + "glTexStorage3D", + "glTexSubImage1D", + "glTexSubImage2D", + "glTexSubImage3D", + "glTextureBarrierNV", + "glTextureRangeAPPLE", + "glTransformFeedbackVaryings", + "glTransformFeedbackVaryingsEXT", + "glTranslated", + "glTranslatef", + "glUniform1d", + "glUniform1dv", + "glUniform1f", + "glUniform1fARB", + "glUniform1fv", + "glUniform1fvARB", + "glUniform1i", + "glUniform1iARB", + "glUniform1iv", + "glUniform1ivARB", + "glUniform1ui", + "glUniform1uiEXT", + "glUniform1uiv", + "glUniform1uivEXT", + "glUniform2d", + "glUniform2dv", + "glUniform2f", + "glUniform2fARB", + "glUniform2fv", + "glUniform2fvARB", + "glUniform2i", + "glUniform2iARB", + "glUniform2iv", + "glUniform2ivARB", + "glUniform2ui", + "glUniform2uiEXT", + "glUniform2uiv", + "glUniform2uivEXT", + "glUniform3d", + "glUniform3dv", + "glUniform3f", + "glUniform3fARB", + "glUniform3fv", + "glUniform3fvARB", + "glUniform3i", + "glUniform3iARB", + "glUniform3iv", + "glUniform3ivARB", + "glUniform3ui", + "glUniform3uiEXT", + "glUniform3uiv", + "glUniform3uivEXT", + "glUniform4d", + "glUniform4dv", + "glUniform4f", + "glUniform4fARB", + "glUniform4fv", + "glUniform4fvARB", + "glUniform4i", + "glUniform4iARB", + "glUniform4iv", + "glUniform4ivARB", + "glUniform4ui", + "glUniform4uiEXT", + "glUniform4uiv", + "glUniform4uivEXT", + "glUniformBlockBinding", + "glUniformBufferEXT", + "glUniformMatrix2dv", + "glUniformMatrix2fv", + "glUniformMatrix2fvARB", + "glUniformMatrix2x3dv", + "glUniformMatrix2x3fv", + "glUniformMatrix2x4dv", + "glUniformMatrix2x4fv", + "glUniformMatrix3dv", + "glUniformMatrix3fv", + "glUniformMatrix3fvARB", + "glUniformMatrix3x2dv", + "glUniformMatrix3x2fv", + "glUniformMatrix3x4dv", + "glUniformMatrix3x4fv", + "glUniformMatrix4dv", + "glUniformMatrix4fv", + "glUniformMatrix4fvARB", + "glUniformMatrix4x2dv", + "glUniformMatrix4x2fv", + "glUniformMatrix4x3dv", + "glUniformMatrix4x3fv", + "glUniformSubroutinesuiv", + "glUnlockArraysEXT", + "glUnmapBuffer", + "glUnmapBufferARB", + "glUseProgram", + "glUseProgramObjectARB", + "glUseProgramStages", + "glValidateProgram", + "glValidateProgramARB", + "glValidateProgramPipeline", + "glVertex2d", + "glVertex2dv", + "glVertex2f", + "glVertex2fv", + "glVertex2i", + "glVertex2iv", + "glVertex2s", + "glVertex2sv", + "glVertex3d", + "glVertex3dv", + "glVertex3f", + "glVertex3fv", + "glVertex3i", + "glVertex3iv", + "glVertex3s", + "glVertex3sv", + "glVertex4d", + "glVertex4dv", + "glVertex4f", + "glVertex4fv", + "glVertex4i", + "glVertex4iv", + "glVertex4s", + "glVertex4sv", + "glVertexArrayParameteriAPPLE", + "glVertexArrayRangeAPPLE", + "glVertexAttrib1d", + "glVertexAttrib1dARB", + "glVertexAttrib1dv", + "glVertexAttrib1dvARB", + "glVertexAttrib1f", + "glVertexAttrib1fARB", + "glVertexAttrib1fv", + "glVertexAttrib1fvARB", + "glVertexAttrib1s", + "glVertexAttrib1sARB", + "glVertexAttrib1sv", + "glVertexAttrib1svARB", + "glVertexAttrib2d", + "glVertexAttrib2dARB", + "glVertexAttrib2dv", + "glVertexAttrib2dvARB", + "glVertexAttrib2f", + "glVertexAttrib2fARB", + "glVertexAttrib2fv", + "glVertexAttrib2fvARB", + "glVertexAttrib2s", + "glVertexAttrib2sARB", + "glVertexAttrib2sv", + "glVertexAttrib2svARB", + "glVertexAttrib3d", + "glVertexAttrib3dARB", + "glVertexAttrib3dv", + "glVertexAttrib3dvARB", + "glVertexAttrib3f", + "glVertexAttrib3fARB", + "glVertexAttrib3fv", + "glVertexAttrib3fvARB", + "glVertexAttrib3s", + "glVertexAttrib3sARB", + "glVertexAttrib3sv", + "glVertexAttrib3svARB", + "glVertexAttrib4Nbv", + "glVertexAttrib4NbvARB", + "glVertexAttrib4Niv", + "glVertexAttrib4NivARB", + "glVertexAttrib4Nsv", + "glVertexAttrib4NsvARB", + "glVertexAttrib4Nub", + "glVertexAttrib4NubARB", + "glVertexAttrib4Nubv", + "glVertexAttrib4NubvARB", + "glVertexAttrib4Nuiv", + "glVertexAttrib4NuivARB", + "glVertexAttrib4Nusv", + "glVertexAttrib4NusvARB", + "glVertexAttrib4bv", + "glVertexAttrib4bvARB", + "glVertexAttrib4d", + "glVertexAttrib4dARB", + "glVertexAttrib4dv", + "glVertexAttrib4dvARB", + "glVertexAttrib4f", + "glVertexAttrib4fARB", + "glVertexAttrib4fv", + "glVertexAttrib4fvARB", + "glVertexAttrib4iv", + "glVertexAttrib4ivARB", + "glVertexAttrib4s", + "glVertexAttrib4sARB", + "glVertexAttrib4sv", + "glVertexAttrib4svARB", + "glVertexAttrib4ubv", + "glVertexAttrib4ubvARB", + "glVertexAttrib4uiv", + "glVertexAttrib4uivARB", + "glVertexAttrib4usv", + "glVertexAttrib4usvARB", + "glVertexAttribDivisor", + "glVertexAttribDivisorARB", + "glVertexAttribI1i", + "glVertexAttribI1iEXT", + "glVertexAttribI1iv", + "glVertexAttribI1ivEXT", + "glVertexAttribI1ui", + "glVertexAttribI1uiEXT", + "glVertexAttribI1uiv", + "glVertexAttribI1uivEXT", + "glVertexAttribI2i", + "glVertexAttribI2iEXT", + "glVertexAttribI2iv", + "glVertexAttribI2ivEXT", + "glVertexAttribI2ui", + "glVertexAttribI2uiEXT", + "glVertexAttribI2uiv", + "glVertexAttribI2uivEXT", + "glVertexAttribI3i", + "glVertexAttribI3iEXT", + "glVertexAttribI3iv", + "glVertexAttribI3ivEXT", + "glVertexAttribI3ui", + "glVertexAttribI3uiEXT", + "glVertexAttribI3uiv", + "glVertexAttribI3uivEXT", + "glVertexAttribI4bv", + "glVertexAttribI4bvEXT", + "glVertexAttribI4i", + "glVertexAttribI4iEXT", + "glVertexAttribI4iv", + "glVertexAttribI4ivEXT", + "glVertexAttribI4sv", + "glVertexAttribI4svEXT", + "glVertexAttribI4ubv", + "glVertexAttribI4ubvEXT", + "glVertexAttribI4ui", + "glVertexAttribI4uiEXT", + "glVertexAttribI4uiv", + "glVertexAttribI4uivEXT", + "glVertexAttribI4usv", + "glVertexAttribI4usvEXT", + "glVertexAttribIPointer", + "glVertexAttribIPointerEXT", + "glVertexAttribL1d", + "glVertexAttribL1dv", + "glVertexAttribL2d", + "glVertexAttribL2dv", + "glVertexAttribL3d", + "glVertexAttribL3dv", + "glVertexAttribL4d", + "glVertexAttribL4dv", + "glVertexAttribLPointer", + "glVertexAttribP1ui", + "glVertexAttribP1uiv", + "glVertexAttribP2ui", + "glVertexAttribP2uiv", + "glVertexAttribP3ui", + "glVertexAttribP3uiv", + "glVertexAttribP4ui", + "glVertexAttribP4uiv", + "glVertexAttribPointer", + "glVertexAttribPointerARB", + "glVertexBlendARB", + "glVertexPointSizefAPPLE", + "glVertexPointer", + "glViewport", + "glViewportArrayv", + "glViewportIndexedf", + "glViewportIndexedfv", + "glWaitSync", + "glWeightPointerARB", + "glWeightbvARB", + "glWeightdvARB", + "glWeightfvARB", + "glWeightivARB", + "glWeightsvARB", + "glWeightubvARB", + "glWeightuivARB", + "glWeightusvARB", + "glWindowPos2d", + "glWindowPos2dARB", + "glWindowPos2dv", + "glWindowPos2dvARB", + "glWindowPos2f", + "glWindowPos2fARB", + "glWindowPos2fv", + "glWindowPos2fvARB", + "glWindowPos2i", + "glWindowPos2iARB", + "glWindowPos2iv", + "glWindowPos2ivARB", + "glWindowPos2s", + "glWindowPos2sARB", + "glWindowPos2sv", + "glWindowPos2svARB", + "glWindowPos3d", + "glWindowPos3dARB", + "glWindowPos3dv", + "glWindowPos3dvARB", + "glWindowPos3f", + "glWindowPos3fARB", + "glWindowPos3fv", + "glWindowPos3fvARB", + "glWindowPos3i", + "glWindowPos3iARB", + "glWindowPos3iv", + "glWindowPos3ivARB", + "glWindowPos3s", + "glWindowPos3sARB", + "glWindowPos3sv", + "glWindowPos3svARB", +)) + class CglTracer(GlTracer): def isFunctionPublic(self, function): # all OpenGL symbols are visible on MacOSX return True + def traceFunctionProto(self, function): + print 'static' + print function.prototype(name = 'my_' + function.name) + + def traceFunctionImpl(self, function): + if function.name not in funcs: + return + + print 'extern "C"' + print function.prototype() + ';' + print + + GlTracer.traceFunctionImpl(self, function) + + # http://opensource.apple.com//source/dyld/dyld-239.4/include/mach-o/dyld-interposing.h + print 'DYLD_INTERPOSE(my_%s, %s)' % (function.name, function.name) + print + def traceFunctionImplBody(self, function): if function.name == 'CGLReleaseContext': # Unlike other GL APIs like EGL or GLX, CGL will make the context @@ -78,6 +1437,15 @@ class CglTracer(GlTracer): if function.name == 'CGLRetainContext': print ' gltrace::retainContext((uintptr_t)ctx);' + def ______doInvokeFunction(self, function, prefix='_', suffix=''): + # Same as invokeFunction() but called both when trace is enabled or disabled. + if function.type is Void: + result = '' + else: + result = '_result = ' + dispatch = function.name + suffix + print ' %s%s(%s);' % (result, dispatch, ', '.join([str(arg.name) for arg in function.args])) + if __name__ == '__main__': print @@ -92,6 +1460,12 @@ if __name__ == '__main__': print '#include "glproc.hpp"' print '#include "glsize.hpp"' print + #print '#include <mach-o/dyld-interposing.h>' + print ''' +#define DYLD_INTERPOSE(_replacement,_replacee) \ + __attribute__((used)) static struct{ const void* replacement; const void* replacee; } _interpose_##_replacee \ + __attribute__ ((section ("__DATA,__interpose"))) = { (const void*)(unsigned long)&_replacement, (const void*)(unsigned long)&_replacee };''' + print module = Module() module.mergeModule(cglapi) diff --git a/wrappers/gltrace.py b/wrappers/gltrace.py index 38f1516a..37664ae5 100644 --- a/wrappers/gltrace.py +++ b/wrappers/gltrace.py @@ -1071,7 +1071,7 @@ class GlTracer(Tracer): print print ' vertex_attrib _vertex_attrib = _get_vertex_attrib();' print - for suffix in ['', 'NV']: + for suffix in ['']: if suffix: SUFFIX = '_' + suffix else: diff --git a/wrappers/trace.py b/wrappers/trace.py index 18c8816e..8eec9b9b 100644 --- a/wrappers/trace.py +++ b/wrappers/trace.py @@ -549,12 +549,18 @@ class Tracer: def isFunctionPublic(self, function): return True - def traceFunctionImpl(self, function): + def traceFunctionProto(self, function): if self.isFunctionPublic(function): print 'extern "C" PUBLIC' else: print 'extern "C" PRIVATE' - print function.prototype() + ' {' + print function.prototype() + + def traceFunctionImpl(self, function): + self.traceFunctionProto(function) + + print '{' + if function.type is not stdapi.Void: print ' %s _result;' % function.type |