On 18/12/17 16:42, Emil Velikov wrote:
On 18 December 2017 at 16:33, Eric Engestrom <eric.engest...@imgtec.com> wrote:
From: Brendan King <brendan.k...@imgtec.com>
DRI modules store the address of the dispatch table in a TLS variable,
_glapi_tls_Dispatch.
Changes to the way libEGL is built in d884d8d0077c16d459b1 resulted in
it being statically linked against libglapi, and thus containing its own
copy of _glapi_tls_Dispatch. The result was that some applications would
fail to work (e.g. deqp-egl, which dynamically loads libEGL), due to the
DRI module storing the dispatch table address in one copy of
_glapi_tls_Dispatch, and libEGL obtaining the address from another copy
of the variable.
This applies to autotools builds with --enable-glx-tls (on by default),
and Meson builds (unconditional).
Fixes: d884d8d0077c16d459b1 "egl/dri: link directly to libglapi.so"
Signed-off-by: Brendan King <brendan.k...@imgtec.com>
Signed-off-by: Eric Engestrom <eric.engest...@imgtec.com>
---
This issue was noticed in the PowerVR driver. It's unclear whether other
DRI drivers are affected as well.
Are you sure any of the extra patches isn't causing the issue?
Just checked the binary and the shared link is there.
We use slibtool, as libtool no longer works for us (we cross build Mesa,
and libtool fails when trying to re-link libraries). It may be that this
patch fixes an slibtool specific issue. Although slibtool produces .la
files, it doesn't use them itself.
We carry another patch that fixes an slibtool issue. We found it wasn't
possible to build Mesa with Wayland support using slibtool; the link of
libEGL fails with multiple symbol definition errors.
---
src/egl/Makefile.am | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/egl/Makefile.am b/src/egl/Makefile.am
index 66ba455..58db2c3 100644
--- a/src/egl/Makefile.am
+++ b/src/egl/Makefile.am
@@ -46,7 +46,6 @@ libEGL_common_la_SOURCES = \
$(LIBEGL_C_FILES)
libEGL_common_la_LIBADD = \
- $(top_builddir)/src/mapi/shared-glapi/libglapi.la \
$(top_builddir)/src/util/libmesautil.la \
$(EGL_LIB_DEPS)
@@ -171,7 +170,9 @@ libEGL_mesa_la_SOURCES = \
main/egldispatchstubs.c \
g_egldispatchstubs.c \
g_egldispatchstubs.h
-libEGL_mesa_la_LIBADD = libEGL_common.la
+libEGL_mesa_la_LIBADD = \
+ libEGL_common.la \
+ $(top_builddir)/src/mapi/shared-glapi/libglapi.la
libEGL_mesa_la_LDFLAGS = \
-no-undefined \
-version-number 0 \
@@ -183,7 +184,9 @@ else # USE_LIBGLVND
lib_LTLIBRARIES = libEGL.la
libEGL_la_SOURCES =
-libEGL_la_LIBADD = libEGL_common.la
+libEGL_la_LIBADD = \
+ libEGL_common.la \
+ $(top_builddir)/src/mapi/shared-glapi/libglapi.la
The exact same object is moved from libEGL_common.la to the parent
(final) shared library.
There is no (obvious) reorder, thus the patch in itself should be a noop.
-Emil
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev