diff --git a/src/lib/ecore/ecore.c b/src/lib/ecore/ecore.c index d7eead345d..6c326a7f3c 100644 --- a/src/lib/ecore/ecore.c +++ b/src/lib/ecore/ecore.c @@ -210,6 +210,9 @@ ecore_init(void) if (++_ecore_init_count != 1) return _ecore_init_count; + /* make sure libecore is linked to libefl - workaround gcc bug */ + __efl_internal_init(); + setlocale(LC_CTYPE, ""); /* if (strcmp(nl_langinfo(CODESET), "UTF-8")) diff --git a/src/lib/efl/Efl.h b/src/lib/efl/Efl.h index 2002ebc7e8..4cc909aa5c 100644 --- a/src/lib/efl/Efl.h +++ b/src/lib/efl/Efl.h @@ -119,6 +119,9 @@ typedef Efl_Gfx_Path_Command_Type Efl_Gfx_Path_Command; #endif +/* work-around bug in gcc --as-needed link optimization */ +EAPI void __efl_internal_init(void); + #if defined ( __cplusplus ) } #endif diff --git a/src/lib/efl/interfaces/efl_interfaces_main.c b/src/lib/efl/interfaces/efl_interfaces_main.c index 908e2287df..68ff6f315c 100644 --- a/src/lib/efl/interfaces/efl_interfaces_main.c +++ b/src/lib/efl/interfaces/efl_interfaces_main.c @@ -37,3 +37,9 @@ EAPI const Eo_Event_Description _EFL_GFX_PATH_CHANGED = #include "interfaces/efl_animator.eo.c" #include "interfaces/efl_orientation.eo.c" #include "interfaces/efl_flip.eo.c" + +EAPI void +__efl_internal_init(void) +{ + /* nothing to do, the symbol only is required for link to work */ +}