components/gnome/glib2/patches/02-gmodule-always-lazy.patch
changeset 5891 196a7310cc4d
equal deleted inserted replaced
5890:e3686c085735 5891:196a7310cc4d
       
     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