OSDN Git Service

Add new attribute called static_dispatch to the <function> element. This
authorIan Romanick <idr@us.ibm.com>
Tue, 22 Aug 2006 16:34:38 +0000 (16:34 +0000)
committerIan Romanick <idr@us.ibm.com>
Tue, 22 Aug 2006 16:34:38 +0000 (16:34 +0000)
boolean attribute, which defaults to true, determines whether or not a
static dispatch function is available in libGL for applications to link
against.

Ideally, any new functions that are not part of the ABI should not have
directly accessable dispatch functions.  This forces applications to use
glXGetProcAddress to access these functions.  By doing this we can
gracefully remove functions from libGL without breaking the linkage of
applications.

Note that the static dispatch functions are still generated.  However, they
are given names like gl_dispatch_stub_820 and are marked with the "hidden"
linker attribute.

All extension functions added since the previous Mesa release (6.5) have
been marked as 'static_dispatch="false"'.

15 files changed:
src/mesa/glapi/APPLE_vertex_array_object.xml
src/mesa/glapi/gl_API.dtd
src/mesa/glapi/gl_API.xml
src/mesa/glapi/gl_SPARC_asm.py
src/mesa/glapi/gl_XML.py
src/mesa/glapi/gl_apitemp.py
src/mesa/glapi/gl_procs.py
src/mesa/glapi/gl_x86-64_asm.py
src/mesa/glapi/gl_x86_asm.py
src/mesa/glapi/glapi.c
src/mesa/glapi/glapitemp.h
src/mesa/glapi/glprocs.h
src/mesa/sparc/glapi_sparc.S
src/mesa/x86-64/glapi_x86-64.S
src/mesa/x86/glapi_x86.S

index 3c0c1cc..0d87156 100644 (file)
@@ -5,21 +5,21 @@
 <category name="GL_APPLE_vertex_array_object" number="273">
     <enum name="VERTEX_ARRAY_BINDING_APPLE"               value="0x85B5"/>
 
-    <function name="BindVertexArrayAPPLE" offset="819">
+    <function name="BindVertexArrayAPPLE" offset="819" static_dispatch="false">
         <param name="array" type="GLuint"/>
     </function>
 
-    <function name="DeleteVertexArraysAPPLE" offset="820">
+    <function name="DeleteVertexArraysAPPLE" offset="820" static_dispatch="false">
         <param name="n" type="GLsizei"/>
        <param name="arrays" type="const GLuint *" count="n"/>
     </function>
 
-    <function name="GenVertexArraysAPPLE" offset="821">
+    <function name="GenVertexArraysAPPLE" offset="821" static_dispatch="false">
         <param name="n" type="GLsizei"/>
        <param name="arrays" type="GLuint *" count="n" output="true"/>
     </function>
 
-    <function name="IsVertexArrayAPPLE" offset="822">
+    <function name="IsVertexArrayAPPLE" offset="822" static_dispatch="false">
         <param name="array" type="GLuint"/>
        <return type="GLboolean"/>
     </function>
index ded487b..2f0c88a 100644 (file)
@@ -33,6 +33,7 @@
 <!ATTLIST function name                NMTOKEN #REQUIRED
                    alias               NMTOKEN #IMPLIED
                    offset              CDATA   #IMPLIED
+                   static_dispatch     (true | false) "true"
                    vectorequiv         NMTOKEN #IMPLIED>
 <!ATTLIST size     name                NMTOKEN #REQUIRED
                    count               NMTOKEN #IMPLIED
index 419d3bc..b5b549c 100644 (file)
 </category>
 
 <category name="GL_EXT_gpu_program_parameters" number="319">
-    <function name="ProgramEnvParameters4fvEXT" offset="823">
+    <function name="ProgramEnvParameters4fvEXT" offset="823" static_dispatch="false">
         <param name="target" type="GLenum"/>
        <param name="index" type="GLuint"/>
        <param name="count" type="GLsizei"/>
        <param name="params" type="const GLfloat *"/>
     </function>        
 
-    <function name="ProgramLocalParameters4fvEXT" offset="824">
+    <function name="ProgramLocalParameters4fvEXT" offset="824" static_dispatch="false">
         <param name="target" type="GLenum"/>
        <param name="index" type="GLuint"/>
        <param name="count" type="GLsizei"/>
index 1a8823c..1368e24 100644 (file)
@@ -82,14 +82,24 @@ class PrintGenericStubs(gl_XML.gl_print_base):
 
        def printBody(self, api):
                for f in api.functionIterateByOffset():
