Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libglvnd for openSUSE:Factory 
checked in at 2021-07-29 21:31:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libglvnd (Old)
 and      /work/SRC/openSUSE:Factory/.libglvnd.new.1899 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libglvnd"

Thu Jul 29 21:31:07 2021 rev:18 rq:908426 version:1.3.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/libglvnd/libglvnd.changes        2020-09-03 
01:14:32.124478965 +0200
+++ /work/SRC/openSUSE:Factory/.libglvnd.new.1899/libglvnd.changes      
2021-07-29 21:31:38.340795077 +0200
@@ -1,0 +2,5 @@
+Fri Jul 23 11:32:17 UTC 2021 - Michael Pujos <[email protected]>
+
+- update to 1.3.3, fixes boo#1188640
+
+-------------------------------------------------------------------

Old:
----
  libglvnd-1.3.2.tar.gz

New:
----
  libglvnd-1.3.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libglvnd.spec ++++++
--- /var/tmp/diff_new_pack.aytLKo/_old  2021-07-29 21:31:39.164794062 +0200
+++ /var/tmp/diff_new_pack.aytLKo/_new  2021-07-29 21:31:39.168794058 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package libglvnd
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
 # Please submit bugfixes or comments via http://bugs.opensuse.org/
 #
 Name:           libglvnd
-Version:        1.3.2
+Version:        1.3.3
 Release:        0
 Summary:        The GL Vendor-Neutral Dispatch library
 License:        MIT

++++++ libglvnd-1.3.2.tar.gz -> libglvnd-1.3.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libglvnd-1.3.2/configure.ac 
new/libglvnd-1.3.3/configure.ac
--- old/libglvnd-1.3.2/configure.ac     2020-06-26 00:17:25.000000000 +0200
+++ new/libglvnd-1.3.3/configure.ac     2021-04-30 21:09:52.000000000 +0200
@@ -2,7 +2,7 @@
 dnl Process this file with autoconf to produce a configure script.
 
 AC_PREREQ([2.63])
-AC_INIT([libglvnd], [1.3.2], [[email protected]])
+AC_INIT([libglvnd], [1.3.3], [[email protected]])
 AC_CONFIG_SRCDIR([config.h.in])
 AC_CONFIG_HEADERS([config.h])
 
@@ -106,6 +106,16 @@
 AM_CONDITIONAL([ENABLE_GLES1_HEADERS], [test "x$enable_headers" = "xyes" -a 
"x$enable_gles1" = "xyes"])
 AM_CONDITIONAL([ENABLE_GLES2_HEADERS], [test "x$enable_headers" = "xyes" -a 
"x$enable_gles2" = "xyes"])
 
+AC_ARG_ENABLE([entrypoint-patching],
+    [AS_HELP_STRING([--disable-entrypoint-patching],
+        [Disable OpenGL entrypoint patching optimization 
@<:@default=enabled@:>@])],
+    [enable_entrypoint_patching="$enableval"],
+    [enable_entrypoint_patching=yes]
+)
+AS_IF([test "x$enable_entrypoint_patching" = "xyes"],
+      [AC_DEFINE([GLDISPATCH_ENABLE_PATCHING], 1,
+      [Define to 1 to enable entrypoint patching in libGLdispatch.])])
+
 dnl
 dnl Arch/platform-specific settings. Copied from mesa
 dnl
@@ -201,10 +211,6 @@
     PKG_CHECK_MODULES([GLPROTO], [glproto])
 fi
 
-AS_IF([test "x$gldispatch_use_tls" = "xyes"],
-      [AC_DEFINE([GLDISPATCH_USE_TLS], 1,
-      [Define to 1 if libGLdispatch should use a TLS variable for the dispatch 
table.])])
-
 dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_TYPEOF
 
@@ -236,8 +242,8 @@
 
 AC_MSG_CHECKING([for entrypoint stub type])
 case "x$asm_arch" in
-xx86 | xx86_64)
-    # For x86 and x86-64, both the TLS and TSD stubs work.
+xx86 | xx86_64 | xppc64)
+    # For x86, x86-64, and ppc64, both the TLS and TSD stubs work.
     if test "x$HAVE_INIT_TLS" = "xyes" ; then
         gldispatch_entry_type=${asm_arch}_tls
         gldispatch_use_tls=yes
@@ -256,16 +262,6 @@
     gldispatch_entry_type=aarch64_tsd
     gldispatch_use_tls=no
     ;;
-xppc64)
-    # For ppc64, allow both the TLS and TSD stubs for now.
-    if test "x$HAVE_INIT_TLS" = "xyes" ; then
-        gldispatch_entry_type=ppc64_tls
-        gldispatch_use_tls=yes
-    else
-        gldispatch_entry_type=ppc64_tsd
-        gldispatch_use_tls=no
-    fi
-    ;;
 *)
     # The C stubs will work with either TLS or TSD.
     gldispatch_entry_type=pure_c
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libglvnd-1.3.2/meson.build 
new/libglvnd-1.3.3/meson.build
--- old/libglvnd-1.3.2/meson.build      2020-06-26 00:17:25.000000000 +0200
+++ new/libglvnd-1.3.3/meson.build      2021-04-30 21:09:52.000000000 +0200
@@ -28,7 +28,7 @@
 project(
   'glvnd',
   'c',
-  version : '1.3.2',
+  version : '1.3.3',
   meson_version : '>= 0.48',
   default_options : ['c_std=gnu99']
 )
@@ -132,17 +132,18 @@
 
 gl_dispatch_type = 'pure_c'
 if use_asm
+  thread_type = have_tls ? 'tls' : 'tsd'
   if host_machine.cpu_family().startswith('x86')
     gl_dispatch_type = '@0@_@1@'.format(
       host_machine.cpu_family(),
-      have_tls ? 'tls' : 'tsd',
+      thread_type,
     )
   elif host_machine.cpu_family() == 'arm'
     gl_dispatch_type = 'armv7_tsd'
   elif host_machine.cpu_family() == 'aarch64'
     gl_dispatch_type = 'aarch64_tsd'
   elif host_machine.cpu_family() == 'ppc64'
-    gl_dispatch_type = 'ppc64_@0@'.format(have_tls ? 'tls' : 'tsd')
+    gl_dispatch_type = 'ppc64_@0@'.format(thread_type)
   endif
 endif
 message('Using dispatch stub type: @0@'.format(gl_dispatch_type))
@@ -190,6 +191,10 @@
   add_project_arguments('-DGLDISPATCH_PAGE_SIZE=' + _p, language : ['c'])
 endif
 
+if not get_option('entrypoint-patching').disabled()
+  add_project_arguments('-DGLDISPATCH_ENABLE_PATCHING', language : ['c'])
+endif
+
 # Set EGL_NO_X11 unconditionally, Libglvnd doesn't make any assumptions about
 # native display or drawable types, so we don't need X11-specific typedefs for
 # them
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libglvnd-1.3.2/meson_options.txt 
new/libglvnd-1.3.3/meson_options.txt
--- old/libglvnd-1.3.2/meson_options.txt        2020-06-26 00:17:25.000000000 
+0200
+++ new/libglvnd-1.3.3/meson_options.txt        2021-04-30 21:09:52.000000000 
+0200
@@ -75,3 +75,8 @@
   value : true,
   description : 'Install headers for enabled APIs.'
 )
+option(
+  'entrypoint-patching',
+  type : 'feature',
+  description : 'Allow vendor libraries to patch OpenGL entrypoint functions.'
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libglvnd-1.3.2/src/EGL/libeglmapping.c 
new/libglvnd-1.3.3/src/EGL/libeglmapping.c
--- old/libglvnd-1.3.2/src/EGL/libeglmapping.c  2020-06-26 00:17:25.000000000 
+0200
+++ new/libglvnd-1.3.3/src/EGL/libeglmapping.c  2021-04-30 21:09:52.000000000 
+0200
@@ -276,7 +276,9 @@
     }
 
     if (!vendor->staticDispatch.queryDevicesEXT(0, NULL, &count)) {
-        return EGL_FALSE;
+        // Even if this vendor fails, we can still return the devices from any
+        // other vendors
+        return EGL_TRUE;
     }
     if (count <= 0) {
         return EGL_TRUE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libglvnd-1.3.2/src/GLX/glvnd_genentry.c 
new/libglvnd-1.3.3/src/GLX/glvnd_genentry.c
--- old/libglvnd-1.3.2/src/GLX/glvnd_genentry.c 2020-06-26 00:17:25.000000000 
+0200
+++ new/libglvnd-1.3.3/src/GLX/glvnd_genentry.c 2021-04-30 21:09:52.000000000 
+0200
@@ -126,6 +126,10 @@
         ".balign " U_STRINGIFY(STUB_SIZE) "\n" \
         "glx_entrypoint_start:\n"
 
+#if defined(USE_ARMV7_ASM) && defined(__thumb__)
+        ".arm\n"
+#endif
+
 #define GLX_STUBS_ASM
 #include "g_glx_dispatch_stub_list.h"
 
@@ -133,6 +137,10 @@
         ".hidden glx_entrypoint_end\n"
         ".balign " U_STRINGIFY(STUB_SIZE) "\n" \
         "glx_entrypoint_end:\n"
+
+#if defined(USE_ARMV7_ASM) && defined(__thumb__)
+        ".thumb\n"
+#endif
 );
 
 static void *DefaultDispatchFunc(void)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libglvnd-1.3.2/src/GLX/libglxmapping.c 
