Created attachment 16782 [details] [review]
it would be nice if cairo didn't export private symbols like _cairo_atomic_mutex, _cairo_font_face_mutex, etc.
Attached patch makes cairo export whatever is in cairo.def (for some reason I don't have that file) on win32 as it was before but uses a symbol export regexp on other systems that makes it export only "^cairo.*" symbols.
Please consider applying this for 1.6.
For x86 these symbols are:
$ objdump -T /usr/lib/libcairo.so.2 | grep _cairo
00060bec g DO .bss 00000018 Base _cairo_scaled_font_error_mutex
00060bd4 g DO .bss 00000018 Base _cairo_scaled_font_map_mutex
00060c1c g DO .bss 00000018 Base _cairo_xlib_display_mutex
00060c04 g DO .bss 00000018 Base _cairo_ft_unscaled_font_map_mutex
00060b8c g DO .bss 00000018 Base _cairo_pattern_solid_pattern_cache_lock
00060ba4 g DO .bss 00000018 Base _cairo_pattern_solid_surface_cache_lock
00060bbc g DO .bss 00000018 Base _cairo_font_face_mutex
Other architectures export potentially more.
Created attachment 16784 [details] [review]
Better patch that only marks those accidentially exported cairo_.*_mutex symbols as private.
The other patch might still make sense.
Too slow ;-) Behdad had already fixed it with commit 626edfc333b77604b6955c12ae111d14c174034c.
Author: Behdad Esfahbod <firstname.lastname@example.org>
Date: Wed May 28 10:59:35 2008 -0400
[src/check-def.sh] Also check for public variables (#16129)