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? 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. 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? > 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. > @@ -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. > 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