new/libglvnd-1.3.3/src/GLX/libglxmapping.c
--- old/libglvnd-1.3.2/src/GLX/libglxmapping.c  2020-06-26 00:17:25.000000000 
+0200
+++ new/libglvnd-1.3.3/src/GLX/libglxmapping.c  2021-04-30 21:09:52.000000000 
+0200
@@ -95,6 +95,7 @@
 
 typedef struct __GLXdisplayInfoHashRec {
     __GLXdisplayInfo info;
+    Bool inTeardown;
     UT_hash_handle hh;
 } __GLXdisplayInfoHash;
 
@@ -697,15 +698,27 @@
 
     LKDHASH_WRLOCK(__glXDisplayInfoHash);
 
+    // Set the inTeardown flag for this display, but don't remove it from the
+    // hashtable yet. We shouldn't try to look up this display after this, but
+    // just in case something does, we don't want to try to set up a new
+    // __GLXdisplayInfoHash struct for it.
     HASH_FIND_PTR(_LH(__glXDisplayInfoHash), &dpy, pEntry);
     if (pEntry != NULL) {
-        __glXDisplayClosed(&pEntry->info);
-        HASH_DEL(_LH(__glXDisplayInfoHash), pEntry);
+        assert(!pEntry->inTeardown);
+        pEntry->inTeardown = True;
     }
     LKDHASH_UNLOCK(__glXDisplayInfoHash);
 
-    CleanupDisplayInfoEntry(NULL, pEntry);
-    free(pEntry);
+    if (pEntry != NULL) {
+        __glXDisplayClosed(&pEntry->info);
+
+        // Now, we can remove the display from the hashtable and free it.
+        LKDHASH_WRLOCK(__glXDisplayInfoHash);
+        HASH_DEL(_LH(__glXDisplayInfoHash), pEntry);
+        LKDHASH_UNLOCK(__glXDisplayInfoHash);
+        CleanupDisplayInfoEntry(NULL, pEntry);
+        free(pEntry);
+    }
 
     return 0;
 }
@@ -724,6 +737,12 @@
     LKDHASH_UNLOCK(__glXDisplayInfoHash);
 
     if (pEntry != NULL) {
+        if (pEntry->inTeardown) {
+            // This shouldn't happen: If we're in the process of tearing down a
+            // display, then we shouldn't be trying to look up the display
+            // again.
+            return NULL;
+        }
         return &pEntry->info;
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libglvnd-1.3.2/src/GLdispatch/vnd-glapi/entry_common.c 
new/libglvnd-1.3.3/src/GLdispatch/vnd-glapi/entry_common.c
--- old/libglvnd-1.3.2/src/GLdispatch/vnd-glapi/entry_common.c  2020-06-26 
00:17:25.000000000 +0200
+++ new/libglvnd-1.3.3/src/GLdispatch/vnd-glapi/entry_common.c  2021-04-30 
21:09:52.000000000 +0200
@@ -41,6 +41,7 @@
 
 static int entry_patch_mprotect(int prot)
 {
+#if GLDISPATCH_ENABLE_PATCHING
     size_t size;
     size_t pageSize = (size_t) sysconf(_SC_PAGESIZE);
 
@@ -57,6 +58,9 @@
         return 0;
     }
     return 1;
+#else // GLDISPATCH_ENABLE_PATCHING
+    return 0;
+#endif
 }
 
 int entry_patch_start(void)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libglvnd-1.3.2/tests/testgldispatch.c 
new/libglvnd-1.3.3/tests/testgldispatch.c
--- old/libglvnd-1.3.2/tests/testgldispatch.c   2020-06-26 00:17:25.000000000 
+0200
+++ new/libglvnd-1.3.3/tests/testgldispatch.c   2021-04-30 21:09:52.000000000 
+0200
@@ -149,6 +149,13 @@
     }
 #endif
 
+#if !defined(GLDISPATCH_ENABLE_PATCHING)
+    if (enablePatching)
+    {
+        return 77;
+    }
+#endif
+
     __glDispatchInit();
     InitDummyVendors();
 

Reply via email to