Hi Maxim,

2013/9/4 Maxim Kuvyrkov <ma...@kugelworks.com>:
> On 23/08/2013, at 1:04 AM, Alexander Ivchenko wrote:
>
>> Ugh.. thanks, you are right. That points to another problem that I
>> didn't see before:
>>
>> 3) *linux* targets that do not append to tm_p_file (s390x-*-linux* and
>> s390x-ibm-tpf* - your patch addresses that problem correctly) OR
>> tmake_file (bfin*-linux-uclibc* or crisv32-*-linux* | cris-*-linux*)
>
> Could you be more verbose, please?  What some of the *linux* target do not 
> append to tm_p_file?

*linux* targets that do not append to tm_p_file are 390x-*-linux* and
s390x-ibm-tpf* and Andrew is already addressed this problem.


> It seems that there are at least two separate problems:
>
> 1. OPTION_BIONIC is not defined in linux-android.c .  I think the right fix 
> here is to copy definitions of OPTION_BIONIC (and, optionally, OPTION_UCLIBC) 
> from gcc/config/linux.h to rs6000/linux.h, rs6000/linux64.h and alpha/linux.h 
> -- in other words, define OPTION_BIONIC and OPTION_UCLIBC whenever 
> OPTION_GLIBC is defined.

Why can't we just use the checks like "if (linux_libc == LIBC_GLIBC)".
Seems that we have all infrastructure in place (linux_libc,
LIBC_GLIBC, LIBC_BIONIC, LIBC_UCLIBC are defined for all *linux*
targets). I don't see the reason to make new defines.

> 2. The second problem is to do with definitions of TARGET_LIBC_HAS_FUNCTION 
> for bfin, c6x, lm32, m68k and moxie.  What is the failure scenario here?

"For them we have ar: linux-android.o: No such file or directory" So I
added t-linux-android rules to tmake_file.

(and for bfin additionally we have:
"../../gcc/gcc/config/bfin/bfin.c:5812:29: error:
‘linux_android_libc_has_function’ was not declared in this scope".
because
the tm_p.h is not included in bfin.c)

>
>> diff --git a/gcc/config.gcc b/gcc/config.gcc
>> index 7e1d529..89cf30a 100644
>> --- a/gcc/config.gcc
>> +++ b/gcc/config.gcc
>> @@ -1018,7 +1018,7 @@ bfin*-uclinux*)
>>  ;;
>> bfin*-linux-uclibc*)
>>  tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h gnu-user.h linux.h
>> glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
>> - tmake_file="bfin/t-bfin-linux t-slibgcc"
>> + tmake_file="bfin/t-bfin-linux t-slibgcc t-linux-android"
>>  use_collect2=no
>>  ;;
>> bfin*-rtems*)
>
> Why?  Bfin has nothing to do with android.

Since ‘linux_android_libc_has_function’ handles all three libc options
for all linux targets, that's natural to use this function. May be it
should be called "linux_libc_has_function" and be located in linux.c
(we don't have this file..).

>> @@ -1053,7 +1053,7 @@ cris-*-elf | cris-*-none)
>> crisv32-*-linux* | cris-*-linux*)
>>  tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h
>> glibc-stdint.h cris/linux.h"
>>  # We need to avoid using t-linux, so override default tmake_file
>> - tmake_file="cris/t-cris cris/t-linux t-slibgcc"
>> + tmake_file="cris/t-cris cris/t-linux t-slibgcc t-linux-android"
>>  extra_options="${extra_options} cris/linux.opt"
>>  case $target in
>>   cris-*-*)
>
> Same question here.

Please, see above.

