Commit 8565e772 by Ben Clayton

CMake build: Only export explicit symbols on macOS

Both windows and linux do this already using .def files and linker scripts, respectfully. Mac's linker has the exported_symbols_list flag that acts similarly. This is required as the SPIRV-Tools in dEQP now collides with the version in SwiftShader, leading to horribly cryptic crashes deep in SPIRV structures. Change-Id: I3641744ae2439bf05468b6f10cf3da0307614534 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/32568 Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Tested-by: 's avatarBen Clayton <bclayton@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Reviewed-by: 's avatarChris Forbes <chrisforbes@google.com>
parent c13e1808
...@@ -200,6 +200,15 @@ endmacro() ...@@ -200,6 +200,15 @@ endmacro()
macro(set_shared_library_export_map TARGET DIR) macro(set_shared_library_export_map TARGET DIR)
if(MSVC) if(MSVC)
set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " /DEF:\"${DIR}/${TARGET}.def\"") set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " /DEF:\"${DIR}/${TARGET}.def\"")
elseif(APPLE)
# The exported symbols list only exports the API functions and
# hides all the others.
set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS "-exported_symbols_list ${DIR}/${TARGET}.exports")
set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_DEPENDS "${DIR}/${TARGET}.exports;")
# Don't allow undefined symbols, unless it's a Sanitizer build.
if(NOT MSAN AND NOT ASAN AND NOT TSAN AND NOT UBSAN)
set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-undefined,error")
endif()
elseif(LINUX) elseif(LINUX)
# The version script only exports the API functions and # The version script only exports the API functions and
# hides all the others. # hides all the others.
......
# EGL core functions
_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
# Extensions
_eglCreateImageKHR
_eglDestroyImageKHR
_eglGetPlatformDisplayEXT
_eglCreatePlatformWindowSurfaceEXT
_eglCreatePlatformPixmapSurfaceEXT
_eglCreateSyncKHR
_eglDestroySyncKHR
_eglClientWaitSyncKHR
_eglGetSyncAttribKHR
# Table of function pointers to disambiguate between libraries
_libEGL_swiftshader
# Type-strings and type-infos required by sanitizers
_ZTS*
_ZTI*
_eglBindAPI
_eglBindTexImage
_eglChooseConfig
_eglCopyBuffers
_eglCreateContext
_eglCreatePbufferSurface
_eglCreatePixmapSurface
_eglCreateWindowSurface
_eglDestroyContext
_eglDestroySurface
_eglGetConfigAttrib
_eglGetConfigs
_eglGetCurrentContext
_eglGetCurrentDisplay
_eglGetCurrentSurface
_eglGetDisplay
_eglGetError
_eglGetProcAddress
_eglInitialize
_eglMakeCurrent
_eglQueryContext
_eglQueryString
_eglQuerySurface
_eglReleaseTexImage
_eglSurfaceAttrib
_eglSwapBuffers
_eglSwapInterval
_eglTerminate
_eglWaitGL
_eglWaitNative
_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
_glLightModelf
_glLightModelfv
_glLightModelx
_glLightModelxv
_glLightf
_glLightfv
_glLightx
_glLightxv
_glLineWidth
_glLineWidthx
_glLoadIdentity
_glLoadMatrixf
_glLoadMatrixx
_glLogicOp
_glMaterialf
_glMaterialfv
_glMaterialx
_glMaterialxv
_glMatrixMode
_glMultMatrixf
_glMultMatrixx
_glMultiTexCoord4f
_glMultiTexCoord4x
_glNormal3f
_glNormal3x
_glNormalPointer
_glOrthof
_glOrthox
_glPixelStorei
_glPointParameterf
_glPointParameterfv
_glPointParameterx
_glPointParameterxv
_glPointSize
_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
# Extensions
_glPointSizePointerOES
_glEGLImageTargetTexture2DOES
_glEGLImageTargetRenderbufferStorageOES
_glIsRenderbufferOES
_glBindRenderbufferOES
_glDeleteRenderbuffersOES
_glGenRenderbuffersOES
_glRenderbufferStorageOES
_glGetRenderbufferParameterivOES
_glIsFramebufferOES
_glBindFramebufferOES
_glDeleteFramebuffersOES
_glGenFramebuffersOES
_glCheckFramebufferStatusOES
_glFramebufferRenderbufferOES
_glFramebufferTexture2DOES
_glGetFramebufferAttachmentParameterivOES
_glGenerateMipmapOES
_glBlendEquationOES
_glBlendEquationSeparateOES
_glBlendFuncSeparateOES
_glDrawTexsOES
_glDrawTexiOES
_glDrawTexxOES
_glDrawTexsvOES
_glDrawTexivOES
_glDrawTexxvOES
_glDrawTexfOES
_glDrawTexfvOES
_eglCreateSyncKHR
_eglDestroySyncKHR
_eglClientWaitSyncKHR
_eglGetSyncAttribKHR
_libGLES_CM_swiftshader
# OpenGL ES 2.0 core functions
_glActiveTexture
_glAttachShader
_glBindAttribLocation
_glBindBuffer
_glBindFramebuffer
_glBindRenderbuffer
_glBindTexture
_glBlendColor
_glBlendEquation
_glBlendEquationSeparate
_glBlendFunc
_glBlendFuncSeparate
_glBufferData
_glBufferSubData
_glCheckFramebufferStatus
_glClear
_glClearColor
_glClearDepthf
_glClearStencil
_glColorMask
_glCompileShader
_glCompressedTexImage2D
_glCompressedTexSubImage2D
_glCopyTexImage2D
_glCopyTexSubImage2D
_glCreateProgram
_glCreateShader
_glCullFace
_glDeleteBuffers
_glDeleteFramebuffers
_glDeleteProgram
_glDeleteRenderbuffers
_glDeleteShader
_glDeleteTextures
_glDepthFunc
_glDepthMask
_glDepthRangef
_glDetachShader
_glDisable
_glDisableVertexAttribArray
_glDrawArrays
_glDrawElements
_glEnable
_glEnableVertexAttribArray
_glFinish
_glFlush
_glFramebufferRenderbuffer
_glFramebufferTexture2D
_glFrontFace
_glGenBuffers
_glGenFramebuffers
_glGenRenderbuffers
_glGenTextures
_glGenerateMipmap
_glGetActiveAttrib
_glGetActiveUniform
_glGetAttachedShaders
_glGetAttribLocation
_glGetBooleanv
_glGetBufferParameteriv
_glGetError
_glGetFloatv
_glGetFramebufferAttachmentParameteriv
_glGetIntegerv
_glGetProgramInfoLog
_glGetProgramiv
_glGetRenderbufferParameteriv
_glGetShaderInfoLog
_glGetShaderPrecisionFormat
_glGetShaderSource
_glGetShaderiv
_glGetString
_glGetTexParameterfv
_glGetTexParameteriv
_glGetUniformLocation
_glGetUniformfv
_glGetUniformiv
_glGetVertexAttribPointerv
_glGetVertexAttribfv
_glGetVertexAttribiv
_glHint
_glIsBuffer
_glIsEnabled
_glIsFramebuffer
_glIsProgram
_glIsRenderbuffer
_glIsShader
_glIsTexture
_glLineWidth
_glLinkProgram
_glPixelStorei
_glPolygonOffset
_glReadPixels
_glReleaseShaderCompiler
_glRenderbufferStorage
_glSampleCoverage
_glScissor
_glShaderBinary
_glShaderSource
_glStencilFunc
_glStencilFuncSeparate
_glStencilMask
_glStencilMaskSeparate
_glStencilOp
_glStencilOpSeparate
_glTexImage2D
_glTexParameterf
_glTexParameterfv
_glTexParameteri
_glTexParameteriv
_glTexSubImage2D
_glUniform1f
_glUniform1fv
_glUniform1i
_glUniform1iv
_glUniform2f
_glUniform2fv
_glUniform2i
_glUniform2iv
_glUniform3f
_glUniform3fv
_glUniform3i
_glUniform3iv
_glUniform4f
_glUniform4fv
_glUniform4i
_glUniform4iv
_glUniformMatrix2fv
_glUniformMatrix3fv
_glUniformMatrix4fv
_glUseProgram
_glValidateProgram
_glVertexAttrib1f
_glVertexAttrib1fv
_glVertexAttrib2f
_glVertexAttrib2fv
_glVertexAttrib3f
_glVertexAttrib3fv
_glVertexAttrib4f
_glVertexAttrib4fv
_glVertexAttribPointer
_glViewport
# OpenGL ES 3.0 core functions
_glReadBuffer
_glDrawRangeElements
_glTexImage3D
_glTexSubImage3D
_glCopyTexSubImage3D
_glCompressedTexImage3D
_glCompressedTexSubImage3D
_glGenQueries
_glDeleteQueries
_glIsQuery
_glBeginQuery
_glEndQuery
_glGetQueryiv
_glGetQueryObjectuiv
_glUnmapBuffer
_glGetBufferPointerv
_glDrawBuffers
_glUniformMatrix2x3fv
_glUniformMatrix3x2fv
_glUniformMatrix2x4fv
_glUniformMatrix4x2fv
_glUniformMatrix3x4fv
_glUniformMatrix4x3fv
_glBlitFramebuffer
_glRenderbufferStorageMultisample
_glFramebufferTextureLayer
_glMapBufferRange
_glFlushMappedBufferRange
_glBindVertexArray
_glDeleteVertexArrays
_glGenVertexArrays
_glIsVertexArray
_glGetIntegeri_v
_glBeginTransformFeedback
_glEndTransformFeedback
_glBindBufferRange
_glBindBufferBase
_glTransformFeedbackVaryings
_glGetTransformFeedbackVarying
_glVertexAttribIPointer
_glGetVertexAttribIiv
_glGetVertexAttribIuiv
_glVertexAttribI4i
_glVertexAttribI4ui
_glVertexAttribI4iv
_glVertexAttribI4uiv
_glGetUniformuiv
_glGetFragDataLocation
_glUniform1ui
_glUniform2ui
_glUniform3ui
_glUniform4ui
_glUniform1uiv
_glUniform2uiv
_glUniform3uiv
_glUniform4uiv
_glClearBufferiv
_glClearBufferuiv
_glClearBufferfv
_glClearBufferfi
_glGetStringi
_glCopyBufferSubData
_glGetUniformIndices
_glGetActiveUniformsiv
_glGetUniformBlockIndex
_glGetActiveUniformBlockiv
_glGetActiveUniformBlockName
_glUniformBlockBinding
_glDrawArraysInstanced
_glDrawElementsInstanced
_glFenceSync
_glIsSync
_glDeleteSync
_glClientWaitSync
_glWaitSync
_glGetInteger64v
_glGetSynciv
_glGetInteger64i_v
_glGetBufferParameteri64v
_glGenSamplers
_glDeleteSamplers
_glIsSampler
_glBindSampler
_glSamplerParameteri
_glSamplerParameteriv
_glSamplerParameterf
_glSamplerParameterfv
_glGetSamplerParameteriv
_glGetSamplerParameterfv
_glVertexAttribDivisor
_glBindTransformFeedback
_glDeleteTransformFeedbacks
_glGenTransformFeedbacks
_glIsTransformFeedback
_glPauseTransformFeedback
_glResumeTransformFeedback
_glGetProgramBinary
_glProgramBinary
_glProgramParameteri
_glInvalidateFramebuffer
_glInvalidateSubFramebuffer
_glTexStorage2D
_glTexStorage3D
_glGetInternalformativ
# Extensions
_glTexImage3DOES
_glBlitFramebufferANGLE
_glRenderbufferStorageMultisampleANGLE
_glDeleteFencesNV
_glFinishFenceNV
_glGenFencesNV
_glGetFenceivNV
_glIsFenceNV
_glSetFenceNV
_glTestFenceNV
_glGetGraphicsResetStatusEXT
_glReadnPixelsEXT
_glGetnUniformfvEXT
_glGetnUniformivEXT
_glGenQueriesEXT
_glDeleteQueriesEXT
_glIsQueryEXT
_glBeginQueryEXT
_glEndQueryEXT
_glGetQueryivEXT
_glGetQueryObjectuivEXT
_glEGLImageTargetTexture2DOES
_glEGLImageTargetRenderbufferStorageOES
_glIsRenderbufferOES
_glBindRenderbufferOES
_glDeleteRenderbuffersOES
_glGenRenderbuffersOES
_glRenderbufferStorageOES
_glGetRenderbufferParameterivOES
_glIsFramebufferOES
_glBindFramebufferOES
_glDeleteFramebuffersOES
_glGenFramebuffersOES
_glCheckFramebufferStatusOES
_glFramebufferRenderbufferOES
_glFramebufferTexture2DOES
_glGetFramebufferAttachmentParameterivOES
_glGenerateMipmapOES
_glDrawBuffersEXT
_glBindVertexArrayOES
_glDeleteVertexArraysOES
_glGenVertexArraysOES
_glIsVertexArrayOES
# Table of function pointers to disambiguate between libraries
_libGLESv2_swiftshader
# Type-strings and type-infos required by sanitizers
_ZTS*
_ZTI*
_vkGetInstanceProcAddr
# Loader-ICD interface functions
_vk_icdGetInstanceProcAddr
_vk_icdNegotiateLoaderICDInterfaceVersion
# Type-strings and type-infos required by sanitizers
_ZTS*
_ZTI*
# Android HAL module info object
#HMI
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment