Index: wrappers/dlsym.cpp
--- wrappers/dlsym.cpp.orig
+++ wrappers/dlsym.cpp
@@ -110,23 +110,23 @@ classifyLibrary(const char *pathname)
     assert(filename);
 
     if (strcmp(filename, "libGL.so") == 0 ||
-        strcmp(filename, "libGL.so.1") == 0) {
+        strncmp(filename, "libGL.so.", sizeof("libGL.so.")) == 0) {
         return LIB_GL;
     }
 
 #ifdef EGLTRACE
     if (strcmp(filename, "libEGL.so") == 0 ||
-        strcmp(filename, "libEGL.so.1") == 0) {
+        strncmp(filename, "libEGL.so.", sizeof("libEGL.so.")) == 0) {
         return LIB_EGL;
     }
 
     if  (strcmp(filename, "libGLESv1_CM.so") == 0 ||
-         strcmp(filename, "libGLESv1_CM.so.1") == 0) {
+         strncmp(filename, "libGLESv1_CM.so.", sizeof("libGLESv1_CM.so.")) == 0) {
         return LIB_GLES1;
     }
 
     if (strcmp(filename, "libGLESv2.so") == 0 ||
-        strcmp(filename, "libGLESv2.so.2") == 0) {
+        strncmp(filename, "libGLESv2.so.", sizeof("libGLESv2.so.")) == 0) {
         return LIB_GLES2;
     }
 #endif
@@ -220,8 +220,8 @@ void * dlopen(const char *filename, int flag)
         // wrapper, so force loading it here.
         // (https://github.com/apitrace/apitrace/issues/291#issuecomment-59734022)
         if (strcmp(filename, "libEGL.so") != 0 &&
-            strcmp(filename, "libEGL.so.1") != 0) {
-            _dlopen("libEGL.so.1", RTLD_GLOBAL | RTLD_LAZY);
+            strncmp(filename, "libEGL.so.", sizeof("libEGL.so.")) != 0) {
+            _dlopen("libEGL.so", RTLD_GLOBAL | RTLD_LAZY);
         }
 #endif
     }
