summaryrefslogtreecommitdiffhomepage
path: root/project/config/cfgdefs.sh
diff options
context:
space:
mode:
Diffstat (limited to 'project/config/cfgdefs.sh')
-rw-r--r--project/config/cfgdefs.sh31
1 files changed, 30 insertions, 1 deletions
diff --git a/project/config/cfgdefs.sh b/project/config/cfgdefs.sh
index 168e961..994ef54 100644
--- a/project/config/cfgdefs.sh
+++ b/project/config/cfgdefs.sh
@@ -101,6 +101,31 @@ cfgdefs_set_libc_options()
}
+cfgdefs_set_libc_cflags()
+{
+ libc_td_tid_addr=
+ mb_init_tls_src_file=$mb_source_dir/src/env/__init_tls.c
+
+ [ -z $libc_td_tid_addr ] \
+ && grep '__syscall(SYS_set_tid_address, &td->tid)' $mb_init_tls_src_file > /dev/null \
+ && libc_td_tid_addr='-D__LIBC_TD_TID_ADDR_TID'
+
+ [ -z $libc_td_tid_addr ] \
+ && grep '__syscall(SYS_set_tid_address, &td->join_futex)' $mb_init_tls_src_file > /dev/null \
+ && libc_td_tid_addr='-D__LIBC_TD_TID_ADDR_JOIN_FUTEX'
+
+ [ -z $libc_td_tid_addr ] \
+ && grep '__syscall(SYS_set_tid_address, &td->detach_state)' $mb_init_tls_src_file > /dev/null \
+ && libc_td_tid_addr='-D__LIBC_TD_TID_ADDR_DETACH_STATE'
+
+ [ -z $libc_td_tid_addr ] \
+ && grep '__syscall(SYS_set_tid_address, &__thread_list_lock)' $mb_init_tls_src_file > /dev/null \
+ && libc_td_tid_addr='-D__LIBC_TD_TID_ADDR_THREAD_LIST_LOCK'
+
+ return 0
+}
+
+
cfgdefs_output_custom_defs()
{
sed \
@@ -113,7 +138,8 @@ cfgdefs_output_custom_defs()
-e 's^@libc_excl_files@^'"$libc_excl_files"'^g' \
-e 's/@libc_source_tree@/'"$libc_source_tree"'/g' \
-e 's/@libc_syscall_arch@/'"$libc_syscall_arch"'/g' \
- -e 's!@alltypes_sed@!'"$alltypes_sed"'!g' \
+ -e 's/@libc_td_tid_addr@/'"$libc_td_tid_addr"'/g' \
+ -e 's!@alltypes_sed@!'"$alltypes_sed"'!g' \
"$mb_project_dir/project/config/cfgdefs.in" \
| sed -e 's/[ \t]*$//g' \
>> "$mb_pwd/cfgdefs.mk"
@@ -129,6 +155,9 @@ cfgdefs_detect_libc_version
# libc (variant-specific) options
cfgdefs_set_libc_options
+# libc (variant-specific) cflags
+cfgdefs_set_libc_cflags
+
# cfgdefs.in --> cfgdefs.mk
cfgdefs_output_custom_defs