summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2013-09-20 12:37:04 -0700
committerEric Anholt <[email protected]>2013-09-23 12:45:22 -0700
commit11e494a572ce81a57c05fbe4214dd36b1c8ac4cf (patch)
tree25f35087c0d870944982adc57401d67663a7948c
parent10ef949424809d51c627008bb2feab5a067f8e08 (diff)
mesa: Use -Bsymbolic in the linker to locally resolve Mesa-internal symbols.
Normally, LD_PRELOAD will take precedence over your own symbols, which you want for things like malloc() in libc. But we don't have any local symbols we would want overridden (like hash_table_insert(), for example!), so tell the linker to resolve them internally. This also avoids calls through the PLT. Saves almost 100k on libdricore's size, and gets us a bunch of the performance back that we had with non-dricore. Reviewed-by: Ian Romanick <[email protected]>
-rw-r--r--configure.ac3
-rw-r--r--src/mesa/drivers/dri/i915/Makefile.am2
-rw-r--r--src/mesa/drivers/dri/i965/Makefile.am2
-rw-r--r--src/mesa/drivers/dri/nouveau/Makefile.am2
-rw-r--r--src/mesa/drivers/dri/r200/Makefile.am2
-rw-r--r--src/mesa/drivers/dri/radeon/Makefile.am2
-rw-r--r--src/mesa/drivers/dri/swrast/Makefile.am3
-rw-r--r--src/mesa/libdricore/Makefile.am6
8 files changed, 15 insertions, 7 deletions
diff --git a/configure.ac b/configure.ac
index d280e389a62..4c99603ccee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1032,10 +1032,13 @@ if test "x$enable_dri" = xyes; then
# put all the necessary libs together
DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $PTHREAD_LIBS $DLOPEN_LIBS"
GALLIUM_DRI_LIB_DEPS="$GALLIUM_DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
+
+ DRI_DRIVER_LDFLAGS="-module -avoid-version -shared -Wl,-Bsymbolic"
fi
AM_CONDITIONAL(NEED_LIBDRICORE, test -n "$DRI_DIRS")
AC_SUBST([EXPAT_INCLUDES])
AC_SUBST([DRI_LIB_DEPS])
+AC_SUBST([DRI_DRIVER_LDFLAGS])
AC_SUBST([GALLIUM_DRI_LIB_DEPS])
case $DRI_DIRS in
diff --git a/src/mesa/drivers/dri/i915/Makefile.am b/src/mesa/drivers/dri/i915/Makefile.am
index 978917c6c3e..f66967d751f 100644
--- a/src/mesa/drivers/dri/i915/Makefile.am
+++ b/src/mesa/drivers/dri/i915/Makefile.am
@@ -52,7 +52,7 @@ dri_LTLIBRARIES = i915_dri.la
endif
i915_dri_la_SOURCES = $(i915_FILES)
-i915_dri_la_LDFLAGS = -module -avoid-version -shared
+i915_dri_la_LDFLAGS = $(DRI_DRIVER_LDFLAGS)
i915_dri_la_LIBADD = \
../common/libdricommon.la \
$(DRI_LIB_DEPS) \
diff --git a/src/mesa/drivers/dri/i965/Makefile.am b/src/mesa/drivers/dri/i965/Makefile.am
index 27c67d10ec0..541e0d6e067 100644
--- a/src/mesa/drivers/dri/i965/Makefile.am
+++ b/src/mesa/drivers/dri/i965/Makefile.am
@@ -72,7 +72,7 @@ TEST_LIBS = \
i965_dri_la_SOURCES =
nodist_EXTRA_i965_dri_la_SOURCES = dummy2.cpp
i965_dri_la_LIBADD = $(COMMON_LIBS)
-i965_dri_la_LDFLAGS = -module -avoid-version -shared
+i965_dri_la_LDFLAGS = $(DRI_DRIVER_LDFLAGS)
TESTS = \
test_eu_compact \
diff --git a/src/mesa/drivers/dri/nouveau/Makefile.am b/src/mesa/drivers/dri/nouveau/Makefile.am
index 2b47f75340f..7172e62558c 100644
--- a/src/mesa/drivers/dri/nouveau/Makefile.am
+++ b/src/mesa/drivers/dri/nouveau/Makefile.am
@@ -42,7 +42,7 @@ endif
nouveau_vieux_dri_la_SOURCES = \
$(NOUVEAU_C_FILES)
-nouveau_vieux_dri_la_LDFLAGS = -module -avoid-version -shared
+nouveau_vieux_dri_la_LDFLAGS = $(DRI_DRIVER_LDFLAGS)
nouveau_vieux_dri_la_LIBADD = \
../common/libdricommon.la \
$(DRI_LIB_DEPS) \
diff --git a/src/mesa/drivers/dri/r200/Makefile.am b/src/mesa/drivers/dri/r200/Makefile.am
index 4357922341b..fc0482a6ee7 100644
--- a/src/mesa/drivers/dri/r200/Makefile.am
+++ b/src/mesa/drivers/dri/r200/Makefile.am
@@ -45,7 +45,7 @@ endif
r200_dri_la_SOURCES = \
$(R200_C_FILES)
-r200_dri_la_LDFLAGS = -module -avoid-version -shared
+r200_dri_la_LDFLAGS = $(DRI_DRIVER_LDFLAGS)
r200_dri_la_LIBADD = \
../common/libdricommon.la \
$(DRI_LIB_DEPS) \
diff --git a/src/mesa/drivers/dri/radeon/Makefile.am b/src/mesa/drivers/dri/radeon/Makefile.am
index 43de05972b0..d13b803aecc 100644
--- a/src/mesa/drivers/dri/radeon/Makefile.am
+++ b/src/mesa/drivers/dri/radeon/Makefile.am
@@ -45,7 +45,7 @@ endif
radeon_dri_la_SOURCES = \
$(RADEON_C_FILES)
-radeon_dri_la_LDFLAGS = -module -avoid-version -shared
+radeon_dri_la_LDFLAGS = $(DRI_DRIVER_LDFLAGS)
radeon_dri_la_LIBADD = \
../common/libdricommon.la \
$(DRI_LIB_DEPS) \
diff --git a/src/mesa/drivers/dri/swrast/Makefile.am b/src/mesa/drivers/dri/swrast/Makefile.am
index d3da19651cb..fb9b8a05072 100644
--- a/src/mesa/drivers/dri/swrast/Makefile.am
+++ b/src/mesa/drivers/dri/swrast/Makefile.am
@@ -42,7 +42,8 @@ endif
swrast_dri_la_SOURCES = \
$(SWRAST_C_FILES)
-swrast_dri_la_LDFLAGS = -module -avoid-version -shared
+swrast_dri_la_LDFLAGS = $(DRI_DRIVER_LDFLAGS)
+
swrast_dri_la_LIBADD = \
$(DRI_LIB_DEPS)
diff --git a/src/mesa/libdricore/Makefile.am b/src/mesa/libdricore/Makefile.am
index 106c7db9b6c..686e478734f 100644
--- a/src/mesa/libdricore/Makefile.am
+++ b/src/mesa/libdricore/Makefile.am
@@ -37,7 +37,11 @@ libdricore@VERSION@_la_SOURCES = \
$(LIBGLCPP_FILES) \
$(LIBGLSL_GENERATED_CXX_FILES) \
$(LIBGLSL_FILES)
-libdricore@VERSION@_la_LDFLAGS = -version-number 1:0
+libdricore@VERSION@_la_LDFLAGS = \
+ -version-number 1:0 \
+ -Wl,-Bsymbolic \
+ $()
+
libdricore@VERSION@_la_LIBADD = \
../program/libdricore_program.la \
$()