-                       print '\t\t.globl gl%s ; .type gl%s,#function' % (f.name, f.name)
+                       if f.static_dispatch:
+                               name = f.name
+                       else:
+                               name = "_dispatch_stub_%u" % (f.offset)
+
+                       print '\t\t.globl gl%s ; .type gl%s,#function' % (name, name)
 
                print '\t\t.globl _mesa_sparc_glapi_begin ; .type _mesa_sparc_glapi_begin,#function'
                print '_mesa_sparc_glapi_begin:'
                print ''
 
                for f in api.functionIterateByOffset():
-                       print '\tGL_STUB(gl%s, _gloffset_%s)' % (f.name, f.name)
+                       if f.static_dispatch:
+                               name = f.name
+                       else:
+                               name = "_dispatch_stub_%u" % (f.offset)
+
+                       print '\tGL_STUB(gl%s, _gloffset_%s)' % (name, name)
 
                print ''
                print '\t\t.globl _mesa_sparc_glapi_end ; .type _mesa_sparc_glapi_end,#function'
@@ -98,9 +108,10 @@ class PrintGenericStubs(gl_XML.gl_print_base):
 
 
                for f in api.functionIterateByOffset():
-                       for n in f.entry_points:
-                               if n != f.name:
-                                       print '\t.globl gl%s ; .type gl%s,#function ; gl%s = gl%s' % (n, n, n, f.name)
+                       if f.static_dispatch:
+                               for n in f.entry_points:
+                                       if n != f.name:
+                                               print '\t.globl gl%s ; .type gl%s,#function ; gl%s = gl%s' % (n, n, n, f.name)
 
                return
 
index 11b23b7..e1bff79 100644 (file)
@@ -575,6 +575,8 @@ class gl_function( gl_item ):
                name = element.nsProp( "name", None )
                alias = element.nsProp( "alias", None )
 
+               self.static_dispatch = is_attr_true(element, "static_dispatch")
+
                self.entry_points.append( name )
                if alias:
                        true_name = alias
