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*) (btw bfin*-linux-uclibc* or crisv32-*-linux* | cris-*-linux* are broken now anyways: opening glibc-c.o: No such file or directory make[1]: *** [cc1-checksum.c] Error 1 make[1]: *** Waiting for unfinished jobs...) Sorry again for the inconvenience, here is the updated patch that now, hopefully, fixes the issues with my initial patch. (Andreas patch still needs to be applied) Is it OK? diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6e27be2..2d15fb1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2013-08-21 Alexander Ivchenko <alexander.ivche...@intel.com> + + * config/linux-android.c (linux_android_libc_has_function): Fix + checks for libc. + * config/bfin/uclinux.h: Define TARGET_LIBC_HAS_FUNCTION as + no_c99_libc_has_function. + * config/c6x/uclinux-elf.h: Ditto. + * config/lm32/uclinux-elf.h: Ditto. + * config/m68k/uclinux.h: Ditto. + * config/moxie/uclinux.h: Ditto. + * config.gcc (bfin*-linux-uclibc*): Add t-linux-android to tmake_file. + (crisv32-*-linux*, cris-*-linux*): Ditto. + * config/bfin/bfin.c: Include "tm_p.h". + 2013-08-21 Joern Rennecke <joern.renne...@embecosm.com> * reload.h (struct reg_equivs): Rename to .. 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*) @@ -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-*-*) 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) 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, Alexander 2013/8/22 Andreas Krebbel <kreb...@linux.vnet.ibm.com>: > On Wed, Aug 21, 2013 at 11:21:32PM +0400, Alexander Ivchenko wrote: >> I'm sorry for that. The following patch cured my build of those >> targets; it is also preserving the initial presence of c99. There were >> plenty of targets that were changed by my patch, I hope this time I >> didn't miss anything. > > S/390 bootstrap still fails. The reason is that when we set > tm_file/tm_p_file in config.gcc we do not append to the existing > content so your adjustments done before are ignored and gcc complains > about unknown linux_android_libc_has_function. > > However, since with s390 Linux and TPF we only target GNU Linux > systems with Glibc we can default to gnu_libc_has_functions anyway: > > Index: gcc/config/s390/linux.h > =================================================================== > *** gcc/config/s390/linux.h.orig 2013-01-14 07:48:06.000000000 +0000 > --- gcc/config/s390/linux.h 2013-08-22 07:57:46.006014197 +0000 > *************** along with GCC; see the file COPYING3. > *** 87,90 **** > --- 87,93 ---- > /* Define if long doubles should be mangled as 'g'. */ > #define TARGET_ALTERNATE_LONG_DOUBLE_MANGLING > > + #undef TARGET_LIBC_HAS_FUNCTION > + #define TARGET_LIBC_HAS_FUNCTION gnu_libc_has_function > + > #endif > Index: gcc/config/s390/tpf.h > =================================================================== > *** gcc/config/s390/tpf.h.orig 2013-08-22 07:01:48.000000000 +0000 > --- gcc/config/s390/tpf.h 2013-08-22 07:57:27.706013534 +0000 > *************** along with GCC; see the file COPYING3. > *** 111,118 **** > /* IBM copies these libraries over with these names. */ > #define MATH_LIBRARY "CLBM" > #define LIBSTDCXX "CPP2" > - #endif /* ! _TPF_H */ > > - /* We redefine this hook so the version from elfos.h header won't be used. > */ > #undef TARGET_LIBC_HAS_FUNCTION > ! #define TARGET_LIBC_HAS_FUNCTION default_libc_has_function > --- 111,118 ---- > /* IBM copies these libraries over with these names. */ > #define MATH_LIBRARY "CLBM" > #define LIBSTDCXX "CPP2" > > #undef TARGET_LIBC_HAS_FUNCTION > ! #define TARGET_LIBC_HAS_FUNCTION gnu_libc_has_function > ! > ! #endif /* ! _TPF_H */ >