Bug 1411626 - don't use memset on mozilla::gl::GLContextSymbols since it's not a trivial type. r?jgilbert draft
authorAndi-Bogdan Postelnicu <bpostelnicu@mozilla.com>
Thu, 26 Oct 2017 16:41:51 +0300
changeset 686821 195e10f45ee095dc4f0b7ee3a0e7a419ec0c59aa
parent 686540 64bab5cbb9b63808d04babfbcfba3175fd99f69d
child 737486 1e2b281eb7af4638e713e9d8a9b3a2f84f10ea4a
push id86307
push userbmo:bpostelnicu@mozilla.com
push dateThu, 26 Oct 2017 13:42:12 +0000
reviewersjgilbert
bugs1411626
milestone58.0a1
Bug 1411626 - don't use memset on mozilla::gl::GLContextSymbols since it's not a trivial type. r?jgilbert MozReview-Commit-ID: DiGNIwYqgE8
gfx/gl/GLContextSymbols.h
--- a/gfx/gl/GLContextSymbols.h
+++ b/gfx/gl/GLContextSymbols.h
@@ -22,433 +22,433 @@
 #define GLAPI
 #endif
 
 namespace mozilla {
 namespace gl {
 
 struct GLContextSymbols
 {
-    GLContextSymbols() {
-        Zero();
-    }
-
     void Zero() {
-        memset(this, 0, sizeof(GLContextSymbols));
+      memset(&fActiveTexture,
+             0,
+             reinterpret_cast<char*>(&fPrimitiveRestartIndex) +
+               sizeof(fPrimitiveRestartIndex) -
+               reinterpret_cast<char*>(&fActiveTexture));
     }
 
-    void (GLAPIENTRY * fActiveTexture)(GLenum);
-    void (GLAPIENTRY * fAttachShader)(GLuint, GLuint);
-    void (GLAPIENTRY * fBeginQuery)(GLenum, GLuint);
-    void (GLAPIENTRY * fBindAttribLocation)(GLuint, GLuint, const GLchar*);
-    void (GLAPIENTRY * fBindBuffer)(GLenum, GLuint);
-    void (GLAPIENTRY * fBindTexture)(GLenum, GLuint);
-    void (GLAPIENTRY * fBindVertexArray)(GLuint);
-    void (GLAPIENTRY * fBlendColor)(GLfloat, GLfloat, GLfloat, GLfloat);
-    void (GLAPIENTRY * fBlendEquation)(GLenum);
-    void (GLAPIENTRY * fBlendEquationSeparate)(GLenum, GLenum);
-    void (GLAPIENTRY * fBlendFunc)(GLenum, GLenum);
-    void (GLAPIENTRY * fBlendFuncSeparate)(GLenum, GLenum, GLenum, GLenum);
-    void (GLAPIENTRY * fBufferData)(GLenum, GLsizeiptr, const GLvoid*, GLenum);
-    void (GLAPIENTRY * fBufferSubData)(GLenum, GLintptr, GLsizeiptr, const GLvoid*);
+    void (GLAPIENTRY * fActiveTexture)(GLenum) = 0;
+    void (GLAPIENTRY * fAttachShader)(GLuint, GLuint) = 0;
+    void (GLAPIENTRY * fBeginQuery)(GLenum, GLuint) = 0;
+    void (GLAPIENTRY * fBindAttribLocation)(GLuint, GLuint, const GLchar*) = 0;
+    void (GLAPIENTRY * fBindBuffer)(GLenum, GLuint) = 0;
+    void (GLAPIENTRY * fBindTexture)(GLenum, GLuint) = 0;
+    void (GLAPIENTRY * fBindVertexArray)(GLuint) = 0;
+    void (GLAPIENTRY * fBlendColor)(GLfloat, GLfloat, GLfloat, GLfloat) = 0;
+    void (GLAPIENTRY * fBlendEquation)(GLenum) = 0;
+    void (GLAPIENTRY * fBlendEquationSeparate)(GLenum, GLenum) = 0;
+    void (GLAPIENTRY * fBlendFunc)(GLenum, GLenum) = 0;
+    void (GLAPIENTRY * fBlendFuncSeparate)(GLenum, GLenum, GLenum, GLenum) = 0;
+    void (GLAPIENTRY * fBufferData)(GLenum, GLsizeiptr, const GLvoid*, GLenum) = 0;
+    void (GLAPIENTRY * fBufferSubData)(GLenum, GLintptr, GLsizeiptr, const GLvoid*) = 0;
 
-    void (GLAPIENTRY * fClear)(GLbitfield);
-    void (GLAPIENTRY * fClearBufferfi)(GLenum, GLint, GLfloat, GLint);
-    void (GLAPIENTRY * fClearBufferfv)(GLenum, GLint, const GLfloat*);
-    void (GLAPIENTRY * fClearBufferiv)(GLenum, GLint, const GLint*);
-    void (GLAPIENTRY * fClearBufferuiv)(GLenum, GLint, const GLuint*);
-    void (GLAPIENTRY * fClearColor)(GLfloat, GLfloat, GLfloat, GLfloat);
-    void (GLAPIENTRY * fClearStencil)(GLint);
+    void (GLAPIENTRY * fClear)(GLbitfield) = 0;
+    void (GLAPIENTRY * fClearBufferfi)(GLenum, GLint, GLfloat, GLint) = 0;
+    void (GLAPIENTRY * fClearBufferfv)(GLenum, GLint, const GLfloat*) = 0;
+    void (GLAPIENTRY * fClearBufferiv)(GLenum, GLint, const GLint*) = 0;
+    void (GLAPIENTRY * fClearBufferuiv)(GLenum, GLint, const GLuint*) = 0;
+    void (GLAPIENTRY * fClearColor)(GLfloat, GLfloat, GLfloat, GLfloat) = 0;
+    void (GLAPIENTRY * fClearStencil)(GLint) = 0;
     void (GLAPIENTRY * fColorMask)(realGLboolean, realGLboolean, realGLboolean,
-                                    realGLboolean);
+                                    realGLboolean) = 0;
     void (GLAPIENTRY * fCompressedTexImage2D)(GLenum, GLint, GLenum, GLsizei, GLsizei,
-                                                GLint, GLsizei, const GLvoid*);
+                                                GLint, GLsizei, const GLvoid*) = 0;
     void (GLAPIENTRY * fCompressedTexSubImage2D)(GLenum, GLint, GLint, GLint, GLsizei,
                                                     GLsizei, GLenum, GLsizei,
-                                                    const GLvoid*);
-    void (GLAPIENTRY * fCullFace)(GLenum);
-    void (GLAPIENTRY * fDetachShader)(GLuint, GLuint);
-    void (GLAPIENTRY * fDepthFunc)(GLenum);
-    void (GLAPIENTRY * fDepthMask)(realGLboolean);
-    void (GLAPIENTRY * fDisable)(GLenum);
-    void (GLAPIENTRY * fDisableVertexAttribArray)(GLuint);
-    void (GLAPIENTRY * fDrawArrays)(GLenum, GLint, GLsizei);
-    void (GLAPIENTRY * fDrawBuffer)(GLenum);
-    void (GLAPIENTRY * fDrawBuffers)(GLsizei, const GLenum*);
-    void (GLAPIENTRY * fDrawElements)(GLenum, GLsizei, GLenum, const GLvoid*);
-    void (GLAPIENTRY * fEnable)(GLenum);
-    void (GLAPIENTRY * fEnableVertexAttribArray)(GLuint);
-    void (GLAPIENTRY * fFinish)(void);
-    void (GLAPIENTRY * fEndQuery)(GLenum);
-    void (GLAPIENTRY * fFlush)(void);
-    void (GLAPIENTRY * fFrontFace)(GLenum);
+                                                    const GLvoid*) = 0;
+    void (GLAPIENTRY * fCullFace)(GLenum) = 0;
+    void (GLAPIENTRY * fDetachShader)(GLuint, GLuint) = 0;
+    void (GLAPIENTRY * fDepthFunc)(GLenum) = 0;
+    void (GLAPIENTRY * fDepthMask)(realGLboolean) = 0;
+    void (GLAPIENTRY * fDisable)(GLenum) = 0;
+    void (GLAPIENTRY * fDisableVertexAttribArray)(GLuint) = 0;
+    void (GLAPIENTRY * fDrawArrays)(GLenum, GLint, GLsizei) = 0;
+    void (GLAPIENTRY * fDrawBuffer)(GLenum) = 0;
+    void (GLAPIENTRY * fDrawBuffers)(GLsizei, const GLenum*) = 0;
+    void (GLAPIENTRY * fDrawElements)(GLenum, GLsizei, GLenum, const GLvoid*) = 0;
+    void (GLAPIENTRY * fEnable)(GLenum) = 0;
+    void (GLAPIENTRY * fEnableVertexAttribArray)(GLuint) = 0;
+    void (GLAPIENTRY * fFinish)(void) = 0;
+    void (GLAPIENTRY * fEndQuery)(GLenum) = 0;
+    void (GLAPIENTRY * fFlush)(void) = 0;
+    void (GLAPIENTRY * fFrontFace)(GLenum) = 0;
     void (GLAPIENTRY * fGetActiveAttrib)(GLuint, GLuint, GLsizei, GLsizei*, GLint*,
-                                            GLenum*, GLchar*);
+                                            GLenum*, GLchar*) = 0;
     void (GLAPIENTRY * fGetActiveUniform)(GLuint, GLuint, GLsizei, GLsizei*,
-                                            GLint*, GLenum*, GLchar*);
-    void (GLAPIENTRY * fGetAttachedShaders)(GLuint, GLsizei, GLsizei*, GLuint*);
-    GLint (GLAPIENTRY * fGetAttribLocation)(GLuint, const GLchar*);
-    void (GLAPIENTRY * fGetIntegerv)(GLenum, GLint*);
-    void (GLAPIENTRY * fGetFloatv)(GLenum, GLfloat*);
-    void (GLAPIENTRY * fGetBooleanv)(GLenum, realGLboolean*);
-    void (GLAPIENTRY * fGetBufferParameteriv)(GLenum, GLenum, GLint*);
-    void (GLAPIENTRY * fGenerateMipmap)(GLenum);
-    GLenum (GLAPIENTRY * fGetError)(void);
-    void (GLAPIENTRY * fGetProgramiv)(GLuint, GLenum, GLint*);
-    void (GLAPIENTRY * fGetProgramInfoLog)(GLuint, GLsizei, GLsizei*, GLchar*);
-    void (GLAPIENTRY * fGetQueryiv)(GLenum, GLenum, GLint*);
-    void (GLAPIENTRY * fGetQueryObjectiv)(GLuint, GLenum, GLint*);
-    void (GLAPIENTRY * fGetQueryObjectuiv)(GLuint, GLenum, GLuint*);
-    void (GLAPIENTRY * fGetQueryObjecti64v)(GLuint, GLenum, GLint64*);
-    void (GLAPIENTRY * fGetQueryObjectui64v)(GLuint, GLenum, GLuint64*);
-    void (GLAPIENTRY * fQueryCounter)(GLuint, GLenum);
-    void (GLAPIENTRY * fTexParameteri)(GLenum, GLenum, GLint);
-    void (GLAPIENTRY * fTexParameteriv)(GLenum, GLenum, const GLint*);
-    void (GLAPIENTRY * fTexParameterf)(GLenum, GLenum, GLfloat);
-    GLubyte* (GLAPIENTRY * fGetString)(GLenum);
-    void (GLAPIENTRY * fGetTexImage)(GLenum, GLint, GLenum, GLenum, GLvoid*);
-    void (GLAPIENTRY * fGetTexLevelParameteriv)(GLenum, GLint, GLenum, GLint*);
-    void (GLAPIENTRY * fGetTexParameterfv)(GLenum, GLenum, GLfloat*);
-    void (GLAPIENTRY * fGetTexParameteriv)(GLenum, GLenum, GLint*);
-    void (GLAPIENTRY * fGetUniformfv)(GLuint, GLint, GLfloat*);
-    void (GLAPIENTRY * fGetUniformiv)(GLuint, GLint, GLint*);
-    void (GLAPIENTRY * fGetUniformuiv)(GLuint, GLint, GLuint*);
-    GLint (GLAPIENTRY * fGetUniformLocation)(GLint, const GLchar*);
-    void (GLAPIENTRY * fGetVertexAttribfv)(GLuint, GLenum, GLfloat*);
-    void (GLAPIENTRY * fGetVertexAttribiv)(GLuint, GLenum, GLint*);
-    void (GLAPIENTRY * fGetVertexAttribPointerv)(GLuint, GLenum, GLvoid**);
-    void (GLAPIENTRY * fHint)(GLenum, GLenum);
-    realGLboolean (GLAPIENTRY * fIsBuffer)(GLuint);
-    realGLboolean (GLAPIENTRY * fIsEnabled)(GLenum);
-    realGLboolean (GLAPIENTRY * fIsProgram)(GLuint);
-    realGLboolean (GLAPIENTRY * fIsQuery)(GLuint);
-    realGLboolean (GLAPIENTRY * fIsShader)(GLuint);
-    realGLboolean (GLAPIENTRY * fIsTexture)(GLuint);
-    void (GLAPIENTRY * fLineWidth)(GLfloat);
-    void (GLAPIENTRY * fLinkProgram)(GLuint);
-    void (GLAPIENTRY * fPixelStorei)(GLenum, GLint);
-    void (GLAPIENTRY * fPointParameterf)(GLenum, GLfloat);
-    void (GLAPIENTRY * fPolygonMode)(GLenum, GLenum);
-    void (GLAPIENTRY * fPolygonOffset)(GLfloat, GLfloat);
-    void (GLAPIENTRY * fReadBuffer)(GLenum);
+                                            GLint*, GLenum*, GLchar*) = 0;
+    void (GLAPIENTRY * fGetAttachedShaders)(GLuint, GLsizei, GLsizei*, GLuint*) = 0;
+    GLint (GLAPIENTRY * fGetAttribLocation)(GLuint, const GLchar*) = 0;
+    void (GLAPIENTRY * fGetIntegerv)(GLenum, GLint*) = 0;
+    void (GLAPIENTRY * fGetFloatv)(GLenum, GLfloat*) = 0;
+    void (GLAPIENTRY * fGetBooleanv)(GLenum, realGLboolean*) = 0;
+    void (GLAPIENTRY * fGetBufferParameteriv)(GLenum, GLenum, GLint*) = 0;
+    void (GLAPIENTRY * fGenerateMipmap)(GLenum) = 0;
+    GLenum (GLAPIENTRY * fGetError)(void) = 0;
+    void (GLAPIENTRY * fGetProgramiv)(GLuint, GLenum, GLint*) = 0;
+    void (GLAPIENTRY * fGetProgramInfoLog)(GLuint, GLsizei, GLsizei*, GLchar*) = 0;
+    void (GLAPIENTRY * fGetQueryiv)(GLenum, GLenum, GLint*) = 0;
+    void (GLAPIENTRY * fGetQueryObjectiv)(GLuint, GLenum, GLint*) = 0;
+    void (GLAPIENTRY * fGetQueryObjectuiv)(GLuint, GLenum, GLuint*) = 0;
+    void (GLAPIENTRY * fGetQueryObjecti64v)(GLuint, GLenum, GLint64*) = 0;
+    void (GLAPIENTRY * fGetQueryObjectui64v)(GLuint, GLenum, GLuint64*) = 0;
+    void (GLAPIENTRY * fQueryCounter)(GLuint, GLenum) = 0;
+    void (GLAPIENTRY * fTexParameteri)(GLenum, GLenum, GLint) = 0;
+    void (GLAPIENTRY * fTexParameteriv)(GLenum, GLenum, const GLint*) = 0;
+    void (GLAPIENTRY * fTexParameterf)(GLenum, GLenum, GLfloat) = 0;
+    GLubyte* (GLAPIENTRY * fGetString)(GLenum) = 0;
+    void (GLAPIENTRY * fGetTexImage)(GLenum, GLint, GLenum, GLenum, GLvoid*) = 0;
+    void (GLAPIENTRY * fGetTexLevelParameteriv)(GLenum, GLint, GLenum, GLint*) = 0;
+    void (GLAPIENTRY * fGetTexParameterfv)(GLenum, GLenum, GLfloat*) = 0;
+    void (GLAPIENTRY * fGetTexParameteriv)(GLenum, GLenum, GLint*) = 0;
+    void (GLAPIENTRY * fGetUniformfv)(GLuint, GLint, GLfloat*) = 0;
+    void (GLAPIENTRY * fGetUniformiv)(GLuint, GLint, GLint*) = 0;
+    void (GLAPIENTRY * fGetUniformuiv)(GLuint, GLint, GLuint*) = 0;
+    GLint (GLAPIENTRY * fGetUniformLocation)(GLint, const GLchar*) = 0;
+    void (GLAPIENTRY * fGetVertexAttribfv)(GLuint, GLenum, GLfloat*) = 0;
+    void (GLAPIENTRY * fGetVertexAttribiv)(GLuint, GLenum, GLint*) = 0;
+    void (GLAPIENTRY * fGetVertexAttribPointerv)(GLuint, GLenum, GLvoid**) = 0;
+    void (GLAPIENTRY * fHint)(GLenum, GLenum) = 0;
+    realGLboolean (GLAPIENTRY * fIsBuffer)(GLuint) = 0;
+    realGLboolean (GLAPIENTRY * fIsEnabled)(GLenum) = 0;
+    realGLboolean (GLAPIENTRY * fIsProgram)(GLuint) = 0;
+    realGLboolean (GLAPIENTRY * fIsQuery)(GLuint) = 0;
+    realGLboolean (GLAPIENTRY * fIsShader)(GLuint) = 0;
+    realGLboolean (GLAPIENTRY * fIsTexture)(GLuint) = 0;
+    void (GLAPIENTRY * fLineWidth)(GLfloat) = 0;
+    void (GLAPIENTRY * fLinkProgram)(GLuint) = 0;
+    void (GLAPIENTRY * fPixelStorei)(GLenum, GLint) = 0;
+    void (GLAPIENTRY * fPointParameterf)(GLenum, GLfloat) = 0;
+    void (GLAPIENTRY * fPolygonMode)(GLenum, GLenum) = 0;
+    void (GLAPIENTRY * fPolygonOffset)(GLfloat, GLfloat) = 0;
+    void (GLAPIENTRY * fReadBuffer)(GLenum) = 0;
     void (GLAPIENTRY * fReadPixels)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum,
