summaryrefslogtreecommitdiffhomepage
path: root/project/config
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2019-08-03 16:14:26 +0000
committermidipix <writeonce@midipix.org>2019-08-03 16:14:26 +0000
commit3d4ab416844793fb1b4fc28ad966cb125d19e441 (patch)
treed3c5197d912d664726b232b55aa2c1fdf3728b65 /project/config
parent831753b17817e33d06c841be66e48be1b05dba54 (diff)
downloadmmglue-3d4ab416844793fb1b4fc28ad966cb125d19e441.tar.bz2
mmglue-3d4ab416844793fb1b4fc28ad966cb125d19e441.tar.xz
midipix targets: __init_tls(): added __thread_list_lock support.
Diffstat (limited to 'project/config')
-rw-r--r--project/config/cfgdefs.in4
-rw-r--r--project/config/cfgdefs.sh31
2 files changed, 34 insertions, 1 deletions
diff --git a/project/config/cfgdefs.in b/project/config/cfgdefs.in
index bbad445..e03094a 100644
--- a/project/config/cfgdefs.in
+++ b/project/config/cfgdefs.in
@@ -4,6 +4,10 @@ LIBC_MAJOR = @libc_major@
LIBC_MINOR = @libc_minor@
LIBC_MICRO = @libc_micro@
+# libc version-specific defs
+LIBC_CFLAGS_SHARED += @libc_td_tid_addr@
+LIBC_CFLAGS_STATIC += @libc_td_tid_addr@
+
# build mode
LIBC_EXCL_FILES = @libc_excl_files@
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