This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Enable non-complex math builtins from C99 for Bionic
- From: Maxim Kuvyrkov <maxim at kugelworks dot com>
- To: Alexander Ivchenko <aivchenk at gmail dot com>
- Cc: Andreas Krebbel <krebbel at linux dot vnet dot ibm dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 4 Sep 2013 17:15:45 +1200
- Subject: Re: [PATCH] Enable non-complex math builtins from C99 for Bionic
- Authentication-results: sourceware.org; auth=none
- References: <Pine dot LNX dot 4 dot 64 dot 1211302115430 dot 10739 at digraph dot polyomino dot org dot uk> <CACysShjuePdWP1fDQ+=pbUQYjQDyzu3u1ypLfHsOf8-gjpDo5Q at mail dot gmail dot com> <Pine dot LNX dot 4 dot 64 dot 1212191754480 dot 3536 at digraph dot polyomino dot org dot uk> <CACysShhnjtoco63R1BsAPNiD=jB696e-1FOekC0f40YLFk9WrQ at mail dot gmail dot com> <Pine dot LNX dot 4 dot 64 dot 1301071615250 dot 23785 at digraph dot polyomino dot org dot uk> <CACysShhz+0gyscs-fkN7evVq1bGCMmgj09n6YQFAriKKn2C+HA at mail dot gmail dot com> <Pine dot LNX dot 4 dot 64 dot 1307082206160 dot 7307 at digraph dot polyomino dot org dot uk> <CACysShhZkdphnWqy8qaCKotQEp7sYizsGi8ZJ0hg3wBTx7Xenw at mail dot gmail dot com> <yddbo4rw21v dot fsf at lokon dot CeBiTec dot Uni-Bielefeld dot DE> <CACysShhKGY1UCUthvTmDSeVS7D4QV=BpAD2VbzmPv7wLYYFqhA at mail dot gmail dot com> <20130822082500 dot GA19152 at bart> <CACysShgCzaTtSDapaw-+vkpUtqBtfRpKVWzd=NUOtrGP1AMPtg at mail dot gmail dot 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?
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