-                                    GLvoid*);
-    void (GLAPIENTRY * fSampleCoverage)(GLclampf, realGLboolean);
-    void (GLAPIENTRY * fStencilFunc)(GLenum, GLint, GLuint);
-    void (GLAPIENTRY * fStencilFuncSeparate)(GLenum, GLenum, GLint, GLuint);
-    void (GLAPIENTRY * fStencilMask)(GLuint);
-    void (GLAPIENTRY * fStencilMaskSeparate)(GLenum, GLuint);
-    void (GLAPIENTRY * fStencilOp)(GLenum, GLenum, GLenum);
-    void (GLAPIENTRY * fStencilOpSeparate)(GLenum, GLenum, GLenum, GLenum);
+                                    GLvoid*) = 0;
+    void (GLAPIENTRY * fSampleCoverage)(GLclampf, realGLboolean) = 0;
+    void (GLAPIENTRY * fStencilFunc)(GLenum, GLint, GLuint) = 0;
+    void (GLAPIENTRY * fStencilFuncSeparate)(GLenum, GLenum, GLint, GLuint) = 0;
+    void (GLAPIENTRY * fStencilMask)(GLuint) = 0;
+    void (GLAPIENTRY * fStencilMaskSeparate)(GLenum, GLuint) = 0;
+    void (GLAPIENTRY * fStencilOp)(GLenum, GLenum, GLenum) = 0;
+    void (GLAPIENTRY * fStencilOpSeparate)(GLenum, GLenum, GLenum, GLenum) = 0;
     void (GLAPIENTRY * fTexImage2D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLint,
-                                    GLenum, GLenum, const GLvoid*);
+                                    GLenum, GLenum, const GLvoid*) = 0;
     void (GLAPIENTRY * fTexSubImage2D)(GLenum, GLint, GLint, GLint, GLsizei,
-                                        GLsizei, GLenum, GLenum, const void*);
-    void (GLAPIENTRY * fTextureRangeAPPLE)(GLenum, GLsizei, GLvoid*);
-    void (GLAPIENTRY * fUniform1f)(GLint, GLfloat);
-    void (GLAPIENTRY * fUniform1fv)(GLint, GLsizei, const GLfloat*);
-    void (GLAPIENTRY * fUniform1i)(GLint, GLint);
-    void (GLAPIENTRY * fUniform1iv)(GLint, GLsizei, const GLint*);
-    void (GLAPIENTRY * fUniform2f)(GLint, GLfloat, GLfloat);
-    void (GLAPIENTRY * fUniform2fv)(GLint, GLsizei, const GLfloat*);
-    void (GLAPIENTRY * fUniform2i)(GLint, GLint, GLint);
-    void (GLAPIENTRY * fUniform2iv)(GLint, GLsizei, const GLint*);
-    void (GLAPIENTRY * fUniform3f)(GLint, GLfloat, GLfloat, GLfloat);
-    void (GLAPIENTRY * fUniform3fv)(GLint, GLsizei, const GLfloat*);
-    void (GLAPIENTRY * fUniform3i)(GLint, GLint, GLint, GLint);
-    void (GLAPIENTRY * fUniform3iv)(GLint, GLsizei, const GLint*);
-    void (GLAPIENTRY * fUniform4f)(GLint, GLfloat, GLfloat, GLfloat, GLfloat);
-    void (GLAPIENTRY * fUniform4fv)(GLint, GLsizei, const GLfloat*);
-    void (GLAPIENTRY * fUniform4i)(GLint, GLint, GLint, GLint, GLint);
-    void (GLAPIENTRY * fUniform4iv)(GLint, GLsizei, const GLint*);
+                                        GLsizei, GLenum, GLenum, const void*) = 0;
+    void (GLAPIENTRY * fTextureRangeAPPLE)(GLenum, GLsizei, GLvoid*) = 0;
+    void (GLAPIENTRY * fUniform1f)(GLint, GLfloat) = 0;
+    void (GLAPIENTRY * fUniform1fv)(GLint, GLsizei, const GLfloat*) = 0;
+    void (GLAPIENTRY * fUniform1i)(GLint, GLint) = 0;
+    void (GLAPIENTRY * fUniform1iv)(GLint, GLsizei, const GLint*) = 0;
+    void (GLAPIENTRY * fUniform2f)(GLint, GLfloat, GLfloat) = 0;
+    void (GLAPIENTRY * fUniform2fv)(GLint, GLsizei, const GLfloat*) = 0;
+    void (GLAPIENTRY * fUniform2i)(GLint, GLint, GLint) = 0;
+    void (GLAPIENTRY * fUniform2iv)(GLint, GLsizei, const GLint*) = 0;
+    void (GLAPIENTRY * fUniform3f)(GLint, GLfloat, GLfloat, GLfloat) = 0;
+    void (GLAPIENTRY * fUniform3fv)(GLint, GLsizei, const GLfloat*) = 0;
+    void (GLAPIENTRY * fUniform3i)(GLint, GLint, GLint, GLint) = 0;
+    void (GLAPIENTRY * fUniform3iv)(GLint, GLsizei, const GLint*) = 0;
+    void (GLAPIENTRY * fUniform4f)(GLint, GLfloat, GLfloat, GLfloat, GLfloat) = 0;
+    void (GLAPIENTRY * fUniform4fv)(GLint, GLsizei, const GLfloat*) = 0;
+    void (GLAPIENTRY * fUniform4i)(GLint, GLint, GLint, GLint, GLint) = 0;
+    void (GLAPIENTRY * fUniform4iv)(GLint, GLsizei, const GLint*) = 0;
     void (GLAPIENTRY * fUniformMatrix2fv)(GLint, GLsizei, realGLboolean,
-                                            const GLfloat*);
+                                            const GLfloat*) = 0;
     void (GLAPIENTRY * fUniformMatrix2x3fv)(GLint, GLsizei, realGLboolean,
-                                            const GLfloat*);
+                                            const GLfloat*) = 0;
     void (GLAPIENTRY * fUniformMatrix2x4fv)(GLint, GLsizei, realGLboolean,
-                                            const GLfloat*);
+                                            const GLfloat*) = 0;
     void (GLAPIENTRY * fUniformMatrix3fv)(GLint, GLsizei, realGLboolean,
-                                            const GLfloat*);
+                                            const GLfloat*) = 0;
     void (GLAPIENTRY * fUniformMatrix3x2fv)(GLint, GLsizei, realGLboolean,
-                                            const GLfloat*);
+                                            const GLfloat*) = 0;
     void (GLAPIENTRY * fUniformMatrix3x4fv)(GLint, GLsizei, realGLboolean,
-                                            const GLfloat*);
+                                            const GLfloat*) = 0;
     void (GLAPIENTRY * fUniformMatrix4fv)(GLint, GLsizei, realGLboolean,
-                                            const GLfloat*);
+                                            const GLfloat*) = 0;
     void (GLAPIENTRY * fUniformMatrix4x2fv)(GLint, GLsizei, realGLboolean,
-                                            const GLfloat*);
+                                            const GLfloat*) = 0;
     void (GLAPIENTRY * fUniformMatrix4x3fv)(GLint, GLsizei, realGLboolean,
-                                            const GLfloat*);
+                                            const GLfloat*) = 0;
 
-    void (GLAPIENTRY * fUseProgram)(GLuint);
-    void (GLAPIENTRY * fValidateProgram)(GLuint);
+    void (GLAPIENTRY * fUseProgram)(GLuint) = 0;
+    void (GLAPIENTRY * fValidateProgram)(GLuint) = 0;
     void (GLAPIENTRY * fVertexAttribPointer)(GLuint, GLint, GLenum,
-                                                realGLboolean, GLsizei, const GLvoid*);
-    void (GLAPIENTRY * fVertexAttrib1f)(GLuint, GLfloat);
-    void (GLAPIENTRY * fVertexAttrib2f)(GLuint, GLfloat, GLfloat);
-    void (GLAPIENTRY * fVertexAttrib3f)(GLuint, GLfloat, GLfloat, GLfloat);
-    void (GLAPIENTRY * fVertexAttrib4f)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-    void (GLAPIENTRY * fVertexAttrib1fv)(GLuint, const GLfloat*);
-    void (GLAPIENTRY * fVertexAttrib2fv)(GLuint, const GLfloat*);
-    void (GLAPIENTRY * fVertexAttrib3fv)(GLuint, const GLfloat*);
-    void (GLAPIENTRY * fVertexAttrib4fv)(GLuint, const GLfloat*);
-    void (GLAPIENTRY * fCompileShader)(GLuint);
+                                                realGLboolean, GLsizei, const GLvoid*) = 0;
+    void (GLAPIENTRY * fVertexAttrib1f)(GLuint, GLfloat) = 0;
+    void (GLAPIENTRY * fVertexAttrib2f)(GLuint, GLfloat, GLfloat) = 0;
+    void (GLAPIENTRY * fVertexAttrib3f)(GLuint, GLfloat, GLfloat, GLfloat) = 0;
+    void (GLAPIENTRY * fVertexAttrib4f)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat) = 0;
+    void (GLAPIENTRY * fVertexAttrib1fv)(GLuint, const GLfloat*) = 0;
+    void (GLAPIENTRY * fVertexAttrib2fv)(GLuint, const GLfloat*) = 0;
+    void (GLAPIENTRY * fVertexAttrib3fv)(GLuint, const GLfloat*) = 0;
+    void (GLAPIENTRY * fVertexAttrib4fv)(GLuint, const GLfloat*) = 0;
+    void (GLAPIENTRY * fCompileShader)(GLuint) = 0;
     void (GLAPIENTRY * fCopyTexImage2D)(GLenum, GLint, GLenum, GLint, GLint,
-                                        GLsizei, GLsizei, GLint);
+                                        GLsizei, GLsizei, GLint) = 0;
     void (GLAPIENTRY * fCopyTexSubImage2D)(GLenum, GLint, GLint, GLint, GLint,
-                                            GLint, GLsizei, GLsizei);
-    void (GLAPIENTRY * fGetShaderiv)(GLuint, GLenum, GLint*);
-    void (GLAPIENTRY * fGetShaderInfoLog)(GLuint, GLsizei, GLsizei*, GLchar*);
-    void (GLAPIENTRY * fGetShaderPrecisionFormat)(GLenum, GLenum, GLint*, GLint*);
-    void (GLAPIENTRY * fGetShaderSource)(GLint, GLsizei, GLsizei*, GLchar*);
+                                            GLint, GLsizei, GLsizei) = 0;
+    void (GLAPIENTRY * fGetShaderiv)(GLuint, GLenum, GLint*) = 0;
+    void (GLAPIENTRY * fGetShaderInfoLog)(GLuint, GLsizei, GLsizei*, GLchar*) = 0;
+    void (GLAPIENTRY * fGetShaderPrecisionFormat)(GLenum, GLenum, GLint*, GLint*) = 0;
+    void (GLAPIENTRY * fGetShaderSource)(GLint, GLsizei, GLsizei*, GLchar*) = 0;
     void (GLAPIENTRY * fShaderSource)(GLuint, GLsizei, const GLchar* const*,
-                                        const GLint*);
+                                        const GLint*) = 0;
 