index 7cc434f..30ee659 100644 (file)
@@ -39,6 +39,7 @@ class PrintGlOffsets(gl_XML.gl_print_base):
 (C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
 
                self.undef_list.append( "KEYWORD1" )
+               self.undef_list.append( "KEYWORD1_ALT" )
                self.undef_list.append( "KEYWORD2" )
                self.undef_list.append( "NAME" )
                self.undef_list.append( "DISPATCH" )
@@ -54,6 +55,13 @@ class PrintGlOffsets(gl_XML.gl_print_base):
                t_string = ""
                comma = ""
 
+               if f.static_dispatch:
+                       n = name
+                       keyword = "KEYWORD1"
+               else:
+                       n = "_dispatch_stub_%u" % (f.offset)
+                       keyword = "KEYWORD1_ALT"
+
                for p in f.parameterIterator():
                        if p.is_pointer():
                                cast = "(const void *) "
@@ -71,8 +79,11 @@ class PrintGlOffsets(gl_XML.gl_print_base):
                else:
                        dispatch = "DISPATCH"
 
-               print 'KEYWORD1 %s KEYWORD2 NAME(%s)(%s)' \
-                       % (f.return_type, name, f.get_parameter_string(name))
+               if not f.static_dispatch:
+                       print '%s %s KEYWORD2 NAME(%s)(%s);' % (keyword, f.return_type, n, f.get_parameter_string(name))
+                       print ''
+
+               print '%s %s KEYWORD2 NAME(%s)(%s)' % (keyword, f.return_type, n, f.get_parameter_string(name))
                print '{'
                if p_string == "":
                        print '   %s(%s, (), (F, "gl%s();\\n"));' \
@@ -85,6 +96,8 @@ class PrintGlOffsets(gl_XML.gl_print_base):
                return
 
        def printRealHeader(self):
+               print ''
+               self.printVisibility( "HIDDEN", "hidden" )
                print """
 /*
  * This file is a template which generates the OpenGL API entry point
@@ -116,6 +129,10 @@ class PrintGlOffsets(gl_XML.gl_print_base):
 #define KEYWORD1
 #endif
 
+#ifndef KEYWORD1_ALT
+#define KEYWORD1_ALT HIDDEN
+#endif
+
 #ifndef KEYWORD2
 #define KEYWORD2
 #endif
@@ -149,7 +166,12 @@ class PrintGlOffsets(gl_XML.gl_print_base):
 
 static _glapi_proc DISPATCH_TABLE_NAME[] = {"""
                for f in api.functionIterateByOffset():
-                       print '   TABLE_ENTRY(%s),' % (f.name)
+                       if f.static_dispatch:
+                               n = f.name
+                       else:
+                               n = "_dispatch_stub_%u" % (f.offset)
+
+                       print '   TABLE_ENTRY(%s),' % (n)
 
                print '   /* A whole bunch of no-op functions.  These might be called'
                print '    * when someone tries to call a dynamically-registered'
@@ -174,9 +196,10 @@ static _glapi_proc DISPATCH_TABLE_NAME[] = {"""
 static _glapi_proc UNUSED_TABLE_NAME[] = {"""
 
                for f in api.functionIterateByOffset():
-                       for n in f.entry_points:
-                               if n != f.name:
-                                       print '   TABLE_ENTRY(%s),' % (n)
+                       if f.static_dispatch:
+                               for n in f.entry_points:
+                                       if n != f.name:
+                                               print '   TABLE_ENTRY(%s),' % (n)
 
                print '};'
                print '#endif /*UNUSED_TABLE_NAME*/'
@@ -186,8 +209,11 @@ static _glapi_proc UNUSED_TABLE_NAME[] = {"""
 
        def printBody(self, api):
                for func in api.functionIterateByOffset():
-                       for n in func.entry_points:
-                               self.printFunction( func, n )
+                       if func.static_dispatch:
+                               for n in func.entry_points:
+                                       self.printFunction( func, n )
+                       else:
+                               self.printFunction(func, func.name)
 
                self.printInitDispatch(api)
                self.printAliasedTable(api)
index 76131b8..145243e 100644 (file)
@@ -87,8 +87,13 @@ class PrintGlProcs(gl_XML.gl_print_base):
                base_offset = 0
                table = []
                for func in api.functionIterateByOffset():
+                       if func.static_dispatch:
+                               name = func.name
+                       else:
+                               name = "_dispatch_stub_%u" % (func.offset)
+
                        self.printFunctionString( func.name )
-                       table.append((base_offset, func.name, func.name))
+                       table.append((base_offset, name, func.name))
 
                        # The length of the function's name, plus 2 for "gl",
                        # plus 1 for the NUL.
@@ -99,8 +104,13 @@ class PrintGlProcs(gl_XML.gl_print_base):
                for func in api.functionIterateByOffset():
                        for n in func.entry_points:
                                if n != func.name:
+                                       if func.static_dispatch:
+                                               name = n
+                                       else:
+                                               name = "_dispatch_stub_%u" % (func.offset)
+
                                        self.printFunctionString( n )
-                                       table.append((base_offset, n, func.name))
+                                       table.append((base_offset, name, func.name))
                                        base_offset += len(n) + 3
 
 
@@ -110,6 +120,14 @@ class PrintGlProcs(gl_XML.gl_print_base):
                        print '};'
 
                print ''
+               print '/* FIXME: Having these (incorrect) prototypes here is ugly. */'
+               print '#ifdef NEED_FUNCTION_POINTER'
+               for func in api.functionIterateByOffset():
+                       if not func.static_dispatch:
+                               print 'extern void gl_dispatch_stub_%u(void);' % (func.offset)
+               print '#endif /* NEED_FUNCTION_POINTER */'
+
+               print ''
                print 'static const glprocs_table_t static_functions[] = {'
 
                for (offset, disp_name, real_name) in table:
index ea13d2a..eb44000 100644 (file)
@@ -236,10 +236,17 @@ class PrintGenericStubs(gl_XML.gl_print_base):
                        registers.append( ["%rbp", 0] )
 
 
+               if f.static_dispatch:
+                       name = f.name
+               else:
+                       name = "_dispatch_stub_%u" % (f.offset)
+
                print '\t.p2align\t4,,15'
-               print '\t.globl\tGL_PREFIX(%s)' % (f.name)
-               print '\t.type\tGL_PREFIX(%s), @function' % (f.name)
-               print 'GL_PREFIX(%s):' % (f.name)
+               print '\t.globl\tGL_PREFIX(%s)' % (name)
+               print '\t.type\tGL_PREFIX(%s), @function' % (name)
+               if not f.static_dispatch:
+                       print '\tHIDDEN(GL_PREFIX(%s))' % (name)
+               print 'GL_PREFIX(%s):' % (name)
                print '#if defined(GLX_USE_TLS)'
                print '\tcall\t_x86_64_get_dispatch@PLT'
                print '\tmovq\t%u(%%rax), %%r11' % (f.offset * 8)
@@ -273,7 +280,7 @@ class PrintGenericStubs(gl_XML.gl_print_base):
                print '\tjmp\t*%r11'
                print '#endif /* defined(GLX_USE_TLS) */'
 
-               print '\t.size\tGL_PREFIX(%s), .-GL_PREFIX(%s)' % (f.name, f.name)
+               print '\t.size\tGL_PREFIX(%s), .-GL_PREFIX(%s)' % (name, name)
                print ''
                return
 
@@ -284,9 +291,10 @@ class PrintGenericStubs(gl_XML.gl_print_base):
 
 
                for f in api.functionIterateByOffset():
-                       for n in f.entry_points:
-                               if n != f.name:
-                                       print '\t.globl GL_PREFIX(%s) ; .set GL_PREFIX(%s), GL_PREFIX(%s)' % (n, n, f.name)
+                       if f.static_dispatch:
+                               for n in f.entry_points:
+                                       if n != f.name:
+                                               print '\t.globl GL_PREFIX(%s) ; .set GL_PREFIX(%s), GL_PREFIX(%s)' % (n, n, f.name)
 
                return
 
index 899cce6..3ce8404 100644 (file)
@@ -197,20 +197,35 @@ class PrintGenericStubs(gl_XML.gl_print_base):
 
        def printBody(self, api):
                for f in api.functionIterateByOffset():
+                       if f.static_dispatch:
+                               name = f.name
+                       else:
+                               name = "_dispatch_stub_%u" % (f.offset)
+
                        stack = self.get_stack_size(f)
 
-                       alt = "%s@%u" % (f.name, stack)
-                       print '\tGL_STUB(%s, _gloffset_%s, %s)' % (f.name, f.name, alt)
+                       alt = "%s@%u" % (name, stack)
+                       print '\tGL_STUB(%s, _gloffset_%s, %s)' % (name, f.name, alt)
+
+                       if not f.static_dispatch:
+                               print '\tHIDDEN(GL_PREFIX(%s, %s))' % (name, alt)
+
 
                for f in api.functionIterateByOffset():
+                       if f.static_dispatch:
+                               name = f.name
+                       else:
+                               name = "_dispatch_stub_%u" % (f.offset)
+
                        stack = self.get_stack_size(f)
 
-                       alt = "%s@%u" % (f.name, stack)
+                       alt = "%s@%u" % (name, stack)
 
-                       for n in f.entry_points:
-                               if n != f.name:
-                                       alt2 = "%s@%u" % (n, stack)
-                                       print '\tGL_STUB_ALIAS(%s, _gloffset_%s, %s, %s, %s)' % (n, f.name, alt2, f.name, alt)
+                       if f.static_dispatch:
+                               for n in f.entry_points:
+                                       if n != f.name:
+                                               alt2 = "%s@%u" % (n, stack)
+                                               print '\tGL_STUB_ALIAS(%s, _gloffset_%s, %s, %s, %s)' % (n, f.name, alt2, f.name, alt)
 
                return
 
index c095de3..b82304b 100644 (file)
@@ -99,6 +99,7 @@ warn(void)
 
 
 #define KEYWORD1 static
+#define KEYWORD1_ALT static
 #define KEYWORD2 GLAPIENTRY
 #define NAME(func)  NoOp##func
 
index 442fccf..52ca973 100644 (file)
  */
 
 
+#  if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__)
+#    define HIDDEN  __attribute__((visibility("hidden")))
+#  else
+#    define HIDDEN
+#  endif
+
 /*
  * This file is a template which generates the OpenGL API entry point
  * functions.  It should be included by a .c file which first defines
 #define KEYWORD1
 #endif
 
+#ifndef KEYWORD1_ALT
+#define KEYWORD1_ALT HIDDEN
+#endif
+
 #ifndef KEYWORD2
 #define KEYWORD2
 #endif
@@ -5055,32 +5065,44 @@ KEYWORD1 void KEYWORD2 NAME(BlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint
    DISPATCH(BlitFramebufferEXT, (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), (F, "glBlitFramebufferEXT(%d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x);\n", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BindVertexArrayAPPLE)(GLuint array)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_819)(GLuint array);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_819)(GLuint array)
 {
    DISPATCH(BindVertexArrayAPPLE, (array), (F, "glBindVertexArrayAPPLE(%d);\n", array));
 }
 
-KEYWORD1 void KEYWORD2 NAME(DeleteVertexArraysAPPLE)(GLsizei n, const GLuint * arrays)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_820)(GLsizei n, const GLuint * arrays);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_820)(GLsizei n, const GLuint * arrays)
 {
    DISPATCH(DeleteVertexArraysAPPLE, (n, arrays), (F, "glDeleteVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GenVertexArraysAPPLE)(GLsizei n, GLuint * arrays)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_821)(GLsizei n, GLuint * arrays);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_821)(GLsizei n, GLuint * arrays)
 {
    DISPATCH(GenVertexArraysAPPLE, (n, arrays), (F, "glGenVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays));
 }
 
-KEYWORD1 GLboolean KEYWORD2 NAME(IsVertexArrayAPPLE)(GLuint array)
+KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_822)(GLuint array);
+
+KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_822)(GLuint array)
 {
    RETURN_DISPATCH(IsVertexArrayAPPLE, (array), (F, "glIsVertexArrayAPPLE(%d);\n", array));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_823)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_823)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
 {
    DISPATCH(ProgramEnvParameters4fvEXT, (target, index, count, params), (F, "glProgramEnvParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_824)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_824)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
 {
    DISPATCH(ProgramLocalParameters4fvEXT, (target, index, count, params), (F, "glProgramLocalParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params));
 }
@@ -5918,12 +5940,12 @@ static _glapi_proc DISPATCH_TABLE_NAME[] = {
    TABLE_ENTRY(GetQueryObjecti64vEXT),
    TABLE_ENTRY(GetQueryObjectui64vEXT),
    TABLE_ENTRY(BlitFramebufferEXT),
-   TABLE_ENTRY(BindVertexArrayAPPLE),
-   TABLE_ENTRY(DeleteVertexArraysAPPLE),
-   TABLE_ENTRY(GenVertexArraysAPPLE),
-   TABLE_ENTRY(IsVertexArrayAPPLE),
-   TABLE_ENTRY(ProgramEnvParameters4fvEXT),
-   TABLE_ENTRY(ProgramLocalParameters4fvEXT),
+   TABLE_ENTRY(_dispatch_stub_819),
+   TABLE_ENTRY(_dispatch_stub_820),
+   TABLE_ENTRY(_dispatch_stub_821),
+   TABLE_ENTRY(_dispatch_stub_822),
+   TABLE_ENTRY(_dispatch_stub_823),
+   TABLE_ENTRY(_dispatch_stub_824),
    /* A whole bunch of no-op functions.  These might be called
     * when someone tries to call a dynamically-registered
     * extension function without a current rendering context.
@@ -6220,6 +6242,7 @@ static _glapi_proc UNUSED_TABLE_NAME[] = {
 
 
 #  undef KEYWORD1
+#  undef KEYWORD1_ALT
 #  undef KEYWORD2
 #  undef NAME
 #  undef DISPATCH
@@ -6227,3 +6250,4 @@ static _glapi_proc UNUSED_TABLE_NAME[] = {
 #  undef DISPATCH_TABLE_NAME
 #  undef UNUSED_TABLE_NAME
 #  undef TABLE_ENTRY
+#  undef HIDDEN
index 3a858ca..b1943c1 100644 (file)
@@ -1051,6 +1051,16 @@ static const char gl_string_table[] =
     "glBlendEquationSeparateATI\0"
     ;
 
+/* FIXME: Having these (incorrect) prototypes here is ugly. */
+#ifdef NEED_FUNCTION_POINTER
+extern void gl_dispatch_stub_819(void);
+extern void gl_dispatch_stub_820(void);
+extern void gl_dispatch_stub_821(void);
+extern void gl_dispatch_stub_822(void);
+extern void gl_dispatch_stub_823(void);
+extern void gl_dispatch_stub_824(void);
+#endif /* NEED_FUNCTION_POINTER */
+
 static const glprocs_table_t static_functions[] = {
     NAME_FUNC_OFFSET(     0, glNewList, _gloffset_NewList ),
     NAME_FUNC_OFFSET(    10, glEndList, _gloffset_EndList ),
@@ -1871,12 +1881,12 @@ static const glprocs_table_t static_functions[] = {
     NAME_FUNC_OFFSET( 14671, glGetQueryObjecti64vEXT, _gloffset_GetQueryObjecti64vEXT ),
     NAME_FUNC_OFFSET( 14695, glGetQueryObjectui64vEXT, _gloffset_GetQueryObjectui64vEXT ),
     NAME_FUNC_OFFSET( 14720, glBlitFramebufferEXT, _gloffset_BlitFramebufferEXT ),
-    NAME_FUNC_OFFSET( 14741, glBindVertexArrayAPPLE, _gloffset_BindVertexArrayAPPLE ),
-    NAME_FUNC_OFFSET( 14764, glDeleteVertexArraysAPPLE, _gloffset_DeleteVertexArraysAPPLE ),
-    NAME_FUNC_OFFSET( 14790, glGenVertexArraysAPPLE, _gloffset_GenVertexArraysAPPLE ),
-    NAME_FUNC_OFFSET( 14813, glIsVertexArrayAPPLE, _gloffset_IsVertexArrayAPPLE ),
-    NAME_FUNC_OFFSET( 14834, glProgramEnvParameters4fvEXT, _gloffset_ProgramEnvParameters4fvEXT ),
-    NAME_FUNC_OFFSET( 14863, glProgramLocalParameters4fvEXT, _gloffset_ProgramLocalParameters4fvEXT ),
+    NAME_FUNC_OFFSET( 14741, gl_dispatch_stub_819, _gloffset_BindVertexArrayAPPLE ),
+    NAME_FUNC_OFFSET( 14764, gl_dispatch_stub_820, _gloffset_DeleteVertexArraysAPPLE ),
+    NAME_FUNC_OFFSET( 14790, gl_dispatch_stub_821, _gloffset_GenVertexArraysAPPLE ),
+    NAME_FUNC_OFFSET( 14813, gl_dispatch_stub_822, _gloffset_IsVertexArrayAPPLE ),
+    NAME_FUNC_OFFSET( 14834, gl_dispatch_stub_823, _gloffset_ProgramEnvParameters4fvEXT ),
+    NAME_FUNC_OFFSET( 14863, gl_dispatch_stub_824, _gloffset_ProgramLocalParameters4fvEXT ),
     NAME_FUNC_OFFSET( 14894, glArrayElementEXT, _gloffset_ArrayElement ),
     NAME_FUNC_OFFSET( 14912, glBindTextureEXT, _gloffset_BindTexture ),
     NAME_FUNC_OFFSET( 14929, glDrawArraysEXT, _gloffset_DrawArrays ),
index 864c650..8ac5b03 100644 (file)
@@ -884,12 +884,12 @@ __glapi_sparc_icache_flush: /* %o0 = insn_addr */
                .globl glGetQueryObjecti64vEXT ; .type glGetQueryObjecti64vEXT,#function
                .globl glGetQueryObjectui64vEXT ; .type glGetQueryObjectui64vEXT,#function
                .globl glBlitFramebufferEXT ; .type glBlitFramebufferEXT,#function
-               .globl glBindVertexArrayAPPLE ; .type glBindVertexArrayAPPLE,#function
-               .globl glDeleteVertexArraysAPPLE ; .type glDeleteVertexArraysAPPLE,#function
-               .globl glGenVertexArraysAPPLE ; .type glGenVertexArraysAPPLE,#function
-               .globl glIsVertexArrayAPPLE ; .type glIsVertexArrayAPPLE,#function
-               .globl glProgramEnvParameters4fvEXT ; .type glProgramEnvParameters4fvEXT,#function
-               .globl glProgramLocalParameters4fvEXT ; .type glProgramLocalParameters4fvEXT,#function
+               .globl gl_dispatch_stub_819 ; .type gl_dispatch_stub_819,#function
+               .globl gl_dispatch_stub_820 ; .type gl_dispatch_stub_820,#function
+               .globl gl_dispatch_stub_821 ; .type gl_dispatch_stub_821,#function
+               .globl gl_dispatch_stub_822 ; .type gl_dispatch_stub_822,#function
+               .globl gl_dispatch_stub_823 ; .type gl_dispatch_stub_823,#function
+               .globl gl_dispatch_stub_824 ; .type gl_dispatch_stub_824,#function
                .globl _mesa_sparc_glapi_begin ; .type _mesa_sparc_glapi_begin,#function
 _mesa_sparc_glapi_begin:
 
@@ -1712,12 +1712,12 @@ _mesa_sparc_glapi_begin:
        GL_STUB(glGetQueryObjecti64vEXT, _gloffset_GetQueryObjecti64vEXT)
        GL_STUB(glGetQueryObjectui64vEXT, _gloffset_GetQueryObjectui64vEXT)
        GL_STUB(glBlitFramebufferEXT, _gloffset_BlitFramebufferEXT)
-       GL_STUB(glBindVertexArrayAPPLE, _gloffset_BindVertexArrayAPPLE)
-       GL_STUB(glDeleteVertexArraysAPPLE, _gloffset_DeleteVertexArraysAPPLE)
-       GL_STUB(glGenVertexArraysAPPLE, _gloffset_GenVertexArraysAPPLE)
-       GL_STUB(glIsVertexArrayAPPLE, _gloffset_IsVertexArrayAPPLE)
-       GL_STUB(glProgramEnvParameters4fvEXT, _gloffset_ProgramEnvParameters4fvEXT)
-       GL_STUB(glProgramLocalParameters4fvEXT, _gloffset_ProgramLocalParameters4fvEXT)
+       GL_STUB(gl_dispatch_stub_819, _gloffset__dispatch_stub_819)
+       GL_STUB(gl_dispatch_stub_820, _gloffset__dispatch_stub_820)
+       GL_STUB(gl_dispatch_stub_821, _gloffset__dispatch_stub_821)
+       GL_STUB(gl_dispatch_stub_822, _gloffset__dispatch_stub_822)
+       GL_STUB(gl_dispatch_stub_823, _gloffset__dispatch_stub_823)
+       GL_STUB(gl_dispatch_stub_824, _gloffset__dispatch_stub_824)
 
                .globl _mesa_sparc_glapi_end ; .type _mesa_sparc_glapi_end,#function
 _mesa_sparc_glapi_end:
index 39896eb..c826619 100644 (file)
@@ -30937,9 +30937,10 @@ GL_PREFIX(BlitFramebufferEXT):
        .size   GL_PREFIX(BlitFramebufferEXT), .-GL_PREFIX(BlitFramebufferEXT)
 
        .p2align        4,,15
-       .globl  GL_PREFIX(BindVertexArrayAPPLE)
-       .type   GL_PREFIX(BindVertexArrayAPPLE), @function
-GL_PREFIX(BindVertexArrayAPPLE):
+       .globl  GL_PREFIX(_dispatch_stub_819)
+       .type   GL_PREFIX(_dispatch_stub_819), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_819))
+GL_PREFIX(_dispatch_stub_819):
 #if defined(GLX_USE_TLS)
        call    _x86_64_get_dispatch@PLT
        movq    6552(%rax), %r11
@@ -30963,12 +30964,13 @@ GL_PREFIX(BindVertexArrayAPPLE):
        movq    6552(%rax), %r11
        jmp     *%r11
 #endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BindVertexArrayAPPLE), .-GL_PREFIX(BindVertexArrayAPPLE)
+       .size   GL_PREFIX(_dispatch_stub_819), .-GL_PREFIX(_dispatch_stub_819)
 
        .p2align        4,,15
-       .globl  GL_PREFIX(DeleteVertexArraysAPPLE)
-       .type   GL_PREFIX(DeleteVertexArraysAPPLE), @function
-GL_PREFIX(DeleteVertexArraysAPPLE):
+       .globl  GL_PREFIX(_dispatch_stub_820)
+       .type   GL_PREFIX(_dispatch_stub_820), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_820))
+GL_PREFIX(_dispatch_stub_820):
 #if defined(GLX_USE_TLS)
        call    _x86_64_get_dispatch@PLT
        movq    6560(%rax), %r11
@@ -31000,12 +31002,13 @@ GL_PREFIX(DeleteVertexArraysAPPLE):
        movq    6560(%rax), %r11
        jmp     *%r11
 #endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DeleteVertexArraysAPPLE), .-GL_PREFIX(DeleteVertexArraysAPPLE)
+       .size   GL_PREFIX(_dispatch_stub_820), .-GL_PREFIX(_dispatch_stub_820)
 
        .p2align        4,,15
-       .globl  GL_PREFIX(GenVertexArraysAPPLE)
-       .type   GL_PREFIX(GenVertexArraysAPPLE), @function
-GL_PREFIX(GenVertexArraysAPPLE):
+       .globl  GL_PREFIX(_dispatch_stub_821)
+       .type   GL_PREFIX(_dispatch_stub_821), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_821))
+GL_PREFIX(_dispatch_stub_821):
 #if defined(GLX_USE_TLS)
        call    _x86_64_get_dispatch@PLT
        movq    6568(%rax), %r11
@@ -31037,12 +31040,13 @@ GL_PREFIX(GenVertexArraysAPPLE):
        movq    6568(%rax), %r11
        jmp     *%r11
 #endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GenVertexArraysAPPLE), .-GL_PREFIX(GenVertexArraysAPPLE)
+       .size   GL_PREFIX(_dispatch_stub_821), .-GL_PREFIX(_dispatch_stub_821)
 
        .p2align        4,,15
-       .globl  GL_PREFIX(IsVertexArrayAPPLE)
-       .type   GL_PREFIX(IsVertexArrayAPPLE), @function
-GL_PREFIX(IsVertexArrayAPPLE):
+       .globl  GL_PREFIX(_dispatch_stub_822)
+       .type   GL_PREFIX(_dispatch_stub_822), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_822))
+GL_PREFIX(_dispatch_stub_822):
 #if defined(GLX_USE_TLS)
        call    _x86_64_get_dispatch@PLT
        movq    6576(%rax), %r11
@@ -31066,12 +31070,13 @@ GL_PREFIX(IsVertexArrayAPPLE):
        movq    6576(%rax), %r11
        jmp     *%r11
 #endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(IsVertexArrayAPPLE), .-GL_PREFIX(IsVertexArrayAPPLE)
+       .size   GL_PREFIX(_dispatch_stub_822), .-GL_PREFIX(_dispatch_stub_822)
 
        .p2align        4,,15
-       .globl  GL_PREFIX(ProgramEnvParameters4fvEXT)
-       .type   GL_PREFIX(ProgramEnvParameters4fvEXT), @function
-GL_PREFIX(ProgramEnvParameters4fvEXT):
+       .globl  GL_PREFIX(_dispatch_stub_823)
+       .type   GL_PREFIX(_dispatch_stub_823), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_823))
+GL_PREFIX(_dispatch_stub_823):
 #if defined(GLX_USE_TLS)
        call    _x86_64_get_dispatch@PLT
        movq    6584(%rax), %r11
@@ -31111,12 +31116,13 @@ GL_PREFIX(ProgramEnvParameters4fvEXT):
        movq    6584(%rax), %r11
        jmp     *%r11
 #endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramEnvParameters4fvEXT), .-GL_PREFIX(ProgramEnvParameters4fvEXT)
+       .size   GL_PREFIX(_dispatch_stub_823), .-GL_PREFIX(_dispatch_stub_823)
 
        .p2align        4,,15
-       .globl  GL_PREFIX(ProgramLocalParameters4fvEXT)
-       .type   GL_PREFIX(ProgramLocalParameters4fvEXT), @function
-GL_PREFIX(ProgramLocalParameters4fvEXT):
+       .globl  GL_PREFIX(_dispatch_stub_824)
+       .type   GL_PREFIX(_dispatch_stub_824), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_824))
+GL_PREFIX(_dispatch_stub_824):
 #if defined(GLX_USE_TLS)
        call    _x86_64_get_dispatch@PLT
        movq    6592(%rax), %r11
@@ -31156,7 +31162,7 @@ GL_PREFIX(ProgramLocalParameters4fvEXT):
        movq    6592(%rax), %r11
        jmp     *%r11
 #endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramLocalParameters4fvEXT), .-GL_PREFIX(ProgramLocalParameters4fvEXT)
+       .size   GL_PREFIX(_dispatch_stub_824), .-GL_PREFIX(_dispatch_stub_824)
 
        .globl GL_PREFIX(ArrayElementEXT) ; .set GL_PREFIX(ArrayElementEXT), GL_PREFIX(ArrayElement)
        .globl GL_PREFIX(BindTextureEXT) ; .set GL_PREFIX(BindTextureEXT), GL_PREFIX(BindTexture)
index 85d691a..746993d 100644 (file)
@@ -960,12 +960,18 @@ GLNAME(gl_dispatch_functions_start):
        GL_STUB(GetQueryObjecti64vEXT, _gloffset_GetQueryObjecti64vEXT, GetQueryObjecti64vEXT@12)
        GL_STUB(GetQueryObjectui64vEXT, _gloffset_GetQueryObjectui64vEXT, GetQueryObjectui64vEXT@12)
        GL_STUB(BlitFramebufferEXT, _gloffset_BlitFramebufferEXT, BlitFramebufferEXT@40)
-       GL_STUB(BindVertexArrayAPPLE, _gloffset_BindVertexArrayAPPLE, BindVertexArrayAPPLE@4)
-       GL_STUB(DeleteVertexArraysAPPLE, _gloffset_DeleteVertexArraysAPPLE, DeleteVertexArraysAPPLE@8)
-       GL_STUB(GenVertexArraysAPPLE, _gloffset_GenVertexArraysAPPLE, GenVertexArraysAPPLE@8)
-       GL_STUB(IsVertexArrayAPPLE, _gloffset_IsVertexArrayAPPLE, IsVertexArrayAPPLE@4)
-       GL_STUB(ProgramEnvParameters4fvEXT, _gloffset_ProgramEnvParameters4fvEXT, ProgramEnvParameters4fvEXT@16)
-       GL_STUB(ProgramLocalParameters4fvEXT, _gloffset_ProgramLocalParameters4fvEXT, ProgramLocalParameters4fvEXT@16)
+       GL_STUB(_dispatch_stub_819, _gloffset_BindVertexArrayAPPLE, _dispatch_stub_819@4)
+       HIDDEN(GL_PREFIX(_dispatch_stub_819, _dispatch_stub_819@4))
+       GL_STUB(_dispatch_stub_820, _gloffset_DeleteVertexArraysAPPLE, _dispatch_stub_820@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_820, _dispatch_stub_820@8))
+       GL_STUB(_dispatch_stub_821, _gloffset_GenVertexArraysAPPLE, _dispatch_stub_821@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_821, _dispatch_stub_821@8))
+       GL_STUB(_dispatch_stub_822, _gloffset_IsVertexArrayAPPLE, _dispatch_stub_822@4)
+       HIDDEN(GL_PREFIX(_dispatch_stub_822, _dispatch_stub_822@4))
+       GL_STUB(_dispatch_stub_823, _gloffset_ProgramEnvParameters4fvEXT, _dispatch_stub_823@16)
+       HIDDEN(GL_PREFIX(_dispatch_stub_823, _dispatch_stub_823@16))
+       GL_STUB(_dispatch_stub_824, _gloffset_ProgramLocalParameters4fvEXT, _dispatch_stub_824@16)
+       HIDDEN(GL_PREFIX(_dispatch_stub_824, _dispatch_stub_824@16))
        GL_STUB_ALIAS(ArrayElementEXT, _gloffset_ArrayElement, ArrayElementEXT@4, ArrayElement, ArrayElement@4)
        GL_STUB_ALIAS(BindTextureEXT, _gloffset_BindTexture, BindTextureEXT@8, BindTexture, BindTexture@8)
        GL_STUB_ALIAS(DrawArraysEXT, _gloffset_DrawArrays, DrawArraysEXT@12, DrawArrays, DrawArrays@12)