This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, i386, Android] -mandroid support for i386 target
- From: Jing Yu <jingyu at google dot com>
- To: rth at redhat dot com, jh at suse dot cz, ubizjak at gmail dot com
- Cc: "H.J. Lu" <hjl dot tools at gmail dot com>, gcc-patches <gcc-patches at gcc dot gnu dot org>, pavel dot v dot chupin at gmail dot com, Ilya Enkovich <enkovich dot gnu at gmail dot com>
- Date: Wed, 28 Mar 2012 15:57:55 -0700
- Subject: Re: [PATCH, i386, Android] -mandroid support for i386 target
- References: <CAMbmDYaCrH-WjE5oerBBV_f_YFbewYR7U3LXZuyq1QiEKzMkyw@mail.gmail.com> <CAMe9rOpqhDJswSuVgexzuEqbztekDe2RoFBXwMZZVC5iw3XhqA@mail.gmail.com> <CAMbmDYZV5krDj8riR9=c01jn8P5YDxWNuycHqbfR8iaN2z24gw@mail.gmail.com> <CAMe9rOpbC7WBkzvC0HLh1Us73hjJt=ZEjg1poqh=kjMd239TVA@mail.gmail.com> <CAMbmDYYKr+2i=k1MHDui59wb4Wk1MteBcDPuAiOZYG+ogGd6ZQ@mail.gmail.com> <CAMbmDYZS8gXTa8dFwg4nUAYA0uBZm2_yj2nf87cHqMD5LsCQ7Q@mail.gmail.com> <CAMbmDYa9QnB_eDnzP5_dnV_b9X4FUSsAJJ0anS5RcAJ1_C23Gg@mail.gmail.com>
This patch looks good for Android toolchain. But I am not a maintainer.
Can any x86 backend maintainer help to review the patch?
Thanks,
Jing
On Tue, Mar 27, 2012 at 6:55 AM, Ilya Enkovich <enkovich.gnu@gmail.com> wrote:
> Ping
>
> 13 марта 2012 г. 15:13 пользователь Ilya Enkovich
> <enkovich.gnu@gmail.com> написал:
>> Ping
>>
>> 27 февраля 2012 г. 6:41 пользователь Ilya Enkovich
>> <enkovich.gnu@gmail.com> написал:
>>>> You should keep those *_SPEC and define them with new
>>>> GNU_*_SPEC in gnu-user.h since gnu-user.h is also used
>>>> by other non-linux targets. In linux.h, you undef *_SPEC
>>>> before defining them.
>>>>
>>>>
>>>> --
>>>> H.J.
>>>
>>> Thanks for the note. Here is fixed version. Is it OK now?
>>>
>>> Thanks,
>>> Ilya
>>> --
>>> 2012-02-27 Enkovich Ilya <ilya.enkovich@intel.com>
>>>
>>> * gcc/config/i386/gnu-user.h (GNU_USER_TARGET_CC1_SPEC): New.
>>> (CC1_SPEC): Use GNU_USER_TARGET_CC1_SPEC.
>>> (GNU_USER_TARGET_LINK_SPEC): New.
>>> (LINK_SPEC): Use GNU_USER_TARGET_LINK_SPEC.
>>> (GNU_USER_TARGET_MATHFILE_SPEC): New.
>>> (ENDFILE_SPEC): Use GNU_USER_TARGET_MATHFILE_SPEC.
>>>
>>> * gcc/config/i386/linux.h (CC1_SPEC): New.
>>> (LINK_SPEC): New.
>>> (LIB_SPEC): New.
>>> (STARTFILE_SPEC): New.
>>> (ENDFILE_SPEC): New.
>>>
>>>
>>> diff --git a/gcc/config/i386/gnu-user.h b/gcc/config/i386/gnu-user.h
>>> index 98d0a25..33ceab7 100644
>>> --- a/gcc/config/i386/gnu-user.h
>>> +++ b/gcc/config/i386/gnu-user.h
>>> @@ -77,8 +77,11 @@ along with GCC; see the file COPYING3. If not see
>>> #undef CPP_SPEC
>>> #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
>>>
>>> +#undef GNU_USER_TARGET_CC1_SPEC
>>> +#define GNU_USER_TARGET_CC1_SPEC "%(cc1_cpu) %{profile:-p}"
>>> +
>>> #undef CC1_SPEC
>>> -#define CC1_SPEC "%(cc1_cpu) %{profile:-p}"
>>> +#define CC1_SPEC GNU_USER_TARGET_CC1_SPEC
>>>
>>> /* Provide a LINK_SPEC appropriate for GNU userspace. Here we provide support
>>> for the special GCC options -static and -shared, which allow us to
>>> @@ -97,22 +100,28 @@ along with GCC; see the file COPYING3. If not see
>>> { "link_emulation", GNU_USER_LINK_EMULATION },\
>>> { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }
>>>
>>> -#undef LINK_SPEC
>>> -#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \
>>> +#define GNU_USER_TARGET_LINK_SPEC \
>>> + "-m %(link_emulation) %{shared:-shared} \
>>> %{!shared: \
>>> %{!static: \
>>> %{rdynamic:-export-dynamic} \
>>> -dynamic-linker %(dynamic_linker)} \
>>> %{static:-static}}"
>>>
>>> +#undef LINK_SPEC
>>> +#define LINK_SPEC GNU_USER_TARGET_LINK_SPEC
>>> +
>>> /* Similar to standard GNU userspace, but adding -ffast-math support. */
>>> -#undef ENDFILE_SPEC
>>> -#define ENDFILE_SPEC \
>>> +#define GNU_USER_TARGET_MATHFILE_SPEC \
>>> "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
>>> %{mpc32:crtprec32.o%s} \
>>> %{mpc64:crtprec64.o%s} \
>>> - %{mpc80:crtprec80.o%s} \
>>> - %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
>>> + %{mpc80:crtprec80.o%s}"
>>> +
>>> +#undef ENDFILE_SPEC
>>> +#define ENDFILE_SPEC \
>>> + GNU_USER_TARGET_MATHFILE_SPEC " " \
>>> + GNU_USER_TARGET_ENDFILE_SPEC
>>>
>>> /* A C statement (sans semicolon) to output to the stdio stream
>>> FILE the assembler definition of uninitialized global DECL named
>>> diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h
>>> index 73681fe..a832ddc 100644
>>> --- a/gcc/config/i386/linux.h
>>> +++ b/gcc/config/i386/linux.h
>>> @@ -22,3 +22,30 @@ along with GCC; see the file COPYING3. If not see
>>>
>>> #define GNU_USER_LINK_EMULATION "elf_i386"
>>> #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
>>> +
>>> +#undef CC1_SPEC
>>> +#define CC1_SPEC \
>>> + LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \
>>> + GNU_USER_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC)
>>> +
>>> +#undef LINK_SPEC
>>> +#define LINK_SPEC \
>>> + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LINK_SPEC, \
>>> + GNU_USER_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC)
>>> +
>>> +#undef LIB_SPEC
>>> +#define LIB_SPEC \
>>> + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LIB_SPEC, \
>>> + GNU_USER_TARGET_LIB_SPEC " " ANDROID_LIB_SPEC)
>>> +
>>> +#undef STARTFILE_SPEC
>>> +#define STARTFILE_SPEC \
>>> + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_STARTFILE_SPEC, \
>>> + ANDROID_STARTFILE_SPEC)
>>> +
>>> +#undef ENDFILE_SPEC
>>> +#define ENDFILE_SPEC \
>>> + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_MATHFILE_SPEC " " \
>>> + GNU_USER_TARGET_ENDFILE_SPEC, \
>>> + GNU_USER_TARGET_MATHFILE_SPEC " " \
>>> + ANDROID_ENDFILE_SPEC)