-    void (GLAPIENTRY * fBindFramebuffer)(GLenum, GLuint);
-    void (GLAPIENTRY * fBindRenderbuffer)(GLenum, GLuint);
-    GLenum (GLAPIENTRY * fCheckFramebufferStatus)(GLenum);
-    void (GLAPIENTRY * fFramebufferRenderbuffer)(GLenum, GLenum, GLenum, GLuint);
-    void (GLAPIENTRY * fFramebufferTexture2D)(GLenum, GLenum, GLenum, GLuint, GLint);
-    void (GLAPIENTRY * fFramebufferTextureLayer)(GLenum, GLenum, GLuint, GLint, GLint);
+    void (GLAPIENTRY * fBindFramebuffer)(GLenum, GLuint) = 0;
+    void (GLAPIENTRY * fBindRenderbuffer)(GLenum, GLuint) = 0;
+    GLenum (GLAPIENTRY * fCheckFramebufferStatus)(GLenum) = 0;
+    void (GLAPIENTRY * fFramebufferRenderbuffer)(GLenum, GLenum, GLenum, GLuint) = 0;
+    void (GLAPIENTRY * fFramebufferTexture2D)(GLenum, GLenum, GLenum, GLuint, GLint) = 0;
+    void (GLAPIENTRY * fFramebufferTextureLayer)(GLenum, GLenum, GLuint, GLint, GLint) = 0;
     void (GLAPIENTRY * fGetFramebufferAttachmentParameteriv)(GLenum, GLenum, GLenum,
-                                                                GLint*);
-    void (GLAPIENTRY * fGetRenderbufferParameteriv)(GLenum, GLenum, GLint*);
-    realGLboolean (GLAPIENTRY * fIsFramebuffer)(GLuint);
-    realGLboolean (GLAPIENTRY * fIsRenderbuffer)(GLuint);
-    realGLboolean (GLAPIENTRY * fIsVertexArray)(GLuint);
-    void (GLAPIENTRY * fRenderbufferStorage)(GLenum, GLenum, GLsizei, GLsizei);
+                                                                GLint*) = 0;
+    void (GLAPIENTRY * fGetRenderbufferParameteriv)(GLenum, GLenum, GLint*) = 0;
+    realGLboolean (GLAPIENTRY * fIsFramebuffer)(GLuint) = 0;
+    realGLboolean (GLAPIENTRY * fIsRenderbuffer)(GLuint) = 0;
+    realGLboolean (GLAPIENTRY * fIsVertexArray)(GLuint) = 0;
+    void (GLAPIENTRY * fRenderbufferStorage)(GLenum, GLenum, GLsizei, GLsizei) = 0;
 
