1*4882a593SmuzhiyunFrom acd25c4b8d5b7e420a7a89bdfd6551c70de828b3 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Trevor Woerner <twoerner@gmail.com> 3*4882a593SmuzhiyunDate: Thu, 23 Sep 2021 19:36:43 -0400 4*4882a593SmuzhiyunSubject: [PATCH] use library sonames for linking 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunThe recommended "best practices" for applications is to link to library 7*4882a593Smuzhiyunsonames (e.g. libGL.so.1) instead of library names (e.g. libGL.so). This 8*4882a593Smuzhiyunensures that applications don't try to use libraries if an incompatible ABI 9*4882a593Smuzhiyunchange occurs. 10*4882a593Smuzhiyun 11*4882a593SmuzhiyunUpstream-Status: Submitted [https://github.com/KhronosGroup/VK-GL-CTS/pull/288] 12*4882a593SmuzhiyunSigned-off-by: Trevor Woerner <twoerner@gmail.com> 13*4882a593Smuzhiyun--- 14*4882a593Smuzhiyun framework/egl/egluGLContextFactory.cpp | 4 ++-- 15*4882a593Smuzhiyun framework/egl/wrapper/eglwLibrary.cpp | 2 +- 16*4882a593Smuzhiyun framework/platform/android/tcuAndroidPlatform.cpp | 2 +- 17*4882a593Smuzhiyun framework/platform/lnx/X11/tcuLnxX11EglDisplayFactory.cpp | 2 +- 18*4882a593Smuzhiyun .../platform/lnx/wayland/tcuLnxWaylandEglDisplayFactory.cpp | 2 +- 19*4882a593Smuzhiyun framework/platform/surfaceless/tcuSurfacelessPlatform.cpp | 6 +++--- 20*4882a593Smuzhiyun 6 files changed, 9 insertions(+), 9 deletions(-) 21*4882a593Smuzhiyun 22*4882a593Smuzhiyundiff --git a/framework/egl/egluGLContextFactory.cpp b/framework/egl/egluGLContextFactory.cpp 23*4882a593Smuzhiyunindex 8fbea2af1..8d42f19eb 100644 24*4882a593Smuzhiyun--- a/framework/egl/egluGLContextFactory.cpp 25*4882a593Smuzhiyun+++ b/framework/egl/egluGLContextFactory.cpp 26*4882a593Smuzhiyun@@ -63,7 +63,7 @@ using std::vector; 27*4882a593Smuzhiyun # if (DE_OS == DE_OS_WIN32) 28*4882a593Smuzhiyun # define DEQP_GLES2_LIBRARY_PATH "libGLESv2.dll" 29*4882a593Smuzhiyun # else 30*4882a593Smuzhiyun-# define DEQP_GLES2_LIBRARY_PATH "libGLESv2.so" 31*4882a593Smuzhiyun+# define DEQP_GLES2_LIBRARY_PATH "libGLESv2.so.2" 32*4882a593Smuzhiyun # endif 33*4882a593Smuzhiyun #endif 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun@@ -75,7 +75,7 @@ using std::vector; 36*4882a593Smuzhiyun # if (DE_OS == DE_OS_WIN32) 37*4882a593Smuzhiyun # define DEQP_OPENGL_LIBRARY_PATH "opengl32.dll" 38*4882a593Smuzhiyun # else 39*4882a593Smuzhiyun-# define DEQP_OPENGL_LIBRARY_PATH "libGL.so" 40*4882a593Smuzhiyun+# define DEQP_OPENGL_LIBRARY_PATH "libGL.so.1" 41*4882a593Smuzhiyun # endif 42*4882a593Smuzhiyun #endif 43*4882a593Smuzhiyun 44*4882a593Smuzhiyundiff --git a/framework/egl/wrapper/eglwLibrary.cpp b/framework/egl/wrapper/eglwLibrary.cpp 45*4882a593Smuzhiyunindex d7e07fe18..ebdf68b14 100644 46*4882a593Smuzhiyun--- a/framework/egl/wrapper/eglwLibrary.cpp 47*4882a593Smuzhiyun+++ b/framework/egl/wrapper/eglwLibrary.cpp 48*4882a593Smuzhiyun@@ -148,7 +148,7 @@ DefaultLibrary::~DefaultLibrary (void) 49*4882a593Smuzhiyun const char* DefaultLibrary::getLibraryFileName (void) 50*4882a593Smuzhiyun { 51*4882a593Smuzhiyun #if (DE_OS == DE_OS_ANDROID) || (DE_OS == DE_OS_UNIX) 52*4882a593Smuzhiyun- return "libEGL.so"; 53*4882a593Smuzhiyun+ return "libEGL.so.1"; 54*4882a593Smuzhiyun #elif (DE_OS == DE_OS_WIN32) 55*4882a593Smuzhiyun return "libEGL.dll"; 56*4882a593Smuzhiyun #else 57*4882a593Smuzhiyundiff --git a/framework/platform/android/tcuAndroidPlatform.cpp b/framework/platform/android/tcuAndroidPlatform.cpp 58*4882a593Smuzhiyunindex b9a4c716f..05cec0b49 100644 59*4882a593Smuzhiyun--- a/framework/platform/android/tcuAndroidPlatform.cpp 60*4882a593Smuzhiyun+++ b/framework/platform/android/tcuAndroidPlatform.cpp 61*4882a593Smuzhiyun@@ -57,7 +57,7 @@ static const eglu::NativeWindow::Capability WINDOW_CAPABILITIES = (eglu::Nativ 62*4882a593Smuzhiyun class NativeDisplay : public eglu::NativeDisplay 63*4882a593Smuzhiyun { 64*4882a593Smuzhiyun public: 65*4882a593Smuzhiyun- NativeDisplay (void) : eglu::NativeDisplay(DISPLAY_CAPABILITIES), m_library("libEGL.so") {} 66*4882a593Smuzhiyun+ NativeDisplay (void) : eglu::NativeDisplay(DISPLAY_CAPABILITIES), m_library("libEGL.so.1") {} 67*4882a593Smuzhiyun virtual ~NativeDisplay (void) {} 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun virtual EGLNativeDisplayType getLegacyNative (void) { return EGL_DEFAULT_DISPLAY; } 70*4882a593Smuzhiyundiff --git a/framework/platform/lnx/X11/tcuLnxX11EglDisplayFactory.cpp b/framework/platform/lnx/X11/tcuLnxX11EglDisplayFactory.cpp 71*4882a593Smuzhiyunindex 009c05e18..237c5e16f 100644 72*4882a593Smuzhiyun--- a/framework/platform/lnx/X11/tcuLnxX11EglDisplayFactory.cpp 73*4882a593Smuzhiyun+++ b/framework/platform/lnx/X11/tcuLnxX11EglDisplayFactory.cpp 74*4882a593Smuzhiyun@@ -75,7 +75,7 @@ class Library : public eglw::DefaultLibrary 75*4882a593Smuzhiyun { 76*4882a593Smuzhiyun public: 77*4882a593Smuzhiyun Library (void) 78*4882a593Smuzhiyun- : eglw::DefaultLibrary("libEGL.so") 79*4882a593Smuzhiyun+ : eglw::DefaultLibrary("libEGL.so.1") 80*4882a593Smuzhiyun { 81*4882a593Smuzhiyun } 82*4882a593Smuzhiyun 83*4882a593Smuzhiyundiff --git a/framework/platform/lnx/wayland/tcuLnxWaylandEglDisplayFactory.cpp b/framework/platform/lnx/wayland/tcuLnxWaylandEglDisplayFactory.cpp 84*4882a593Smuzhiyunindex 97bc3a0ed..3a20d63d3 100644 85*4882a593Smuzhiyun--- a/framework/platform/lnx/wayland/tcuLnxWaylandEglDisplayFactory.cpp 86*4882a593Smuzhiyun+++ b/framework/platform/lnx/wayland/tcuLnxWaylandEglDisplayFactory.cpp 87*4882a593Smuzhiyun@@ -66,7 +66,7 @@ public: 88*4882a593Smuzhiyun EGL_PLATFORM_WAYLAND_KHR, 89*4882a593Smuzhiyun "EGL_KHR_platform_wayland") 90*4882a593Smuzhiyun , m_display (waylandDisplay) 91*4882a593Smuzhiyun- , m_library ("libEGL.so") {} 92*4882a593Smuzhiyun+ , m_library ("libEGL.so.1") {} 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun ~Display(void) {} 95*4882a593Smuzhiyun wayland::Display& getWaylandDisplay (void) { return *m_display; } 96*4882a593Smuzhiyundiff --git a/framework/platform/surfaceless/tcuSurfacelessPlatform.cpp b/framework/platform/surfaceless/tcuSurfacelessPlatform.cpp 97*4882a593Smuzhiyunindex 9783eaeab..a1d8ac667 100644 98*4882a593Smuzhiyun--- a/framework/platform/surfaceless/tcuSurfacelessPlatform.cpp 99*4882a593Smuzhiyun+++ b/framework/platform/surfaceless/tcuSurfacelessPlatform.cpp 100*4882a593Smuzhiyun@@ -69,7 +69,7 @@ using std::vector; 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun // Default library names 103*4882a593Smuzhiyun #if !defined(DEQP_GLES2_LIBRARY_PATH) 104*4882a593Smuzhiyun-# define DEQP_GLES2_LIBRARY_PATH "libGLESv2.so" 105*4882a593Smuzhiyun+# define DEQP_GLES2_LIBRARY_PATH "libGLESv2.so.2" 106*4882a593Smuzhiyun #endif 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun #if !defined(DEQP_GLES3_LIBRARY_PATH) 109*4882a593Smuzhiyun@@ -77,7 +77,7 @@ using std::vector; 110*4882a593Smuzhiyun #endif 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun #if !defined(DEQP_OPENGL_LIBRARY_PATH) 113*4882a593Smuzhiyun-# define DEQP_OPENGL_LIBRARY_PATH "libGL.so" 114*4882a593Smuzhiyun+# define DEQP_OPENGL_LIBRARY_PATH "libGL.so.1" 115*4882a593Smuzhiyun #endif 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun namespace tcu 118*4882a593Smuzhiyun@@ -238,7 +238,7 @@ glu::RenderContext* ContextFactory::createContext(const glu::RenderConfig& confi 119*4882a593Smuzhiyun } 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun EglRenderContext::EglRenderContext(const glu::RenderConfig& config, const tcu::CommandLine& cmdLine) 122*4882a593Smuzhiyun- : m_egl("libEGL.so") 123*4882a593Smuzhiyun+ : m_egl("libEGL.so.1") 124*4882a593Smuzhiyun , m_contextType(config.type) 125*4882a593Smuzhiyun , m_eglDisplay(EGL_NO_DISPLAY) 126*4882a593Smuzhiyun , m_eglContext(EGL_NO_CONTEXT) 127