On 5/04/2012, at 10:16 AM, Maxim Kuvyrkov wrote:
> Chao,
>
> Let's take discussion of MIPS changes to gcc-patches@. Please follow up here.
>
> --
> Maxim Kuvyrkov
> CodeSourcery / Mentor Graphics
>
> On 5/04/2012, at 10:10 AM, Fu, Chao-Ying 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.
>> 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.
>> +
>> +#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 .
>> 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?
Thank you,
--
Maxim Kuvyrkov
CodeSourcery / Mentor Graphics