-    void (GLAPIENTRY * fInvalidateFramebuffer)(GLenum, GLsizei, const GLenum*);
+    void (GLAPIENTRY * fInvalidateFramebuffer)(GLenum, GLsizei, const GLenum*) = 0;
     void (GLAPIENTRY * fInvalidateSubFramebuffer)(GLenum, GLsizei, const GLenum*, GLint,
-                                                    GLint, GLsizei, GLsizei);
+                                                    GLint, GLsizei, GLsizei) = 0;
 
     // These functions are only used by Skia/GL in desktop mode.
     // Other parts of Gecko should avoid using these
-    void (GLAPIENTRY * fClientActiveTexture)(GLenum);
-    void (GLAPIENTRY * fDisableClientState)(GLenum);
-    void (GLAPIENTRY * fEnableClientState)(GLenum);
-    void (GLAPIENTRY * fLoadIdentity)(void);
-    void (GLAPIENTRY * fLoadMatrixd)(const GLdouble*);
-    void (GLAPIENTRY * fLoadMatrixf)(const GLfloat*);
-    void (GLAPIENTRY * fMatrixMode)(GLenum);
-    void (GLAPIENTRY * fTexGeni)(GLenum, GLenum, GLint);
-    void (GLAPIENTRY * fTexGenf)(GLenum, GLenum, GLfloat);
-    void (GLAPIENTRY * fTexGenfv)(GLenum, GLenum, const GLfloat*);
-    void (GLAPIENTRY * fVertexPointer)(GLint, GLenum, GLsizei, const GLvoid*);
+    void (GLAPIENTRY * fClientActiveTexture)(GLenum) = 0;
+    void (GLAPIENTRY * fDisableClientState)(GLenum) = 0;
+    void (GLAPIENTRY * fEnableClientState)(GLenum) = 0;
+    void (GLAPIENTRY * fLoadIdentity)(void) = 0;
+    void (GLAPIENTRY * fLoadMatrixd)(const GLdouble*) = 0;
+    void (GLAPIENTRY * fLoadMatrixf)(const GLfloat*) = 0;
+    void (GLAPIENTRY * fMatrixMode)(GLenum) = 0;
+    void (GLAPIENTRY * fTexGeni)(GLenum, GLenum, GLint) = 0;
+    void (GLAPIENTRY * fTexGenf)(GLenum, GLenum, GLfloat) = 0;
+    void (GLAPIENTRY * fTexGenfv)(GLenum, GLenum, const GLfloat*) = 0;
+    void (GLAPIENTRY * fVertexPointer)(GLint, GLenum, GLsizei, const GLvoid*) = 0;
 
     void (GLAPIENTRY * fBlitFramebuffer)(GLint, GLint, GLint, GLint, GLint, GLint, GLint,
-                                            GLint, GLbitfield, GLenum);
+                                            GLint, GLbitfield, GLenum) = 0;
     void (GLAPIENTRY * fRenderbufferStorageMultisample)(GLenum, GLsizei, GLenum,
-                                                        GLsizei, GLsizei);
+                                                        GLsizei, GLsizei) = 0;
 
 
     /* These are different between GLES2 and desktop GL; we hide those differences,
         * use the GL names, but the most limited data type.
         */
-    void (GLAPIENTRY * fDepthRangef)(GLclampf, GLclampf);
-    void (GLAPIENTRY * fClearDepthf)(GLclampf);
+    void (GLAPIENTRY * fDepthRangef)(GLclampf, GLclampf) = 0;
+    void (GLAPIENTRY * fClearDepthf)(GLclampf) = 0;
 
-    void (GLAPIENTRY * fDepthRange)(GLclampd, GLclampd);
-    void (GLAPIENTRY * fClearDepth)(GLclampd);
+    void (GLAPIENTRY * fDepthRange)(GLclampd, GLclampd) = 0;
+    void (GLAPIENTRY * fClearDepth)(GLclampd) = 0;
 
     /* These are special because we end up tracking these so that we don't
         * have to query the values from GL.
         */
 
-    void (GLAPIENTRY * fViewport)(GLint, GLint, GLsizei, GLsizei);
-    void (GLAPIENTRY * fScissor)(GLint, GLint, GLsizei, GLsizei);
+    void (GLAPIENTRY * fViewport)(GLint, GLint, GLsizei, GLsizei) = 0;
+    void (GLAPIENTRY * fScissor)(GLint, GLint, GLsizei, GLsizei) = 0;
 
 
     /* These are special -- they create or delete GL resources that can live
         * in a shared namespace.  In DEBUG, we wrap these calls so that we can
         * check when we have something that failed to do cleanup at the time the
         * final context is destroyed.
         */
 
-    GLuint (GLAPIENTRY * fCreateProgram)();
-    GLuint (GLAPIENTRY * fCreateShader)(GLenum);
-    void (GLAPIENTRY * fGenBuffers)(GLsizei, GLuint*);
-    void (GLAPIENTRY * fGenQueries)(GLsizei, GLuint*);
-    void (GLAPIENTRY * fGenTextures)(GLsizei, GLuint*);
-    void (GLAPIENTRY * fGenFramebuffers)(GLsizei, GLuint*);
-    void (GLAPIENTRY * fGenRenderbuffers)(GLsizei, GLuint*);
-    void (GLAPIENTRY * fGenVertexArrays)(GLsizei, GLuint*);
+    GLuint (GLAPIENTRY * fCreateProgram)() = 0;
+    GLuint (GLAPIENTRY * fCreateShader)(GLenum) = 0;
+    void (GLAPIENTRY * fGenBuffers)(GLsizei, GLuint*) = 0;
+    void (GLAPIENTRY * fGenQueries)(GLsizei, GLuint*) = 0;
+    void (GLAPIENTRY * fGenTextures)(GLsizei, GLuint*) = 0;
+    void (GLAPIENTRY * fGenFramebuffers)(GLsizei, GLuint*) = 0;
+    void (GLAPIENTRY * fGenRenderbuffers)(GLsizei, GLuint*) = 0;
+    void (GLAPIENTRY * fGenVertexArrays)(GLsizei, GLuint*) = 0;
 
