tests: Add symbol check tests
These use the symbol-check.py script from mesa, and should help to ensure that glvnd doesn't start exposing/hiding new symbols. It's also useful to double check that meson and autotools are doing the same thing.
This commit is contained in:
parent
ad2c870ad8
commit
3a7aed009c
|
@ -1,6 +1,9 @@
|
|||
SUBDIRS = src tests include
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
EXTRA_DIST = autogen.sh README.md
|
||||
EXTRA_DIST = \
|
||||
autogen.sh \
|
||||
README.md \
|
||||
bin/symbols-check.py
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = libglvnd.pc
|
||||
|
|
158
bin/symbols-check.py
Normal file
158
bin/symbols-check.py
Normal file
|
@ -0,0 +1,158 @@
|
|||
#!/usr/bin/env python
|
||||
# encoding=utf-8
|
||||
# Copyright © 2018-2019 Intel Corporation
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and/or associated documentation files (the
|
||||
# "Materials"), to deal in the Materials without restriction, including
|
||||
# without limitation the rights to use, copy, modify, merge, publish,
|
||||
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
# permit persons to whom the Materials are furnished to do so, subject to
|
||||
# the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# unaltered in all copies or substantial portions of the Materials.
|
||||
# Any additions, deletions, or changes to the original source files
|
||||
# must be clearly indicated in accompanying documentation.
|
||||
|
||||
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import platform
|
||||
import subprocess
|
||||
|
||||
# This list contains symbols that _might_ be exported for some platforms
|
||||
PLATFORM_SYMBOLS = [
|
||||
'__bss_end__',
|
||||
'__bss_start__',
|
||||
'__bss_start',
|
||||
'__end__',
|
||||
'_bss_end__',
|
||||
'_edata',
|
||||
'_end',
|
||||
'_fini',
|
||||
'_init',
|
||||
]
|
||||
|
||||
|
||||
def get_symbols(nm, lib):
|
||||
'''
|
||||
List all the (non platform-specific) symbols exported by the library
|
||||
'''
|
||||
symbols = []
|
||||
platform_name = platform.system()
|
||||
output = subprocess.check_output([nm, '-gP', lib],
|
||||
stderr=open(os.devnull, 'w')).decode("ascii")
|
||||
for line in output.splitlines():
|
||||
fields = line.split()
|
||||
if len(fields) == 2 or fields[1] == 'U':
|
||||
continue
|
||||
symbol_name = fields[0]
|
||||
if platform_name == 'Linux':
|
||||
if symbol_name in PLATFORM_SYMBOLS:
|
||||
continue
|
||||
elif platform_name == 'Darwin':
|
||||
assert symbol_name[0] == '_'
|
||||
symbol_name = symbol_name[1:]
|
||||
symbols.append(symbol_name)
|
||||
|
||||
return symbols
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--symbols-file',
|
||||
action='store',
|
||||
required=True,
|
||||
help='path to file containing symbols')
|
||||
parser.add_argument('--lib',
|
||||
action='store',
|
||||
required=True,
|
||||
help='path to library')
|
||||
parser.add_argument('--nm',
|
||||
action='store',
|
||||
type=lambda s: s.split()[0], # autotools may pass "nm -B", but we just want nm
|
||||
required=True,
|
||||
help='path to binary (or name in $PATH)')
|
||||
args = parser.parse_args()
|
||||
|
||||
try:
|
||||
lib_symbols = get_symbols(args.nm, args.lib)
|
||||
except:
|
||||
# We can't run this test, but we haven't technically failed it either
|
||||
# Return the GNU "skip" error code
|
||||
exit(77)
|
||||
mandatory_symbols = []
|
||||
optional_symbols = []
|
||||
with open(args.symbols_file) as symbols_file:
|
||||
qualifier_optional = '(optional)'
|
||||
for line in symbols_file.readlines():
|
||||
|
||||
# Strip comments
|
||||
line = line.split('#')[0]
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
|
||||
# Line format:
|
||||
# [qualifier] symbol
|
||||
qualifier = None
|
||||
symbol = None
|
||||
|
||||
fields = line.split()
|
||||
if len(fields) == 1:
|
||||
symbol = fields[0]
|
||||
elif len(fields) == 2:
|
||||
qualifier = fields[0]
|
||||
symbol = fields[1]
|
||||
else:
|
||||
print(args.symbols_file + ': invalid format: ' + line)
|
||||
exit(1)
|
||||
|
||||
# The only supported qualifier is 'optional', which means the
|
||||
# symbol doesn't have to be exported by the library
|
||||
if qualifier and not qualifier == qualifier_optional:
|
||||
print(args.symbols_file + ': invalid qualifier: ' + qualifier)
|
||||
exit(1)
|
||||
|
||||
if qualifier == qualifier_optional:
|
||||
optional_symbols.append(symbol)
|
||||
else:
|
||||
mandatory_symbols.append(symbol)
|
||||
|
||||
unknown_symbols = []
|
||||
for symbol in lib_symbols:
|
||||
if symbol in mandatory_symbols:
|
||||
continue
|
||||
if symbol in optional_symbols:
|
||||
continue
|
||||
if symbol[:2] == '_Z':
|
||||
# Ignore random C++ symbols
|
||||
#TODO: figure out if there's any way to avoid exporting them in the first place
|
||||
continue
|
||||
unknown_symbols.append(symbol)
|
||||
|
||||
missing_symbols = [
|
||||
sym for sym in mandatory_symbols if sym not in lib_symbols
|
||||
]
|
||||
|
||||
for symbol in unknown_symbols:
|
||||
print(args.lib + ': unknown symbol exported: ' + symbol)
|
||||
|
||||
for symbol in missing_symbols:
|
||||
print(args.lib + ': missing symbol: ' + symbol)
|
||||
|
||||
if unknown_symbols or missing_symbols:
|
||||
exit(1)
|
||||
exit(0)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
|
@ -28,6 +28,7 @@ AC_PROG_MAKE_SET
|
|||
AC_PROG_LIBTOOL
|
||||
AC_PROG_MKDIR_P
|
||||
PKG_PROG_PKG_CONFIG
|
||||
AC_PROG_NM
|
||||
|
||||
# The tarball from "make dist" already contains all of the generated files. If
|
||||
# we're building from that, then we won't need Python.
|
||||
|
|
|
@ -110,5 +110,16 @@ g_egldispatchstubs.h : $(GENERATE_DEPS)
|
|||
$(AM_V_GEN)$(PYTHON) $(GENERATE_DISPATCH_SCRIPT) header $(GENERATE_LIST_FILES) > $@
|
||||
endif
|
||||
|
||||
AM_TESTS_ENVIRONMENT = \
|
||||
TOP_SRCDIR='$(top_srcdir)' \
|
||||
TOP_BUILDDIR='$(top_builddir)' \
|
||||
NM='$(NM)' \
|
||||
PYTHON='$(PYTHON)'
|
||||
TESTS = egl-symbol-check.sh
|
||||
|
||||
EXTRA_DIST = \
|
||||
egl-symbol-check.sh \
|
||||
egl.symbols
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = egl.pc
|
||||
|
|
9
src/EGL/egl-symbol-check.sh
Executable file
9
src/EGL/egl-symbol-check.sh
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/sh
|
||||
|
||||
test "${PYTHON}" = ":" && exit 77
|
||||
test "x${NM}" = "x" && exit 77
|
||||
|
||||
exec "${PYTHON}" "${TOP_SRCDIR}/bin/symbols-check.py" \
|
||||
--nm "${NM}" \
|
||||
--lib "${TOP_BUILDDIR}/src/EGL/.libs/libEGL.so" \
|
||||
--symbols-file "${TOP_SRCDIR}/src/EGL/egl.symbols"
|
44
src/EGL/egl.symbols
Normal file
44
src/EGL/egl.symbols
Normal file
|
@ -0,0 +1,44 @@
|
|||
eglBindAPI
|
||||
eglBindTexImage
|
||||
eglChooseConfig
|
||||
eglClientWaitSync
|
||||
eglCopyBuffers
|
||||
eglCreateContext
|
||||
eglCreateImage
|
||||
eglCreatePbufferFromClientBuffer
|
||||
eglCreatePbufferSurface
|
||||
eglCreatePixmapSurface
|
||||
eglCreatePlatformPixmapSurface
|
||||
eglCreatePlatformWindowSurface
|
||||
eglCreateSync
|
||||
eglCreateWindowSurface
|
||||
eglDestroyContext
|
||||
eglDestroyImage
|
||||
eglDestroySurface
|
||||
eglDestroySync
|
||||
eglGetConfigAttrib
|
||||
eglGetConfigs
|
||||
eglGetCurrentContext
|
||||
eglGetCurrentDisplay
|
||||
eglGetCurrentSurface
|
||||
eglGetDisplay
|
||||
eglGetError
|
||||
eglGetPlatformDisplay
|
||||
eglGetProcAddress
|
||||
eglGetSyncAttrib
|
||||
eglInitialize
|
||||
eglMakeCurrent
|
||||
eglQueryAPI
|
||||
eglQueryContext
|
||||
eglQueryString
|
||||
eglQuerySurface
|
||||
eglReleaseTexImage
|
||||
eglReleaseThread
|
||||
eglSurfaceAttrib
|
||||
eglSwapBuffers
|
||||
eglSwapInterval
|
||||
eglTerminate
|
||||
eglWaitClient
|
||||
eglWaitGL
|
||||
eglWaitNative
|
||||
eglWaitSync
|
|
@ -54,6 +54,13 @@ g_libglglxwrapper.c : $(glapi_gen_libglglxstubs_deps)
|
|||
$(AM_V_GEN)$(PYTHON) $(PYTHON_FLAGS) $(glapi_gen_libglglxstubs_script) $(glapi_gen_glx_xml) > $@
|
||||
endif
|
||||
|
||||
AM_TESTS_ENVIRONMENT = \
|
||||
TOP_SRCDIR='$(top_srcdir)' \
|
||||
TOP_BUILDDIR='$(top_builddir)' \
|
||||
NM='$(NM)' \
|
||||
PYTHON='$(PYTHON)'
|
||||
TESTS = gl-symbol-check.sh
|
||||
|
||||
libGL_la_CFLAGS = \
|
||||
-I$(top_srcdir)/include
|
||||
|
||||
|
@ -73,3 +80,7 @@ libGL_la_LIBADD += @LIB_DL@
|
|||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = gl.pc
|
||||
|
||||
EXTRA_DIST = \
|
||||
gl-symbol-check.sh \
|
||||
gl.symbols
|
||||
|
|
9
src/GL/gl-symbol-check.sh
Executable file
9
src/GL/gl-symbol-check.sh
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/sh
|
||||
|
||||
test "${PYTHON}" = ":" && exit 77
|
||||
test "x${NM}" = "x" && exit 77
|
||||
|
||||
exec "${PYTHON}" "${TOP_SRCDIR}/bin/symbols-check.py" \
|
||||
--nm "${NM}" \
|
||||
--lib "${TOP_BUILDDIR}/src/GL/.libs/libGL.so" \
|
||||
--symbols-file "${TOP_SRCDIR}/src/GL/gl.symbols"
|
3470
src/GL/gl.symbols
Normal file
3470
src/GL/gl.symbols
Normal file
File diff suppressed because it is too large
Load diff
|
@ -27,7 +27,7 @@
|
|||
|
||||
lib_LTLIBRARIES = libGLESv1_CM.la
|
||||
|
||||
libGLESv1_CM_la_SOURCES =
|
||||
libGLESv1_CM_la_SOURCES =
|
||||
libGLESv1_CM_la_LDFLAGS = -shared \
|
||||
$(LINKER_FLAG_NO_UNDEFINED) \
|
||||
-version-info 3:0:2
|
||||
|
@ -40,3 +40,14 @@ libGLESv1_CM_la_LIBADD = \
|
|||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = glesv1_cm.pc
|
||||
|
||||
AM_TESTS_ENVIRONMENT = \
|
||||
TOP_SRCDIR='$(top_srcdir)' \
|
||||
TOP_BUILDDIR='$(top_builddir)' \
|
||||
NM='$(NM)' \
|
||||
PYTHON='$(PYTHON)'
|
||||
TESTS = glesv1-symbol-check.sh
|
||||
|
||||
EXTRA_DIST = \
|
||||
glesv1-symbol-check.sh \
|
||||
glesv1.symbols
|
||||
|
|
9
src/GLESv1/glesv1-symbol-check.sh
Executable file
9
src/GLESv1/glesv1-symbol-check.sh
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/sh
|
||||
|
||||
test "${PYTHON}" = ":" && exit 77
|
||||
test "x${NM}" = "x" && exit 77
|
||||
|
||||
exec "${PYTHON}" "${TOP_SRCDIR}/bin/symbols-check.py" \
|
||||
--nm "${NM}" \
|
||||
--lib "${TOP_BUILDDIR}/src/GLESv1/.libs/libGLESv1_CM.so" \
|
||||
--symbols-file "${TOP_SRCDIR}/src/GLESv1/glesv1.symbols"
|
145
src/GLESv1/glesv1.symbols
Normal file
145
src/GLESv1/glesv1.symbols
Normal file
|
@ -0,0 +1,145 @@
|
|||
glActiveTexture
|
||||
glAlphaFunc
|
||||
glAlphaFuncx
|
||||
glBindBuffer
|
||||
glBindTexture
|
||||
glBlendFunc
|
||||
glBufferData
|
||||
glBufferSubData
|
||||
glClear
|
||||
glClearColor
|
||||
glClearColorx
|
||||
glClearDepthf
|
||||
glClearDepthx
|
||||
glClearStencil
|
||||
glClientActiveTexture
|
||||
glClipPlanef
|
||||
glClipPlanex
|
||||
glColor4f
|
||||
glColor4ub
|
||||
glColor4x
|
||||
glColorMask
|
||||
glColorPointer
|
||||
glCompressedTexImage2D
|
||||
glCompressedTexSubImage2D
|
||||
glCopyTexImage2D
|
||||
glCopyTexSubImage2D
|
||||
glCullFace
|
||||
glDeleteBuffers
|
||||
glDeleteTextures
|
||||
glDepthFunc
|
||||
glDepthMask
|
||||
glDepthRangef
|
||||
glDepthRangex
|
||||
glDisable
|
||||
glDisableClientState
|
||||
glDrawArrays
|
||||
glDrawElements
|
||||
glEnable
|
||||
glEnableClientState
|
||||
glFinish
|
||||
glFlush
|
||||
glFogf
|
||||
glFogfv
|
||||
glFogx
|
||||
glFogxv
|
||||
glFrontFace
|
||||
glFrustumf
|
||||
glFrustumx
|
||||
glGenBuffers
|
||||
glGenTextures
|
||||
glGetBooleanv
|
||||
glGetBufferParameteriv
|
||||
glGetClipPlanef
|
||||
glGetClipPlanex
|
||||
glGetError
|
||||
glGetFixedv
|
||||
glGetFloatv
|
||||
glGetIntegerv
|
||||
glGetLightfv
|
||||
glGetLightxv
|
||||
glGetMaterialfv
|
||||
glGetMaterialxv
|
||||
glGetPointerv
|
||||
glGetString
|
||||
glGetTexEnvfv
|
||||
glGetTexEnviv
|
||||
glGetTexEnvxv
|
||||
glGetTexParameterfv
|
||||
glGetTexParameteriv
|
||||
glGetTexParameterxv
|
||||
glHint
|
||||
glIsBuffer
|
||||
glIsEnabled
|
||||
glIsTexture
|
||||
glLightf
|
||||
glLightfv
|
||||
glLightModelf
|
||||
glLightModelfv
|
||||
glLightModelx
|
||||
glLightModelxv
|
||||
glLightx
|
||||
glLightxv
|
||||
glLineWidth
|
||||
glLineWidthx
|
||||
glLoadIdentity
|
||||
glLoadMatrixf
|
||||
glLoadMatrixx
|
||||
glLogicOp
|
||||
glMaterialf
|
||||
glMaterialfv
|
||||
glMaterialx
|
||||
glMaterialxv
|
||||
glMatrixMode
|
||||
glMultiTexCoord4f
|
||||
glMultiTexCoord4x
|
||||
glMultMatrixf
|
||||
glMultMatrixx
|
||||
glNormal3f
|
||||
glNormal3x
|
||||
glNormalPointer
|
||||
glOrthof
|
||||
glOrthox
|
||||
glPixelStorei
|
||||
glPointParameterf
|
||||
glPointParameterfv
|
||||
glPointParameterx
|
||||
glPointParameterxv
|
||||
glPointSize
|
||||
glPointSizePointerOES
|
||||
glPointSizex
|
||||
glPolygonOffset
|
||||
glPolygonOffsetx
|
||||
glPopMatrix
|
||||
glPushMatrix
|
||||
glReadPixels
|
||||
glRotatef
|
||||
glRotatex
|
||||
glSampleCoverage
|
||||
glSampleCoveragex
|
||||
glScalef
|
||||
glScalex
|
||||
glScissor
|
||||
glShadeModel
|
||||
glStencilFunc
|
||||
glStencilMask
|
||||
glStencilOp
|
||||
glTexCoordPointer
|
||||
glTexEnvf
|
||||
glTexEnvfv
|
||||
glTexEnvi
|
||||
glTexEnviv
|
||||
glTexEnvx
|
||||
glTexEnvxv
|
||||
glTexImage2D
|
||||
glTexParameterf
|
||||
glTexParameterfv
|
||||
glTexParameteri
|
||||
glTexParameteriv
|
||||
glTexParameterx
|
||||
glTexParameterxv
|
||||
glTexSubImage2D
|
||||
glTranslatef
|
||||
glTranslatex
|
||||
glVertexPointer
|
||||
glViewport
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
lib_LTLIBRARIES = libGLESv2.la
|
||||
|
||||
libGLESv2_la_SOURCES =
|
||||
libGLESv2_la_SOURCES =
|
||||
libGLESv2_la_LDFLAGS = -shared \
|
||||
$(LINKER_FLAG_NO_UNDEFINED) \
|
||||
-version-info 3:0:1
|
||||
|
@ -40,3 +40,14 @@ libGLESv2_la_LIBADD = \
|
|||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = glesv2.pc
|
||||
|
||||
AM_TESTS_ENVIRONMENT = \
|
||||
TOP_SRCDIR='$(top_srcdir)' \
|
||||
TOP_BUILDDIR='$(top_builddir)' \
|
||||
NM='$(NM)' \
|
||||
PYTHON='$(PYTHON)'
|
||||
TESTS = glesv2-symbol-check.sh
|
||||
|
||||
EXTRA_DIST = \
|
||||
glesv2-symbol-check.sh \
|
||||
glesv2.symbols
|
||||
|
|
9
src/GLESv2/glesv2-symbol-check.sh
Executable file
9
src/GLESv2/glesv2-symbol-check.sh
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/sh
|
||||
|
||||
test "${PYTHON}" = ":" && exit 77
|
||||
test "x${NM}" = "x" && exit 77
|
||||
|
||||
exec "${PYTHON}" "${TOP_SRCDIR}/bin/symbols-check.py" \
|
||||
--nm "${NM}" \
|
||||
--lib "${TOP_BUILDDIR}/src/GLESv2/.libs/libGLESv2.so" \
|
||||
--symbols-file "${TOP_SRCDIR}/src/GLESv2/glesv2.symbols"
|
358
src/GLESv2/glesv2.symbols
Normal file
358
src/GLESv2/glesv2.symbols
Normal file
|
@ -0,0 +1,358 @@
|
|||
glActiveShaderProgram
|
||||
glActiveTexture
|
||||
glAttachShader
|
||||
glBeginQuery
|
||||
glBeginTransformFeedback
|
||||
glBindAttribLocation
|
||||
glBindBuffer
|
||||
glBindBufferBase
|
||||
glBindBufferRange
|
||||
glBindFramebuffer
|
||||
glBindImageTexture
|
||||
glBindProgramPipeline
|
||||
glBindRenderbuffer
|
||||
glBindSampler
|
||||
glBindTexture
|
||||
glBindTransformFeedback
|
||||
glBindVertexArray
|
||||
glBindVertexBuffer
|
||||
glBlendBarrier
|
||||
glBlendColor
|
||||
glBlendEquation
|
||||
glBlendEquationi
|
||||
glBlendEquationSeparate
|
||||
glBlendEquationSeparatei
|
||||
glBlendFunc
|
||||
glBlendFunci
|
||||
glBlendFuncSeparate
|
||||
glBlendFuncSeparatei
|
||||
glBlitFramebuffer
|
||||
glBufferData
|
||||
glBufferSubData
|
||||
glCheckFramebufferStatus
|
||||
glClear
|
||||
glClearBufferfi
|
||||
glClearBufferfv
|
||||
glClearBufferiv
|
||||
glClearBufferuiv
|
||||
glClearColor
|
||||
glClearDepthf
|
||||
glClearStencil
|
||||
glClientWaitSync
|
||||
glColorMask
|
||||
glColorMaski
|
||||
glCompileShader
|
||||
glCompressedTexImage2D
|
||||
glCompressedTexImage3D
|
||||
glCompressedTexSubImage2D
|
||||
glCompressedTexSubImage3D
|
||||
glCopyBufferSubData
|
||||
glCopyImageSubData
|
||||
glCopyTexImage2D
|
||||
glCopyTexSubImage2D
|
||||
glCopyTexSubImage3D
|
||||
glCreateProgram
|
||||
glCreateShader
|
||||
glCreateShaderProgramv
|
||||
glCullFace
|
||||
glDebugMessageCallback
|
||||
glDebugMessageControl
|
||||
glDebugMessageInsert
|
||||
glDeleteBuffers
|
||||
glDeleteFramebuffers
|
||||
glDeleteProgram
|
||||
glDeleteProgramPipelines
|
||||
glDeleteQueries
|
||||
glDeleteRenderbuffers
|
||||
glDeleteSamplers
|
||||
glDeleteShader
|
||||
glDeleteSync
|
||||
glDeleteTextures
|
||||
glDeleteTransformFeedbacks
|
||||
glDeleteVertexArrays
|
||||
glDepthFunc
|
||||
glDepthMask
|
||||
glDepthRangef
|
||||
glDetachShader
|
||||
glDisable
|
||||
glDisablei
|
||||
glDisableVertexAttribArray
|
||||
glDispatchCompute
|
||||
glDispatchComputeIndirect
|
||||
glDrawArrays
|
||||
glDrawArraysIndirect
|
||||
glDrawArraysInstanced
|
||||
glDrawBuffers
|
||||
glDrawElements
|
||||
glDrawElementsBaseVertex
|
||||
glDrawElementsIndirect
|
||||
glDrawElementsInstanced
|
||||
glDrawElementsInstancedBaseVertex
|
||||
glDrawRangeElements
|
||||
glDrawRangeElementsBaseVertex
|
||||
glEnable
|
||||
glEnablei
|
||||
glEnableVertexAttribArray
|
||||
glEndQuery
|
||||
glEndTransformFeedback
|
||||
glFenceSync
|
||||
glFinish
|
||||
glFlush
|
||||
glFlushMappedBufferRange
|
||||
glFramebufferParameteri
|
||||
glFramebufferRenderbuffer
|
||||
glFramebufferTexture
|
||||
glFramebufferTexture2D
|
||||
glFramebufferTextureLayer
|
||||
glFrontFace
|
||||
glGenBuffers
|
||||
glGenerateMipmap
|
||||
glGenFramebuffers
|
||||
glGenProgramPipelines
|
||||
glGenQueries
|
||||
glGenRenderbuffers
|
||||
glGenSamplers
|
||||
glGenTextures
|
||||
glGenTransformFeedbacks
|
||||
glGenVertexArrays
|
||||
glGetActiveAttrib
|
||||
glGetActiveUniform
|
||||
glGetActiveUniformBlockiv
|
||||
glGetActiveUniformBlockName
|
||||
glGetActiveUniformsiv
|
||||
glGetAttachedShaders
|
||||
glGetAttribLocation
|
||||
glGetBooleani_v
|
||||
glGetBooleanv
|
||||
glGetBufferParameteri64v
|
||||
glGetBufferParameteriv
|
||||
glGetBufferPointerv
|
||||
glGetDebugMessageLog
|
||||
glGetError
|
||||
glGetFloatv
|
||||
glGetFragDataLocation
|
||||
glGetFramebufferAttachmentParameteriv
|
||||
glGetFramebufferParameteriv
|
||||
glGetGraphicsResetStatus
|
||||
glGetInteger64i_v
|
||||
glGetInteger64v
|
||||
glGetIntegeri_v
|
||||
glGetIntegerv
|
||||
glGetInternalformativ
|
||||
glGetMultisamplefv
|
||||
glGetnUniformfv
|
||||
glGetnUniformiv
|
||||
glGetnUniformuiv
|
||||
glGetObjectLabel
|
||||
glGetObjectPtrLabel
|
||||
glGetPointerv
|
||||
glGetProgramBinary
|
||||
glGetProgramInfoLog
|
||||
glGetProgramInterfaceiv
|
||||
glGetProgramiv
|
||||
glGetProgramPipelineInfoLog
|
||||
glGetProgramPipelineiv
|
||||
glGetProgramResourceIndex
|
||||
glGetProgramResourceiv
|
||||
glGetProgramResourceLocation
|
||||
glGetProgramResourceName
|
||||
glGetQueryiv
|
||||
glGetQueryObjectuiv
|
||||
glGetRenderbufferParameteriv
|
||||
glGetSamplerParameterfv
|
||||
glGetSamplerParameterIiv
|
||||
glGetSamplerParameterIuiv
|
||||
glGetSamplerParameteriv
|
||||
glGetShaderInfoLog
|
||||
glGetShaderiv
|
||||
glGetShaderPrecisionFormat
|
||||
glGetShaderSource
|
||||
glGetString
|
||||
glGetStringi
|
||||
glGetSynciv
|
||||
glGetTexLevelParameterfv
|
||||
glGetTexLevelParameteriv
|
||||
glGetTexParameterfv
|
||||
glGetTexParameterIiv
|
||||
glGetTexParameterIuiv
|
||||
glGetTexParameteriv
|
||||
glGetTransformFeedbackVarying
|
||||
glGetUniformBlockIndex
|
||||
glGetUniformfv
|
||||
glGetUniformIndices
|
||||
glGetUniformiv
|
||||
glGetUniformLocation
|
||||
glGetUniformuiv
|
||||
glGetVertexAttribfv
|
||||
glGetVertexAttribIiv
|
||||
glGetVertexAttribIuiv
|
||||
glGetVertexAttribiv
|
||||
glGetVertexAttribPointerv
|
||||
glHint
|
||||
glInvalidateFramebuffer
|
||||
glInvalidateSubFramebuffer
|
||||
glIsBuffer
|
||||
glIsEnabled
|
||||
glIsEnabledi
|
||||
glIsFramebuffer
|
||||
glIsProgram
|
||||
glIsProgramPipeline
|
||||
glIsQuery
|
||||
glIsRenderbuffer
|
||||
glIsSampler
|
||||
glIsShader
|
||||
glIsSync
|
||||
glIsTexture
|
||||
glIsTransformFeedback
|
||||
glIsVertexArray
|
||||
glLineWidth
|
||||
glLinkProgram
|
||||
glMapBufferRange
|
||||
glMemoryBarrier
|
||||
glMemoryBarrierByRegion
|
||||
glMinSampleShading
|
||||
glObjectLabel
|
||||
glObjectPtrLabel
|
||||
glPatchParameteri
|
||||
glPauseTransformFeedback
|
||||
glPixelStorei
|
||||
glPolygonOffset
|
||||
glPopDebugGroup
|
||||
glPrimitiveBoundingBox
|
||||
glProgramBinary
|
||||
glProgramParameteri
|
||||
glProgramUniform1f
|
||||
glProgramUniform1fv
|
||||
glProgramUniform1i
|
||||
glProgramUniform1iv
|
||||
glProgramUniform1ui
|
||||
glProgramUniform1uiv
|
||||
glProgramUniform2f
|
||||
glProgramUniform2fv
|
||||
glProgramUniform2i
|
||||
glProgramUniform2iv
|
||||
glProgramUniform2ui
|
||||
glProgramUniform2uiv
|
||||
glProgramUniform3f
|
||||
glProgramUniform3fv
|
||||
glProgramUniform3i
|
||||
glProgramUniform3iv
|
||||
glProgramUniform3ui
|
||||
glProgramUniform3uiv
|
||||
glProgramUniform4f
|
||||
glProgramUniform4fv
|
||||
glProgramUniform4i
|
||||
glProgramUniform4iv
|
||||
glProgramUniform4ui
|
||||
glProgramUniform4uiv
|
||||
glProgramUniformMatrix2fv
|
||||
glProgramUniformMatrix2x3fv
|
||||
glProgramUniformMatrix2x4fv
|
||||
glProgramUniformMatrix3fv
|
||||
glProgramUniformMatrix3x2fv
|
||||
glProgramUniformMatrix3x4fv
|
||||
glProgramUniformMatrix4fv
|
||||
glProgramUniformMatrix4x2fv
|
||||
glProgramUniformMatrix4x3fv
|
||||
glPushDebugGroup
|
||||
glReadBuffer
|
||||
glReadnPixels
|
||||
glReadPixels
|
||||
glReleaseShaderCompiler
|
||||
glRenderbufferStorage
|
||||
glRenderbufferStorageMultisample
|
||||
glResumeTransformFeedback
|
||||
glSampleCoverage
|
||||
glSampleMaski
|
||||
glSamplerParameterf
|
||||
glSamplerParameterfv
|
||||
glSamplerParameteri
|
||||
glSamplerParameterIiv
|
||||
glSamplerParameterIuiv
|
||||
glSamplerParameteriv
|
||||
glScissor
|
||||
glShaderBinary
|
||||
glShaderSource
|
||||
glStencilFunc
|
||||
glStencilFuncSeparate
|
||||
glStencilMask
|
||||
glStencilMaskSeparate
|
||||
glStencilOp
|
||||
glStencilOpSeparate
|
||||
glTexBuffer
|
||||
glTexBufferRange
|
||||
glTexImage2D
|
||||
glTexImage3D
|
||||
glTexParameterf
|
||||
glTexParameterfv
|
||||
glTexParameteri
|
||||
glTexParameterIiv
|
||||
glTexParameterIuiv
|
||||
glTexParameteriv
|
||||
glTexStorage2D
|
||||
glTexStorage2DMultisample
|
||||
glTexStorage3D
|
||||
glTexStorage3DMultisample
|
||||
glTexSubImage2D
|
||||
glTexSubImage3D
|
||||
glTransformFeedbackVaryings
|
||||
glUniform1f
|
||||
glUniform1fv
|
||||
glUniform1i
|
||||
glUniform1iv
|
||||
glUniform1ui
|
||||
glUniform1uiv
|
||||
glUniform2f
|
||||
glUniform2fv
|
||||
glUniform2i
|
||||
glUniform2iv
|
||||
glUniform2ui
|
||||
glUniform2uiv
|
||||
glUniform3f
|
||||
glUniform3fv
|
||||
glUniform3i
|
||||
glUniform3iv
|
||||
glUniform3ui
|
||||
glUniform3uiv
|
||||
glUniform4f
|
||||
glUniform4fv
|
||||
glUniform4i
|
||||
glUniform4iv
|
||||
glUniform4ui
|
||||
glUniform4uiv
|
||||
glUniformBlockBinding
|
||||
glUniformMatrix2fv
|
||||
glUniformMatrix2x3fv
|
||||
glUniformMatrix2x4fv
|
||||
glUniformMatrix3fv
|
||||
glUniformMatrix3x2fv
|
||||
glUniformMatrix3x4fv
|
||||
glUniformMatrix4fv
|
||||
glUniformMatrix4x2fv
|
||||
glUniformMatrix4x3fv
|
||||
glUnmapBuffer
|
||||
glUseProgram
|
||||
glUseProgramStages
|
||||
glValidateProgram
|
||||
glValidateProgramPipeline
|
||||
glVertexAttrib1f
|
||||
glVertexAttrib1fv
|
||||
glVertexAttrib2f
|
||||
glVertexAttrib2fv
|
||||
glVertexAttrib3f
|
||||
glVertexAttrib3fv
|
||||
glVertexAttrib4f
|
||||
glVertexAttrib4fv
|
||||
glVertexAttribBinding
|
||||
glVertexAttribDivisor
|
||||
glVertexAttribFormat
|
||||
glVertexAttribI4i
|
||||
glVertexAttribI4iv
|
||||
glVertexAttribI4ui
|
||||
glVertexAttribI4uiv
|
||||
glVertexAttribIFormat
|
||||
glVertexAttribIPointer
|
||||
glVertexAttribPointer
|
||||
glVertexBindingDivisor
|
||||
glViewport
|
||||
glWaitSync
|
|
@ -83,3 +83,14 @@ libGLX_la_SOURCES = \
|
|||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = glx.pc
|
||||
|
||||
AM_TESTS_ENVIRONMENT = \
|
||||
TOP_SRCDIR='$(top_srcdir)' \
|
||||
TOP_BUILDDIR='$(top_builddir)' \
|
||||
NM='$(NM)' \
|
||||
PYTHON='$(PYTHON)'
|
||||
TESTS = glx-symbol-check.sh
|
||||
|
||||
EXTRA_DIST += \
|
||||
glx-symbol-check.sh \
|
||||
glx.symbols
|
||||
|
|
9
src/GLX/glx-symbol-check.sh
Executable file
9
src/GLX/glx-symbol-check.sh
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/sh
|
||||
|
||||
test "${PYTHON}" = ":" && exit 77
|
||||
test "x${NM}" = "x" && exit 77
|
||||
|
||||
exec "${PYTHON}" "${TOP_SRCDIR}/bin/symbols-check.py" \
|
||||
--nm "${NM}" \
|
||||
--lib "${TOP_BUILDDIR}/src/GLX/.libs/libGLX.so" \
|
||||
--symbols-file "${TOP_SRCDIR}/src/GLX/glx.symbols"
|
42
src/GLX/glx.symbols
Normal file
42
src/GLX/glx.symbols
Normal file
|
@ -0,0 +1,42 @@
|
|||
glXChooseFBConfig
|
||||
glXChooseVisual
|
||||
glXCopyContext
|
||||
glXCreateContext
|
||||
glXCreateGLXPixmap
|
||||
glXCreateNewContext
|
||||
glXCreatePbuffer
|
||||
glXCreatePixmap
|
||||
glXCreateWindow
|
||||
glXDestroyContext
|
||||
glXDestroyGLXPixmap
|
||||
glXDestroyPbuffer
|
||||
glXDestroyPixmap
|
||||
glXDestroyWindow
|
||||
glXGetClientString
|
||||
glXGetConfig
|
||||
glXGetCurrentContext
|
||||
glXGetCurrentDisplay
|
||||
glXGetCurrentDrawable
|
||||
glXGetCurrentReadDrawable
|
||||
glXGetFBConfigAttrib
|
||||
glXGetFBConfigs
|
||||
glXGetProcAddress
|
||||
glXGetProcAddressARB
|
||||
glXGetSelectedEvent
|
||||
glXGetVisualFromFBConfig
|
||||
__GLXGL_CORE_FUNCTIONS
|
||||
__glXGLLoadGLXFunction
|
||||
glXIsDirect
|
||||
glXMakeContextCurrent
|
||||
glXMakeCurrent
|
||||
glXQueryContext
|
||||
glXQueryDrawable
|
||||
glXQueryExtension
|
||||
glXQueryExtensionsString
|
||||
glXQueryServerString
|
||||
glXQueryVersion
|
||||
glXSelectEvent
|
||||
glXSwapBuffers
|
||||
glXUseXFont
|
||||
glXWaitGL
|
||||
glXWaitX
|
|
@ -36,7 +36,7 @@ libopengl_main_la_CFLAGS = \
|
|||
|
||||
lib_LTLIBRARIES = libOpenGL.la
|
||||
|
||||
libOpenGL_la_SOURCES =
|
||||
libOpenGL_la_SOURCES =
|
||||
libOpenGL_la_LDFLAGS = -shared \
|
||||
$(LINKER_FLAG_NO_UNDEFINED) \
|
||||
-version-info 0
|
||||
|
@ -49,3 +49,14 @@ libOpenGL_la_LIBADD = \
|
|||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = opengl.pc
|
||||
|
||||
AM_TESTS_ENVIRONMENT = \
|
||||
TOP_SRCDIR='$(top_srcdir)' \
|
||||
TOP_BUILDDIR='$(top_builddir)' \
|
||||
NM='$(NM)' \
|
||||
PYTHON='$(PYTHON)'
|
||||
TESTS = ogl-symbol-check.sh
|
||||
|
||||
EXTRA_DIST = \
|
||||
ogl-symbol-check.sh \
|
||||
ogl.symbols
|
||||
|
|
9
src/OpenGL/ogl-symbol-check.sh
Executable file
9
src/OpenGL/ogl-symbol-check.sh
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/sh
|
||||
|
||||
test "${PYTHON}" = ":" && exit 77
|
||||
test "x${NM}" = "x" && exit 77
|
||||
|
||||
exec "${PYTHON}" "${TOP_SRCDIR}/bin/symbols-check.py" \
|
||||
--nm "${NM}" \
|
||||
--lib "${TOP_BUILDDIR}/src/OpenGL/.libs/libOpenGL.so" \
|
||||
--symbols-file "${TOP_SRCDIR}/src/OpenGL/ogl.symbols"
|
1044
src/OpenGL/ogl.symbols
Normal file
1044
src/OpenGL/ogl.symbols
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue