mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
pthread: force linking pthread implementation from IDF
Force linking pthread implementation from IDF, instead of the weak functions provided by gthread library. Previously this would either work or not depending on the linking order. Thanks @bpietsch for suggesting the fix. Closes https://github.com/espressif/esp-idf/issues/3709
This commit is contained in:
parent
1b6010bedf
commit
661769527c
@ -3,6 +3,16 @@ idf_component_register(SRCS "pthread.c"
|
||||
"pthread_local_storage.c"
|
||||
INCLUDE_DIRS include)
|
||||
|
||||
if(GCC_NOT_5_2_0)
|
||||
set(extra_link_flags "-u pthread_include_pthread_impl")
|
||||
list(APPEND extra_link_flags "-u pthread_include_pthread_cond_impl")
|
||||
list(APPEND extra_link_flags "-u pthread_include_pthread_local_storage_impl")
|
||||
endif()
|
||||
|
||||
if(CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP)
|
||||
target_link_libraries(${COMPONENT_LIB} "-Wl,--wrap=vPortCleanUpTCB")
|
||||
endif()
|
||||
|
||||
if(extra_link_flags)
|
||||
target_link_libraries(${COMPONENT_LIB} INTERFACE "${extra_link_flags}")
|
||||
endif()
|
||||
|
@ -11,3 +11,11 @@ COMPONENT_ADD_LDFLAGS := -lpthread
|
||||
ifdef CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP
|
||||
COMPONENT_ADD_LDFLAGS += -Wl,--wrap=vPortCleanUpTCB
|
||||
endif
|
||||
|
||||
ifeq ($(GCC_NOT_5_2_0), 1)
|
||||
# Forces the linker to include pthread implementation from this component,
|
||||
# instead of the weak implementations provided by libgcc.
|
||||
COMPONENT_ADD_LDFLAGS += -u pthread_include_pthread_impl
|
||||
COMPONENT_ADD_LDFLAGS += -u pthread_include_pthread_cond_impl
|
||||
COMPONENT_ADD_LDFLAGS += -u pthread_include_pthread_local_storage_impl
|
||||
endif # GCC_NOT_5_2_0
|
||||
|
@ -820,3 +820,8 @@ int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate)
|
||||
}
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
/* Hook function to force linking this file */
|
||||
void pthread_include_pthread_impl()
|
||||
{
|
||||
}
|
||||
|
@ -198,3 +198,8 @@ int pthread_cond_destroy(pthread_cond_t *cv)
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Hook function to force linking this file */
|
||||
void pthread_include_pthread_cond_var_impl()
|
||||
{
|
||||
}
|
||||
|
@ -255,3 +255,8 @@ int pthread_setspecific(pthread_key_t key, const void *value)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Hook function to force linking this file */
|
||||
void pthread_include_pthread_local_storage_impl()
|
||||
{
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user