From 31f33369135c80cfceec9765b73fa6556641cd2e Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 10 Apr 2023 12:37:06 -0700 Subject: Add a version script for non-Windows/macOS systems To more aggressively control library exports. Despite the -fvisibility=hidden flag that should hide everything by default, GNU's libstdc++ forces default visibility for generated std namespace symbols (from template functions that don't inline, for example), adding some standard C++ symbols to the exported symbol list. This can cause ABI problems if an app links to OpenAL and uses one of those symbols, as a future internal change can cause the function to not be generated and make the symbol no longer available. There seems to be no way to prevent this, aside from this version script. This has the added advantage of ensuring future extension functions don't accidentally get exported due to the ALC_API or AL_API macros making them visible. --- libopenal.version | 192 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 libopenal.version (limited to 'libopenal.version') diff --git a/libopenal.version b/libopenal.version new file mode 100644 index 00000000..dd998e14 --- /dev/null +++ b/libopenal.version @@ -0,0 +1,192 @@ +{ +global: +alBuffer3f; +alBuffer3i; +alBufferData; +alBufferf; +alBufferfv; +alBufferi; +alBufferiv; +alcCaptureCloseDevice; +alcCaptureOpenDevice; +alcCaptureSamples; +alcCaptureStart; +alcCaptureStop; +alcCloseDevice; +alcCreateContext; +alcDestroyContext; +alcGetContextsDevice; +alcGetCurrentContext; +alcGetEnumValue; +alcGetError; +alcGetIntegerv; +alcGetProcAddress; +alcGetString; +alcIsExtensionPresent; +alcMakeContextCurrent; +alcOpenDevice; +alcProcessContext; +alcSuspendContext; +alDeleteBuffers; +alDeleteSources; +alDisable; +alDistanceModel; +alDopplerFactor; +alEnable; +alGenBuffers; +alGenSources; +alGetBoolean; +alGetBooleanv; +alGetBuffer3f; +alGetBuffer3i; +alGetBufferf; +alGetBufferfv; +alGetBufferi; +alGetBufferiv; +alGetDouble; +alGetDoublev; +alGetEnumValue; +alGetError; +alGetFloat; +alGetFloatv; +alGetInteger; +alGetIntegerv; +alGetListener3f; +alGetListener3i; +alGetListenerf; +alGetListenerfv; +alGetListeneri; +alGetListeneriv; +alGetProcAddress; +alGetSource3f; +alGetSource3i; +alGetSourcef; +alGetSourcefv; +alGetSourcei; +alGetSourceiv; +alGetString; +alIsBuffer; +alIsEnabled; +alIsExtensionPresent; +alIsSource; +alListener3f; +alListener3i; +alListenerf; +alListenerfv; +alListeneri; +alListeneriv; +alSource3f; +alSource3i; +alSourcef; +alSourcefv; +alSourcei; +alSourceiv; +alSourcePause; +alSourcePausev; +alSourcePlay; +alSourcePlayv; +alSourceQueueBuffers; +alSourceRewind; +alSourceRewindv; +alSourceStop; +alSourceStopv; +alSourceUnqueueBuffers; +alSpeedOfSound; + +# Deprecated in AL 1.1, kept for compatibility. +alDopplerVelocity; + +# EFX, effectively standard at this point. +alAuxiliaryEffectSlotf; +alAuxiliaryEffectSlotfv; +alAuxiliaryEffectSloti; +alAuxiliaryEffectSlotiv; +alDeleteAuxiliaryEffectSlots; +alDeleteEffects; +alDeleteFilters; +alEffectf; +alEffectfv; +alEffecti; +alEffectiv; +alFilterf; +alFilterfv; +alFilteri; +alFilteriv; +alGenAuxiliaryEffectSlots; +alGenEffects; +alGenFilters; +alGetAuxiliaryEffectSlotf; +alGetAuxiliaryEffectSlotfv; +alGetAuxiliaryEffectSloti; +alGetAuxiliaryEffectSlotiv; +alGetEffectf; +alGetEffectfv; +alGetEffecti; +alGetEffectiv; +alGetFilterf; +alGetFilterfv; +alGetFilteri; +alGetFilteriv; +alIsAuxiliaryEffectSlot; +alIsEffect; +alIsFilter; + +# Non-standard +alsoft_get_version; + +# These extension functions shouldn't be exported here, but they were exported +# by mistake in previous releases, so need to stay for compatibility with apps +# that may have directly linked to them. Remove them if it can be done without +# breaking anything. +alAuxiliaryEffectSlotPlaySOFT; +alAuxiliaryEffectSlotPlayvSOFT; +alAuxiliaryEffectSlotStopSOFT; +alAuxiliaryEffectSlotStopvSOFT; +alBufferCallbackSOFT; +alBufferSamplesSOFT; +alBufferStorageSOFT; +alBufferSubDataSOFT; +alBufferSubSamplesSOFT; +alcDevicePauseSOFT; +alcDeviceResumeSOFT; +alcGetInteger64vSOFT; +alcGetStringiSOFT; +alcGetThreadContext; +alcIsRenderFormatSupportedSOFT; +alcLoopbackOpenDeviceSOFT; +alcRenderSamplesSOFT; +alcResetDeviceSOFT; +alcSetThreadContext; +alDeferUpdatesSOFT; +alEventCallbackSOFT; +alEventControlSOFT; +alFlushMappedBufferSOFT; +alGetBuffer3PtrSOFT; +alGetBufferPtrSOFT; +alGetBufferPtrvSOFT; +alGetBufferSamplesSOFT; +alGetInteger64SOFT; +alGetInteger64vSOFT; +alGetPointerSOFT; +alGetPointervSOFT; +alGetSource3dSOFT; +alGetSource3i64SOFT; +alGetSourcedSOFT; +alGetSourcedvSOFT; +alGetSourcei64SOFT; +alGetSourcei64vSOFT; +alGetStringiSOFT; +alIsBufferFormatSupportedSOFT; +alMapBufferSOFT; +alProcessUpdatesSOFT; +alSource3dSOFT; +alSource3i64SOFT; +alSourcedSOFT; +alSourcedvSOFT; +alSourcei64SOFT; +alSourcei64vSOFT; +alSourceQueueBufferLayersSOFT; +alUnmapBufferSOFT; + +local: *; +}; -- cgit v1.2.3