-    void (GLAPIENTRY * fDeleteProgram)(GLuint);
-    void (GLAPIENTRY * fDeleteShader)(GLuint);
-    void (GLAPIENTRY * fDeleteBuffers)(GLsizei, const GLuint*);
-    void (GLAPIENTRY * fDeleteQueries)(GLsizei, const GLuint*);
-    void (GLAPIENTRY * fDeleteTextures)(GLsizei, const GLuint*);
-    void (GLAPIENTRY * fDeleteFramebuffers)(GLsizei, const GLuint*);
-    void (GLAPIENTRY * fDeleteRenderbuffers)(GLsizei, const GLuint*);
-    void (GLAPIENTRY * fDeleteVertexArrays)(GLsizei, const GLuint*);
+    void (GLAPIENTRY * fDeleteProgram)(GLuint) = 0;
+    void (GLAPIENTRY * fDeleteShader)(GLuint) = 0;
+    void (GLAPIENTRY * fDeleteBuffers)(GLsizei, const GLuint*) = 0;
+    void (GLAPIENTRY * fDeleteQueries)(GLsizei, const GLuint*) = 0;
+    void (GLAPIENTRY * fDeleteTextures)(GLsizei, const GLuint*) = 0;
+    void (GLAPIENTRY * fDeleteFramebuffers)(GLsizei, const GLuint*) = 0;
+    void (GLAPIENTRY * fDeleteRenderbuffers)(GLsizei, const GLuint*) = 0;
+    void (GLAPIENTRY * fDeleteVertexArrays)(GLsizei, const GLuint*) = 0;
 
-    void* (GLAPIENTRY * fMapBuffer)(GLenum, GLenum);
-    realGLboolean (GLAPIENTRY * fUnmapBuffer)(GLenum);
+    void* (GLAPIENTRY * fMapBuffer)(GLenum, GLenum) = 0;
+    realGLboolean (GLAPIENTRY * fUnmapBuffer)(GLenum) = 0;
 
     // ARB_copy_buffer / OpenGL 3.1 / OpenGL ES 3.0
     void (GLAPIENTRY * fCopyBufferSubData)(GLenum, GLenum,
                                             GLintptr, GLintptr,
-                                            GLsizeiptr);
+                                            GLsizeiptr) = 0;
 
-    GLenum (GLAPIENTRY * fGetGraphicsResetStatus)();
+    GLenum (GLAPIENTRY * fGetGraphicsResetStatus)() = 0;
 
     // ARB_sync
-    GLsync (GLAPIENTRY * fFenceSync)(GLenum, GLbitfield);
-    realGLboolean (GLAPIENTRY * fIsSync)(GLsync);
-    void (GLAPIENTRY * fDeleteSync)(GLsync);
-    GLenum (GLAPIENTRY * fClientWaitSync)(GLsync, GLbitfield, GLuint64);
-    void (GLAPIENTRY * fWaitSync)(GLsync, GLbitfield, GLuint64);
-    void (GLAPIENTRY * fGetInteger64v)(GLenum, GLint64*);
-    void (GLAPIENTRY * fGetSynciv)(GLsync, GLenum, GLsizei, GLsizei*, GLint*);
+    GLsync (GLAPIENTRY * fFenceSync)(GLenum, GLbitfield) = 0;
+    realGLboolean (GLAPIENTRY * fIsSync)(GLsync) = 0;
+    void (GLAPIENTRY * fDeleteSync)(GLsync) = 0;
+    GLenum (GLAPIENTRY * fClientWaitSync)(GLsync, GLbitfield, GLuint64) = 0;
+    void (GLAPIENTRY * fWaitSync)(GLsync, GLbitfield, GLuint64) = 0;
+    void (GLAPIENTRY * fGetInteger64v)(GLenum, GLint64*) = 0;
+    void (GLAPIENTRY * fGetSynciv)(GLsync, GLenum, GLsizei, GLsizei*, GLint*) = 0;
 
     // OES_egl_image
-    void (GLAPIENTRY * fEGLImageTargetTexture2D)(GLenum, GLeglImage);
-    void (GLAPIENTRY * fEGLImageTargetRenderbufferStorage)(GLenum, GLeglImage);
+    void (GLAPIENTRY * fEGLImageTargetTexture2D)(GLenum, GLeglImage) = 0;
+    void (GLAPIENTRY * fEGLImageTargetRenderbufferStorage)(GLenum, GLeglImage) = 0;
 
     // ARB_draw_instanced
-    void (GLAPIENTRY * fDrawArraysInstanced)(GLenum, GLint, GLsizei, GLsizei);
+    void (GLAPIENTRY * fDrawArraysInstanced)(GLenum, GLint, GLsizei, GLsizei) = 0;
     void (GLAPIENTRY * fDrawElementsInstanced)(GLenum, GLsizei, GLenum,
-                                                const GLvoid*, GLsizei);
+                                                const GLvoid*, GLsizei) = 0;
 
     // ARB_instanced_array
-    void (GLAPIENTRY * fVertexAttribDivisor)(GLuint, GLuint);
+    void (GLAPIENTRY * fVertexAttribDivisor)(GLuint, GLuint) = 0;
 
     // ARB_internalformat_query
-    void (GLAPIENTRY * fGetInternalformativ)(GLenum, GLenum, GLenum, GLsizei, GLint*);
+    void (GLAPIENTRY * fGetInternalformativ)(GLenum, GLenum, GLenum, GLsizei, GLint*) = 0;
 
     // ARB_transform_feedback2 / OpenGL 4.0 / OpenGL ES 3.0
-    void (GLAPIENTRY * fBindBufferBase)(GLenum, GLuint, GLuint);
-    void (GLAPIENTRY * fBindBufferRange)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
+    void (GLAPIENTRY * fBindBufferBase)(GLenum, GLuint, GLuint) = 0;
+    void (GLAPIENTRY * fBindBufferRange)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr) = 0;
 
-    void (GLAPIENTRY * fGenTransformFeedbacks)(GLsizei, GLuint*);
-    void (GLAPIENTRY * fDeleteTransformFeedbacks)(GLsizei, const GLuint*);
-    realGLboolean (GLAPIENTRY * fIsTransformFeedback)(GLuint);
-    void (GLAPIENTRY * fBindTransformFeedback)(GLenum, GLuint);
+    void (GLAPIENTRY * fGenTransformFeedbacks)(GLsizei, GLuint*) = 0;
+    void (GLAPIENTRY * fDeleteTransformFeedbacks)(GLsizei, const GLuint*) = 0;
+    realGLboolean (GLAPIENTRY * fIsTransformFeedback)(GLuint) = 0;
+    void (GLAPIENTRY * fBindTransformFeedback)(GLenum, GLuint) = 0;
     void (GLAPIENTRY * fTransformFeedbackVaryings)(GLuint, GLsizei,
-                                                    const GLchar* const*, GLenum);
+                                                    const GLchar* const*, GLenum) = 0;
     void (GLAPIENTRY * fGetTransformFeedbackVarying)(GLuint, GLuint, GLsizei, GLsizei*,
-                                                        GLsizei*, GLenum*, GLchar*);
-    void (GLAPIENTRY * fBeginTransformFeedback)(GLenum);
-    void (GLAPIENTRY * fEndTransformFeedback)(void);
-    void (GLAPIENTRY * fPauseTransformFeedback)(void);
-    void (GLAPIENTRY * fResumeTransformFeedback)(void);
+                                                        GLsizei*, GLenum*, GLchar*) = 0;
+    void (GLAPIENTRY * fBeginTransformFeedback)(GLenum) = 0;
+    void (GLAPIENTRY * fEndTransformFeedback)(void) = 0;
+    void (GLAPIENTRY * fPauseTransformFeedback)(void) = 0;
+    void (GLAPIENTRY * fResumeTransformFeedback)(void) = 0;
 
