From: "Fu, Chao-Ying" <fu@mips.com>
To: Maxim Kuvyrkov <maxim@codesourcery.com>
Cc: gcc-patches Patches <gcc-patches@gcc.gnu.org>
Subject: RE: [PATCH, Android] MIPS support
Date: Wed, 18 Apr 2012 01:10:00 -0000 [thread overview]
Message-ID: <7C6479EB2BF52547AC332FD6034646DA01448CA91E@exchdb03.mips.com> (raw)
In-Reply-To: <DC934C10-B958-40D3-8782-5DDAD8B7F668@codesourcery.com>
Maxim Kuvyrkov wrote:
> >
> >> For now, two MIPS changes in gnu-user.h and
> unwind-dw2-fde-dip.c can be posted for comment.
> >> (I didn't tested this patch, though.)
>
> You need to test your patches before posting them for review.
> Below are a couple of comments on your current version.
I can test if this patch doesn't break existing MIPS Linux GCC build.
>
> >> After starting to build toolchains for Android with
> Bionic, we may find new files to
> >> patch. Ex: Comment out getpagesize() for bionic.
> >>
> >> Any comment? Thanks a lot!
> >>
> >> Regards,
> >> Chao-ying
> >>
> >> Index: gcc/gcc/config/mips/gnu-user.h
> >> ===================================================================
> >> --- gcc.orig/gcc/config/mips/gnu-user.h 2012-04-03
> 17:39:50.000000000 -0700
> >> +++ gcc/gcc/config/mips/gnu-user.h 2012-04-04
> 14:31:50.804236000 -0700
> >> @@ -45,8 +45,8 @@ along with GCC; see the file COPYING3.
> >> /* A standard GNU/Linux mapping. On most targets, it is
> included in
> >> CC1_SPEC itself by config/linux.h, but mips.h overrides CC1_SPEC
> >> and provides this hook instead. */
> >> -#undef SUBTARGET_CC1_SPEC
> >> -#define SUBTARGET_CC1_SPEC "%{profile:-p}"
> >> +#undef GNU_USER_SUBTARGET_CC1_SPEC
> >> +#define GNU_USER_SUBTARGET_CC1_SPEC "%{profile:-p}"
> >>
> >> /* -G is incompatible with -KPIC which is the default, so
> only allow objects
> >> in the small data section if the user explicitly asks for it. */
> >> @@ -54,8 +54,8 @@ along with GCC; see the file COPYING3.
> >> #define MIPS_DEFAULT_GVALUE 0
> >>
> >> /* Borrowed from sparc/linux.h */
> >> -#undef LINK_SPEC
> >> -#define LINK_SPEC \
> >> +#undef GNU_USER_TARGET_LINK_SPEC
> >> +#define GNU_USER_TARGET_LINK_SPEC \
> >> "%(endian_spec) \
> >> %{shared:-shared} \
> >> %{!shared: \
> >> @@ -89,8 +89,8 @@ along with GCC; see the file COPYING3.
> >> #undef ASM_OUTPUT_REG_PUSH
> >> #undef ASM_OUTPUT_REG_POP
> >>
> >> -#undef LIB_SPEC
> >> -#define LIB_SPEC "\
> >> +#undef GNU_USER_TARGET_LIB_SPEC
> >> +#define GNU_USER_TARGET_LIB_SPEC "\
> >> %{pthread:-lpthread} \
> >> %{shared:-lc} \
> >> %{!shared: \
> >> @@ -133,7 +133,34 @@ extern const char *host_detect_local_cpu
> >> LINUX_DRIVER_SELF_SPECS
> >>
> >> /* Similar to standard Linux, but adding -ffast-math support. */
> >> -#undef ENDFILE_SPEC
> >> -#define ENDFILE_SPEC \
> >> +#undef GNU_USER_TARGET_ENDFILE_SPEC
> >> +#define GNN_USER_TARGET_ENDFILE_SPEC \
> >> "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
> >> %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
>
> Above definitions are OK.
Thanks!
>
> >> +
> >> +#undef LINK_SPEC
> >> +#define LINK_SPEC
> \
> >> + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LINK_SPEC,
> \
> >> + GNU_USER_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC)
> >> +
> >> +#undef SUBTARGET_CC1_SPEC
> >> +#define SUBTARGET_CC1_SPEC
> \
> >> + LINUX_OR_ANDROID_CC (GNU_USER_SUBTARGET_CC1_SPEC,
> \
> >> + GNU_USER_SUBTARGET_CC1_SPEC " " ANDROID_CC1_SPEC)
> >> +
> >> +#undef CC1PLUS_SPEC
> >> +#define CC1PLUS_SPEC
> \
> >> + LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_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_ENDFILE_SPEC,
> ANDROID_ENDFILE_SPEC)
>
> The LINUX_OR_ANDROID_* definitions should be moved out of
> gnu-user.h, as this header is used for systems besides Linux,
> e.g., kFreeBSD and Hurd. Please move these definitions to
> mips/linux-common.h, which will be a new file, similarly as
> i386 did in http://gcc.gnu.org/ml/gcc-patches/2012-04/msg00944.html .
I will check this message.
>
> >> Index: gcc/libgcc/unwind-dw2-fde-dip.c
> >> ===================================================================
> >> --- gcc.orig/libgcc/unwind-dw2-fde-dip.c 2012-04-03
> 17:07:28.000000000 -0700
> >> +++ gcc/libgcc/unwind-dw2-fde-dip.c 2012-04-04
> 14:51:01.338074000 -0700
> >> @@ -48,8 +48,9 @@
> >> #include "gthr.h"
> >>
> >> #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
> >> - && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
> >> - || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 &&
> defined(DT_CONFIG)))
> >> + && ((defined(__BIONIC__) && (defined(mips) ||
> defined(__mips__))) \
> >> + || (__GLIBC__ > 2 || (__GLIBC__ == 2 &&
> __GLIBC_MINOR__ > 2) \
> >> + || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 &&
> defined(DT_CONFIG))))
> >> # define USE_PT_GNU_EH_FRAME
> >> #endif
>
> What is this change for?
For stack unwinding, MIPS needs supporting functions in libgcc to
work with eh_frame for Android.
(Note that ARM has its own unwinding functions in gcc/config/arm/. It doesn't use eh_frame.)
The file is enabled for GLIBC originally. Thus, I add a new test to enable it
for MIPS Android BIONIC build.
Thanks!
Regards,
Chao-ying
next prev parent reply other threads:[~2012-04-18 1:10 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <BCDE03C0-61B1-4C07-9E09-35A3E5C4BA38@codesourcery.com>
[not found] ` <16285357-1E07-4D60-BD8D-2B2FE796609B@codesourcery.com>
[not found] ` <87sjgmm0rt.fsf@talisman.home>
[not found] ` <7C6479EB2BF52547AC332FD6034646DA01448C282D@exchdb03.mips.com>
[not found] ` <CA+=Sn1mYyCOusJWY9vswVA9k6Rm-goXPDxBvQYpXsh8zgJ30ng@mail.gmail.com>
[not found] ` <7C6479EB2BF52547AC332FD6034646DA01448C3ABE@exchdb03.mips.com>
[not found] ` <CA+=Sn1nDX8Yf+QE5VO+bQTiRpG25ZO-3PFp4QhkFN=8GEjMaJg@mail.gmail.com>
[not found] ` <7C6479EB2BF52547AC332FD6034646DA01448C3AEF@exchdb03.mips.com>
[not found] ` <B5CB78C8-D6D9-4E58-8A58-D95DE94A0AA7@codesourcery.com>
[not found] ` <7C6479EB2BF52547AC332FD6034646DA01448C524E@exchdb03.mips.com>
2012-04-04 22:16 ` Maxim Kuvyrkov
2012-04-18 0:59 ` Maxim Kuvyrkov
2012-04-18 1:10 ` Fu, Chao-Ying [this message]
2012-04-18 1:36 ` Maxim Kuvyrkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7C6479EB2BF52547AC332FD6034646DA01448CA91E@exchdb03.mips.com \
--to=fu@mips.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=maxim@codesourcery.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).