[Mesa-dev] [PATCH 12/20] drivers/dri: link megadriver with -no-undefined

Emil Velikov emil.l.velikov at gmail.com
Fri Mar 7 08:02:13 PST 2014


On 06/03/14 14:19, Jon TURNEY wrote:
> On 04/03/2014 21:12, Emil Velikov wrote:
>> From: Jon TURNEY <jon.turney at dronecode.org.uk>
>>
>> v2: (Emil)
>>  - Do not link agaist libglapi.
>>
>> Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
>> Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
>> ---
>>  src/mesa/drivers/dri/Makefile.am | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/src/mesa/drivers/dri/Makefile.am b/src/mesa/drivers/dri/Makefile.am
>> index 18f880a..eea1939 100644
>> --- a/src/mesa/drivers/dri/Makefile.am
>> +++ b/src/mesa/drivers/dri/Makefile.am
>> @@ -51,7 +51,7 @@ driinclude_HEADERS = $(top_srcdir)/include/GL/internal/dri_interface.h
>>  nodist_EXTRA_mesa_dri_drivers_la_SOURCES = dummy.cpp
>>  mesa_dri_drivers_la_SOURCES =
>>  mesa_dri_drivers_la_LDFLAGS = \
>> -        -module -avoid-version -shared \
>> +        -module -avoid-version -shared -no-undefined \
>>          -Wl,-Bsymbolic \
>>          $()
>>  mesa_dri_drivers_la_LIBADD = \
>>
> 
> I don't think this patch should be committed.
> 
> If you are not linking with libglapi, so mesa_dri_drivers has undefined
> symbols, you shouldn't use -no-undefined.
> 
> (-no-undefined does nothing on linux at the moment, for what appears to be no
> particularly good reason, but that could possibly change in the future)
> 
Indeed -no-undefined under linux is a no-op, while current mesa uses it
heavily (25+ cases) and assumes that it does it's job. One could use ld
(-Wl,--no-undefined) under linux to correctly handle unresolved symbols,
although it seems like one needs the former in order to get shared
libraries with libtool under cygwin.

In other words s/\-no-undefined/\-Wl,--no-undefined/ will fix some thing
under linux but will break others on cygwin, fun stuff.

Thanks for all the information and help Jon.

-Emil



More information about the mesa-dev mailing list