>> diff --git a/gcc/config/bfin/bfin.c b/gcc/config/bfin/bfin.c
>> index 7fab975..18457f8 100644
>> --- a/gcc/config/bfin/bfin.c
>> +++ b/gcc/config/bfin/bfin.c
>> @@ -46,6 +46,7 @@
>> #include "cgraph.h"
>> #include "langhooks.h"
>> #include "bfin-protos.h"
>> +#include "tm_p.h"
>> #include "tm-preds.h"
>> #include "tm-constrs.h"
>> #include "gt-bfin.h"
>> diff --git a/gcc/config/bfin/uclinux.h b/gcc/config/bfin/uclinux.h
>> index ca0f4ee..63cba99 100644
>> --- a/gcc/config/bfin/uclinux.h
>> +++ b/gcc/config/bfin/uclinux.h
>> @@ -44,3 +44,6 @@ see the files COPYING3 and COPYING.RUNTIME
>> respectively.  If not, see
>> #define TARGET_SUPPORTS_SYNC_CALLS 1
>>
>> #define SUBTARGET_FDPIC_NOT_SUPPORTED
>> +
>> +#undef TARGET_LIBC_HAS_FUNCTION
>> +#define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
>> diff --git a/gcc/config/c6x/uclinux-elf.h b/gcc/config/c6x/uclinux-elf.h
>> index 5d61f4d..fa0937e 100644
>> --- a/gcc/config/c6x/uclinux-elf.h
>> +++ b/gcc/config/c6x/uclinux-elf.h
>> @@ -62,3 +62,5 @@
>>     : "0" (_beg), "b" (_end), "b" (_scno)); \
>> }
>>
>> +#undef TARGET_LIBC_HAS_FUNCTION
>> +#define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
>> diff --git a/gcc/config/linux-android.c b/gcc/config/linux-android.c
>> index 4a4b48d..e9d9e9a 100644
>> --- a/gcc/config/linux-android.c
>> +++ b/gcc/config/linux-android.c
>> @@ -35,9 +35,9 @@ linux_android_has_ifunc_p (void)
>> bool
>> linux_android_libc_has_function (enum function_class fn_class)
>> {
>> -  if (OPTION_GLIBC)
>> +  if (linux_libc == LIBC_GLIBC)
>>     return true;
>> -  if (OPTION_BIONIC)
>> +  if (linux_libc == LIBC_BIONIC)
>>     if (fn_class == function_c94
>>  || fn_class == function_c99_misc
>>  || fn_class == function_sincos)
>
> The above hunk should not be necessary after (1).
>
>> diff --git a/gcc/config/lm32/uclinux-elf.h b/gcc/config/lm32/uclinux-elf.h
>> index 3a556d7..a5e8163 100644
>> --- a/gcc/config/lm32/uclinux-elf.h
>> +++ b/gcc/config/lm32/uclinux-elf.h
>> @@ -77,3 +77,5 @@
>> #undef  CC1_SPEC
>> #define CC1_SPEC "%{G*} %{!fno-PIC:-fPIC}"
>>
>> +#undef TARGET_LIBC_HAS_FUNCTION
>> +#define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
>> diff --git a/gcc/config/m68k/uclinux.h b/gcc/config/m68k/uclinux.h
>> index 8d74312..b1af7d2 100644
>> --- a/gcc/config/m68k/uclinux.h
>> +++ b/gcc/config/m68k/uclinux.h
>> @@ -67,3 +67,6 @@ along with GCC; see the file COPYING3.  If not see
>>    sections.  */
>> #undef M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P
>> #define M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P 1
>> +
>> +#undef TARGET_LIBC_HAS_FUNCTION
>> +#define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
>> diff --git a/gcc/config/moxie/uclinux.h b/gcc/config/moxie/uclinux.h
>> index 498037e..85c65f2 100644
>> --- a/gcc/config/moxie/uclinux.h
>> +++ b/gcc/config/moxie/uclinux.h
>> @@ -37,3 +37,6 @@ see the files COPYING3 and COPYING.RUNTIME
>> respectively.  If not, see
>>  --wrap=mmap --wrap=munmap --wrap=alloca\
>>  %{fmudflapth: --wrap=pthread_create\
>> }} %{fmudflap|fmudflapth: --wrap=main}"
>> +
>> +#undef TARGET_LIBC_HAS_FUNCTION
>> +#define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
>>
>>
>
> Thanks,
>
> --
> Maxim Kuvyrkov
> www.kugelworks.com


Thanks for the review,
Alexander

Reply via email to