-    void (GLAPIENTRY * fGetIntegeri_v)(GLenum, GLuint, GLint*);
-    void (GLAPIENTRY * fGetInteger64i_v)(GLenum, GLuint, GLint64*);
+    void (GLAPIENTRY * fGetIntegeri_v)(GLenum, GLuint, GLint*) = 0;
+    void (GLAPIENTRY * fGetInteger64i_v)(GLenum, GLuint, GLint64*) = 0;
 
     // EXT_transform_feedback only
-    void (GLAPIENTRY * fBindBufferOffset)(GLenum, GLuint, GLuint, GLintptr);
+    void (GLAPIENTRY * fBindBufferOffset)(GLenum, GLuint, GLuint, GLintptr) = 0;
 
     // KHR_debug
     void (GLAPIENTRY * fDebugMessageControl)(GLenum, GLenum, GLenum, GLsizei,
-                                                const GLuint*, realGLboolean);
+                                                const GLuint*, realGLboolean) = 0;
     void (GLAPIENTRY * fDebugMessageInsert)(GLenum, GLenum, GLuint,
-                                            GLenum, GLsizei, const GLchar*);
-    void (GLAPIENTRY * fDebugMessageCallback)(GLDEBUGPROC, const GLvoid*);
+                                            GLenum, GLsizei, const GLchar*) = 0;
+    void (GLAPIENTRY * fDebugMessageCallback)(GLDEBUGPROC, const GLvoid*) = 0;
     GLuint (GLAPIENTRY * fGetDebugMessageLog)(GLuint, GLsizei, GLenum*, GLenum*,
-                                                GLuint*, GLenum*, GLsizei*, GLchar*);
-    void (GLAPIENTRY * fGetPointerv)(GLenum, GLvoid**);
-    void (GLAPIENTRY * fPushDebugGroup)(GLenum, GLuint, GLsizei, const GLchar*);
-    void (GLAPIENTRY * fPopDebugGroup)(void);
-    void (GLAPIENTRY * fObjectLabel)(GLenum, GLuint, GLsizei, const GLchar*);
-    void (GLAPIENTRY * fGetObjectLabel)(GLenum, GLuint, GLsizei, GLsizei*, GLchar*);
-    void (GLAPIENTRY * fObjectPtrLabel)(const GLvoid*, GLsizei, const GLchar*);
-    void (GLAPIENTRY * fGetObjectPtrLabel)(const GLvoid*, GLsizei, GLsizei*, GLchar*);
+                                                GLuint*, GLenum*, GLsizei*, GLchar*) = 0;
+    void (GLAPIENTRY * fGetPointerv)(GLenum, GLvoid**) = 0;
+    void (GLAPIENTRY * fPushDebugGroup)(GLenum, GLuint, GLsizei, const GLchar*) = 0;
+    void (GLAPIENTRY * fPopDebugGroup)(void) = 0;
+    void (GLAPIENTRY * fObjectLabel)(GLenum, GLuint, GLsizei, const GLchar*) = 0;
+    void (GLAPIENTRY * fGetObjectLabel)(GLenum, GLuint, GLsizei, GLsizei*, GLchar*) = 0;
+    void (GLAPIENTRY * fObjectPtrLabel)(const GLvoid*, GLsizei, const GLchar*) = 0;
+    void (GLAPIENTRY * fGetObjectPtrLabel)(const GLvoid*, GLsizei, GLsizei*, GLchar*) = 0;
 
     // draw_range_elements
     void (GLAPIENTRY * fDrawRangeElements)(GLenum, GLuint, GLuint, GLsizei, GLenum,
-                                            const GLvoid*);
+                                            const GLvoid*) = 0;
 
     // NV_fence
-    void (GLAPIENTRY * fGenFences)(GLsizei, GLuint*);
-    void (GLAPIENTRY * fDeleteFences)(GLsizei, const GLuint*);
-    void (GLAPIENTRY * fSetFence)(GLuint, GLenum);
-    realGLboolean (GLAPIENTRY * fTestFence)(GLuint);
-    void (GLAPIENTRY * fFinishFence)(GLuint);
-    realGLboolean (GLAPIENTRY * fIsFence)(GLuint);
-    void (GLAPIENTRY * fGetFenceiv)(GLuint, GLenum, GLint*);
+    void (GLAPIENTRY * fGenFences)(GLsizei, GLuint*) = 0;
+    void (GLAPIENTRY * fDeleteFences)(GLsizei, const GLuint*) = 0;
+    void (GLAPIENTRY * fSetFence)(GLuint, GLenum) = 0;
+    realGLboolean (GLAPIENTRY * fTestFence)(GLuint) = 0;
+    void (GLAPIENTRY * fFinishFence)(GLuint) = 0;
+    realGLboolean (GLAPIENTRY * fIsFence)(GLuint) = 0;
+    void (GLAPIENTRY * fGetFenceiv)(GLuint, GLenum, GLint*) = 0;
 
     // map_buffer_range
-    void* (GLAPIENTRY * fMapBufferRange)(GLenum, GLintptr, GLsizeiptr, GLbitfield);
-    void (GLAPIENTRY * fFlushMappedBufferRange)(GLenum, GLintptr, GLsizeiptr);
+    void* (GLAPIENTRY * fMapBufferRange)(GLenum, GLintptr, GLsizeiptr, GLbitfield) = 0;
+    void (GLAPIENTRY * fFlushMappedBufferRange)(GLenum, GLintptr, GLsizeiptr) = 0;
 
     // sampler_object
-    void (GLAPIENTRY * fGenSamplers)(GLsizei, GLuint*);
-    void (GLAPIENTRY * fDeleteSamplers)(GLsizei, const GLuint*);
-    realGLboolean (GLAPIENTRY * fIsSampler)(GLuint);
-    void (GLAPIENTRY * fBindSampler)(GLuint, GLuint);
-    void (GLAPIENTRY * fSamplerParameteri)(GLuint, GLenum, GLint);
-    void (GLAPIENTRY * fSamplerParameteriv)(GLuint, GLenum, const GLint*);
-    void (GLAPIENTRY * fSamplerParameterf)(GLuint, GLenum, GLfloat);
-    void (GLAPIENTRY * fSamplerParameterfv)(GLuint, GLenum, const GLfloat*);
-    void (GLAPIENTRY * fGetSamplerParameteriv)(GLuint, GLenum, GLint*);
-    void (GLAPIENTRY * fGetSamplerParameterfv)(GLuint, GLenum, GLfloat*);
+    void (GLAPIENTRY * fGenSamplers)(GLsizei, GLuint*) = 0;
+    void (GLAPIENTRY * fDeleteSamplers)(GLsizei, const GLuint*) = 0;
+    realGLboolean (GLAPIENTRY * fIsSampler)(GLuint) = 0;
+    void (GLAPIENTRY * fBindSampler)(GLuint, GLuint) = 0;
+    void (GLAPIENTRY * fSamplerParameteri)(GLuint, GLenum, GLint) = 0;
+    void (GLAPIENTRY * fSamplerParameteriv)(GLuint, GLenum, const GLint*) = 0;
+    void (GLAPIENTRY * fSamplerParameterf)(GLuint, GLenum, GLfloat) = 0;
+    void (GLAPIENTRY * fSamplerParameterfv)(GLuint, GLenum, const GLfloat*) = 0;
+    void (GLAPIENTRY * fGetSamplerParameteriv)(GLuint, GLenum, GLint*) = 0;
+    void (GLAPIENTRY * fGetSamplerParameterfv)(GLuint, GLenum, GLfloat*) = 0;
 
     // texture_storage
