equal
deleted
inserted
replaced
|
1 Patch migrated from Desktop, where it was listed as: |
|
2 # owner:laca type:bug date:2005-10-13 |
|
3 |
|
4 After talking with Rod, it seems like this should apply to all platforms; |
|
5 not just Solaris, otherwise there could be a significant performance |
|
6 penalty at startup. Need to file upstream bug for that. |
|
7 |
|
8 --- glib-2.44.0/gmodule/gmodule-dl.c 2014-10-04 17:08:22.000000000 -0700 |
|
9 +++ glib-2.44.0/gmodule/gmodule-dl.c 2015-04-19 12:35:57.727036805 -0700 |
|
10 @@ -93,9 +93,17 @@ |
|
11 gboolean bind_local) |
|
12 { |
|
13 gpointer handle; |
|
14 + |
|
15 + #if defined(sun) && defined(__SVR4) |
|
16 + /* |
|
17 + * Always use RTLD_LAZY on Solaris; otherwise all relocations are performed |
|
18 + * immediately in all dynamic dependencies. |
|
19 + */ |
|
20 + bind_lazy = 1; |
|
21 + #endif |
|
22 |
|
23 handle = dlopen (file_name, |
|
24 - (bind_local ? 0 : RTLD_GLOBAL) | (bind_lazy ? RTLD_LAZY : RTLD_NOW)); |
|
25 + (bind_local ? 0 : RTLD_GLOBAL) | (bind_lazy ? RTLD_LAZY | RTLD_FIRST : RTLD_NOW)); |
|
26 if (!handle) |
|
27 g_module_set_error (fetch_dlerror (TRUE)); |
|
28 |