This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [PATCH][4.9] PR 64569 - Backport support for MIPS binutils 2.25


Ping. Please could you advise if I can approve MIPS changes to release branches
of if I need you/someone else to do so?

Thanks,
Matthew

> -----Original Message-----
> From: Matthew Fortune
> Sent: 07 February 2015 08:22
> To: jakub@redhat.com
> Cc: Moore, Catherine (Catherine_Moore@mentor.com); 'gcc-
> patches@gcc.gnu.org' (gcc-patches@gcc.gnu.org); aaro.koskinen@iki.fi
> Subject: RE: [PATCH][4.9] PR 64569 - Backport support for MIPS binutils
> 2.25
> 
> Hi Jakub,
> 
> I haven't done a backport to a release branch before. Could you tell me
> who needs to approve this change, it only affects MIPS?
> 
> Thanks,
> Matthew
> 
> > -----Original Message-----
> > From: Matthew Fortune
> > Sent: 26 January 2015 16:30
> > To: 'gcc-patches@gcc.gnu.org' (gcc-patches@gcc.gnu.org)
> > Cc: Moore, Catherine (Catherine_Moore@mentor.com)
> > Subject: RE: [PATCH][4.9] PR 64569 - Backport support for MIPS
> > binutils
> > 2.25
> >
> > > This is a minimal backport of features added to GCC 5 to enable use
> > > of binutils 2.25 with GCC 4.9 for MIPS soft-float builds. Further
> > > details in the PR:
> > >
> > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64569
> > >
> > > The commits which are being backported are listed below (the last
> > > one is posted but not committed yet).
> > >
> > > r213870: Fix mips16.S for soft-float
> > > r213872: Pass -m(soft|hard|single|double)-float via ASM_SPEC
> > > r217446: Implement o32 FPXX (very minimal backport)
> > > r217939: Update configure check for HAVE_MIPS_DOT_MODULE
> > > r??????: Make ASM_SPEC changes conditional on HAVE_MIPS_DOT_MODULE
> >
> > Updated - The last one in the list is committed as:
> > r219867: MIPS: Only pass floating-point options to the assembler when
> > necessary
> >
> > I'm not sure who to CC as RM for GCC 4.9.
> >
> > Thanks,
> > Matthew
> >
> > >
> > > gcc/
> > > 	* config.in [!USED_FOR_TARGET] (HAVE_AS_DOT_MODULE): Undefine.
> > > 	* config/mips/mips.h (FP_ASM_SPEC): New macro.
> > > 	(ASM_SPEC): Use FP_ASM_SPEC.
> > > 	* configure.ac (HAVE_AS_DOT_MODULE): Detect support for .module
> > > 	and FPXX extensions.
> > >
> > > libgcc/
> > > 	* config/mips/mips16.S: Do not build for soft-float.
> > >
> > > Once this is done I will do the same backport for GCC 4.8.
> > >
> > > Tested to check that soft-float builds work with binutils 2.25 and
> > > the floating-point options are not passed for binutils 2.24.
> > >
> > > Thanks,
> > > Matthew
> > >
> > > ---
> > >  gcc/config.in               |  6 ++++++
> > >  gcc/config/mips/mips.h      | 19 ++++++++++++++++++-
> > >  gcc/configure               | 32 ++++++++++++++++++++++++++++++++
> > >  gcc/configure.ac            |  7 +++++++
> > >  libgcc/config/mips/mips16.S | 10 +++++++---
> > >  5 files changed, 70 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/gcc/config.in b/gcc/config.in index 1e85325..013a606
> > > 100644
> > > --- a/gcc/config.in
> > > +++ b/gcc/config.in
> > > @@ -447,6 +447,12 @@
> > >  #endif
> > >
> > >
> > > +/* Define if the assembler understands .module. */ #ifndef
> > > +USED_FOR_TARGET #undef HAVE_AS_DOT_MODULE #endif
> > > +
> > > +
> > >  /* Define if your assembler supports the -no-mul-bug-abort option.
> > > */ #ifndef USED_FOR_TARGET  #undef HAVE_AS_NO_MUL_BUG_ABORT_OPTION
> > > diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index
> > > a786d4c..ff88d98 100644
> > > --- a/gcc/config/mips/mips.h
> > > +++ b/gcc/config/mips/mips.h
> > > @@ -1163,6 +1163,22 @@ struct mips_cpu_info {  #define
> > > SUBTARGET_ASM_SPEC ""
> > >  #endif
> > >
> > > +/* FP_ASM_SPEC represents the floating-point options that must be
> > passed
> > > +   to the assembler when FPXX support exists.  Prior to that point
> > the
> > > +   assembler could accept the options but were not required for
> > > +   correctness.  We only add the options when absolutely necessary
> > > +   because passing -msoft-float to the assembler will cause it to
> > reject
> > > +   all hard-float instructions which may require some user code to
> be
> > > +   updated.  */
> > > +
> > > +#ifdef HAVE_AS_DOT_MODULE
> > > +#define FP_ASM_SPEC "\
> > > +%{mhard-float} %{msoft-float} \
> > > +%{msingle-float} %{mdouble-float}"
> > > +#else
> > > +#define FP_ASM_SPEC
> > > +#endif
> > > +
> > >  #undef ASM_SPEC
> > >  #define ASM_SPEC "\
> > >  %{G*} %(endian_spec) %{mips1} %{mips2} %{mips3} %{mips4} \ @@
> > > -1188,7
> > > +1204,8 @@ struct mips_cpu_info {  %{mfp32} %{mfp64} %{mnan=*} \
> > > %{mshared} %{mno-shared} \  %{msym32} %{mno-sym32} \ -%{mtune=*} \
> > > +%{mtune=*}" \
> > > +FP_ASM_SPEC "\
> > >  %(subtarget_asm_spec)"
> > >
> > >  /* Extra switches sometimes passed to the linker.  */ diff --git
> > > a/gcc/configure b/gcc/configure index 291e463..d5b6879 100755
> > > --- a/gcc/configure
> > > +++ b/gcc/configure
> > > @@ -26140,6 +26140,38 @@ $as_echo "#define HAVE_AS_GNU_ATTRIBUTE 1"
> > > >>confdefs.h
> > >
> > >  fi
> > >
> > > +    { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for
> > > .module support" >&5
> > > +$as_echo_n "checking assembler for .module support... " >&6; } if
> > > +test "${gcc_cv_as_mips_dot_module+set}" = set; then :
> > > +  $as_echo_n "(cached) " >&6
> > > +else
> > > +  gcc_cv_as_mips_dot_module=no
> > > +  if test x$gcc_cv_as != x; then
> > > +    $as_echo '.module mips2
> > > +       .module fp=xx' > conftest.s
> > > +    if { ac_try='$gcc_cv_as $gcc_cv_as_flags -32 -o conftest.o
> > > +conftest.s
> > > >&5'
> > > +  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; }
> > > +>&5
> > > +  (eval $ac_try) 2>&5
> > > +  ac_status=$?
> > > +  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
> > > +  test $ac_status = 0; }; }
> > > +    then
> > > +	gcc_cv_as_mips_dot_module=yes
> > > +    else
> > > +      echo "configure: failed program was" >&5
> > > +      cat conftest.s >&5
> > > +    fi
> > > +    rm -f conftest.o conftest.s
> > > +  fi
> > > +fi
> > > +{ $as_echo "$as_me:${as_lineno-$LINENO}: result:
> > > $gcc_cv_as_mips_dot_module" >&5
> > > +$as_echo "$gcc_cv_as_mips_dot_module" >&6; } if test
> > > +$gcc_cv_as_mips_dot_module = yes; then
> > > +
> > > +$as_echo "#define HAVE_AS_DOT_MODULE 1" >>confdefs.h
> > > +
> > > +fi
> > > +
> > >      { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for
> > > .micromips support" >&5  $as_echo_n "checking assembler for
> > > .micromips support... " >&6; }  if test
> > > "${gcc_cv_as_micromips_support+set}" = set; then :
> > > diff --git a/gcc/configure.ac b/gcc/configure.ac index
> > > b9a3799..ded0c48 100644
> > > --- a/gcc/configure.ac
> > > +++ b/gcc/configure.ac
> > > @@ -4251,6 +4251,13 @@ LCF0:
> > >        [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
> > >  	  [Define if your assembler supports .gnu_attribute.])])
> > >
> > > +    gcc_GAS_CHECK_FEATURE([.module support],
> > > +      gcc_cv_as_mips_dot_module,,[-32],
> > > +      [.module mips2
> > > +       .module fp=xx],,
> > > +      [AC_DEFINE(HAVE_AS_DOT_MODULE, 1,
> > > +	  [Define if your assembler supports .module.])])
> > > +
> > >      gcc_GAS_CHECK_FEATURE([.micromips support],
> > >        gcc_cv_as_micromips_support,,[--fatal-warnings],
> > >        [.set micromips],,
> > > diff --git a/libgcc/config/mips/mips16.S
> > > b/libgcc/config/mips/mips16.S index 6a43a98..dde8939 100644
> > > --- a/libgcc/config/mips/mips16.S
> > > +++ b/libgcc/config/mips/mips16.S
> > > @@ -21,8 +21,12 @@ a copy of the GCC Runtime Library Exception along
> > > with this program;  see the files COPYING3 and COPYING.RUNTIME
> > > respectively.  If not, see  <http://www.gnu.org/licenses/>.  */
> > >
> > > -#ifdef __mips_micromips
> > > -  /* DO NOTHING */
> > > +#if defined(__mips_micromips) || defined(__mips_soft_float)
> > > +  /* Do nothing because this code is only needed when linking
> > > +     against mips16 hard-float objects.  Neither micromips code
> > > +     nor soft-float code can be linked against mips16 hard-float
> > > +     objects so we do not need these routines when building libgcc
> > > +     for those cases.  */
> > >  #else
> > >
> > >  /* This file contains mips16 floating point support functions.
> > > These @@ -749,4 +753,4 @@ CALL_STUB_RET (__mips16_call_stub_dc_10,
> > > 10, DC) #endif /* !__mips_single_float */
> > >
> > >  #endif
> > > -#endif /* __mips_micromips */
> > > +#endif /* defined(__mips_micromips) || defined(__mips_soft_float)
> > > +*/
> > > --
> > > 2.2.1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]