-    void (GLAPIENTRY * fTexStorage2D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
+    void (GLAPIENTRY * fTexStorage2D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = 0;
     void (GLAPIENTRY * fTexStorage3D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei,
-                                        GLsizei);
+                                        GLsizei) = 0;
 
     // uniform_buffer_object
     void (GLAPIENTRY * fGetUniformIndices)(GLuint, GLsizei,
-                                            const GLchar* const*, GLuint*);
+                                            const GLchar* const*, GLuint*) = 0;
     void (GLAPIENTRY * fGetActiveUniformsiv)(GLuint, GLsizei, const GLuint*,
-                                                                GLenum, GLint*);
-    GLuint (GLAPIENTRY * fGetUniformBlockIndex)(GLuint, const GLchar*);
-    void (GLAPIENTRY * fGetActiveUniformBlockiv)(GLuint, GLuint, GLenum, GLint*);
+                                                                GLenum, GLint*) = 0;
+    GLuint (GLAPIENTRY * fGetUniformBlockIndex)(GLuint, const GLchar*) = 0;
+    void (GLAPIENTRY * fGetActiveUniformBlockiv)(GLuint, GLuint, GLenum, GLint*) = 0;
     void (GLAPIENTRY * fGetActiveUniformBlockName)(GLuint, GLuint, GLsizei, GLsizei*,
-                                                    GLchar*);
-    void (GLAPIENTRY * fUniformBlockBinding)(GLuint, GLuint, GLuint);
+                                                    GLchar*) = 0;
+    void (GLAPIENTRY * fUniformBlockBinding)(GLuint, GLuint, GLuint) = 0;
 
     // EXT_gpu_shader4
-    void (GLAPIENTRY * fGetVertexAttribIiv)(GLuint, GLenum, GLint*);
-    void (GLAPIENTRY * fGetVertexAttribIuiv)(GLuint, GLenum, GLuint*);
-    void (GLAPIENTRY * fVertexAttribI4i)(GLuint, GLint, GLint, GLint, GLint);
-    void (GLAPIENTRY * fVertexAttribI4iv)(GLuint, const GLint*);
-    void (GLAPIENTRY * fVertexAttribI4ui)(GLuint, GLuint, GLuint, GLuint, GLuint);
-    void (GLAPIENTRY * fVertexAttribI4uiv)(GLuint, const GLuint*);
+    void (GLAPIENTRY * fGetVertexAttribIiv)(GLuint, GLenum, GLint*) = 0;
+    void (GLAPIENTRY * fGetVertexAttribIuiv)(GLuint, GLenum, GLuint*) = 0;
+    void (GLAPIENTRY * fVertexAttribI4i)(GLuint, GLint, GLint, GLint, GLint) = 0;
+    void (GLAPIENTRY * fVertexAttribI4iv)(GLuint, const GLint*) = 0;
+    void (GLAPIENTRY * fVertexAttribI4ui)(GLuint, GLuint, GLuint, GLuint, GLuint) = 0;
+    void (GLAPIENTRY * fVertexAttribI4uiv)(GLuint, const GLuint*) = 0;
     void (GLAPIENTRY * fVertexAttribIPointer)(GLuint, GLint, GLenum, GLsizei,
-                                                const GLvoid*);
-    void (GLAPIENTRY * fUniform1ui)(GLint, GLuint);
-    void (GLAPIENTRY * fUniform2ui)(GLint, GLuint, GLuint);
-    void (GLAPIENTRY * fUniform3ui)(GLint, GLuint, GLuint, GLuint);
-    void (GLAPIENTRY * fUniform4ui)(GLint, GLuint, GLuint, GLuint, GLuint);
-    void (GLAPIENTRY * fUniform1uiv)(GLint, GLsizei, const GLuint*);
-    void (GLAPIENTRY * fUniform2uiv)(GLint, GLsizei, const GLuint*);
-    void (GLAPIENTRY * fUniform3uiv)(GLint, GLsizei, const GLuint*);
-    void (GLAPIENTRY * fUniform4uiv)(GLint, GLsizei, const GLuint*);
-    GLint (GLAPIENTRY * fGetFragDataLocation)(GLuint, const GLchar*);
+                                                const GLvoid*) = 0;
+    void (GLAPIENTRY * fUniform1ui)(GLint, GLuint) = 0;
+    void (GLAPIENTRY * fUniform2ui)(GLint, GLuint, GLuint) = 0;
+    void (GLAPIENTRY * fUniform3ui)(GLint, GLuint, GLuint, GLuint) = 0;
+    void (GLAPIENTRY * fUniform4ui)(GLint, GLuint, GLuint, GLuint, GLuint) = 0;
+    void (GLAPIENTRY * fUniform1uiv)(GLint, GLsizei, const GLuint*) = 0;
+    void (GLAPIENTRY * fUniform2uiv)(GLint, GLsizei, const GLuint*) = 0;
+    void (GLAPIENTRY * fUniform3uiv)(GLint, GLsizei, const GLuint*) = 0;
+    void (GLAPIENTRY * fUniform4uiv)(GLint, GLsizei, const GLuint*) = 0;
+    GLint (GLAPIENTRY * fGetFragDataLocation)(GLuint, const GLchar*) = 0;
 
     // 3D Textures
     void (GLAPIENTRY * fTexImage3D)(GLenum, GLint, GLenum, GLenum, GLsizei, GLsizei,
-                                    GLint, GLenum, GLenum, const GLvoid*);
+                                    GLint, GLenum, GLenum, const GLvoid*) = 0;
 
     void (GLAPIENTRY * fTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei,
-                                        GLsizei, GLsizei, GLenum, GLenum, const GLvoid*);
+                                        GLsizei, GLsizei, GLenum, GLenum, const GLvoid*) = 0;
 
     void (GLAPIENTRY * fCopyTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLint,
-                                            GLint, GLsizei, GLsizei);
+                                            GLint, GLsizei, GLsizei) = 0;
 
     void (GLAPIENTRY * fCompressedTexImage3D)(GLenum, GLint, GLenum, GLsizei, GLsizei,
-                                                GLsizei, GLint, GLsizei, const GLvoid*);
+                                                GLsizei, GLint, GLsizei, const GLvoid*) = 0;
 
     void (GLAPIENTRY * fCompressedTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint,
                                                     GLsizei, GLsizei, GLsizei, GLenum,
-                                                    GLsizei, const GLvoid*);
+                                                    GLsizei, const GLvoid*) = 0;
 
     // get_string_indexed
-    const GLubyte* (GLAPIENTRY * fGetStringi)(GLenum, GLuint);
+    const GLubyte* (GLAPIENTRY * fGetStringi)(GLenum, GLuint) = 0;
 
     // APPLE_framebuffer_multisample
-    void (GLAPIENTRY * fResolveMultisampleFramebufferAPPLE)(void);
+    void (GLAPIENTRY * fResolveMultisampleFramebufferAPPLE)(void) = 0;
 
     // NV_texture_barrier
-    void (GLAPIENTRY * fTextureBarrier)(void);
+    void (GLAPIENTRY * fTextureBarrier)(void) = 0;
 
     // NV_primitive_restart
-    void (GLAPIENTRY * fPrimitiveRestartIndex)(GLuint);
+    void (GLAPIENTRY * fPrimitiveRestartIndex)(GLuint) = 0;
 };
 
 } // namespace gl
 } // namespace mozilla
 
 #endif /* GLCONTEXTSYMBOLS_H_ */