From 3d4ab416844793fb1b4fc28ad966cb125d19e441 Mon Sep 17 00:00:00 2001 From: midipix Date: Sat, 3 Aug 2019 16:14:26 +0000 Subject: midipix targets: __init_tls(): added __thread_list_lock support. --- project/common.mk | 3 ++- project/config/cfgdefs.in | 4 ++++ project/config/cfgdefs.sh | 31 ++++++++++++++++++++++++++++++- 3 files changed, 36 insertions(+), 2 deletions(-) (limited to 'project') diff --git a/project/common.mk b/project/common.mk index f7f6929..af5155e 100644 --- a/project/common.mk +++ b/project/common.mk @@ -82,7 +82,8 @@ SHARED_OBJS += $(libc_core_files_S:%.S=%.lo) $(STATIC_OBJS): headers.tag host.tag tree.tag $(SHARED_OBJS): headers.tag host.tag tree.tag -$(SHARED_OBJS): CFLAGS_SHARED += -DSHARED= +$(SHARED_OBJS): CFLAGS_SHARED += $(LIBC_CFLAGS_SHARED) -DSHARED= +$(STATIC_OBJS): CFLAGS_STATIC += $(LIBC_CFLAGS_STATIC) src/%.o:$(PORT_DIR)/src/%.c $(HEADER_DEPS) $(CC) -c -o $@ $< $(CFLAGS_STATIC) 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 -- cgit v1.2.3