Ping^2

> -----Original Message-----
> From: Joey Ye
> Sent: Tuesday, November 20, 2012 10:09
> To: gcc-patches@gcc.gnu.org
> Cc: Joey Ye
> Subject: RE: [PATCH, libgcc] Make possible to disable JCR in crtstuff.c
> 
> Ping, as Joseph Prostko is saying that this patch shall solve the same
> problem he's facing.
> 
> > -----Original Message-----
> > From: Joey Ye [mailto:joey...@arm.com]
> > Sent: Friday, September 21, 2012 15:42
> > To: gcc-patches@gcc.gnu.org
> > Subject: [PATCH, libgcc] Make possible to disable JCR in crtstuff.c
> >
> > Current crtstuff.c checks if JCR_SECTION_NAME is defined to decide
> > whether
> > do work for JCR. However, defaults.h always defines JCR_SECTION_NAME:
> >
> > #ifndef JCR_SECTION_NAME
> > #define JCR_SECTION_NAME ".jcr"
> > #endif
> >
> > So it is impossible to disable JCR related code in crtbegin.o, which
> > can
> > save some bytes for every applications that doesn't need java.
> >
> > This patch revise the check of JCR_SECTION_NAME to
> > TARGET_USE_JCR_SECTION.
> > By defining latter to zero disable JCR in crtstuff. This change
> doesn't
> > impact logic of any target given following defines in defaults.h:
> >
> > #ifndef TARGET_USE_JCR_SECTION
> > #ifdef JCR_SECTION_NAME
> > #define TARGET_USE_JCR_SECTION 1
> > #else
> > #define TARGET_USE_JCR_SECTION 0
> > #endif
> > #endif
> >
> > Again, this patch doesn't impact libgcc on any target, unless
> > TARGET_USE_JCR_SECTION is explicitly defined to 0 with make
> > CFLAGS_FOR_TARGET=-DTARGET_USE_JCR_SECTION=0. AIX defines
> > TARGET_USE_JCR_SECTION to 0, but it has no crtbegin/end stuff. So also
> > no impact.
> >
> > OK to trunk?
> >
> > 2012-09-21  Joey Ye  <joey...@arm.com>
> >
> >     * crtstuff.c: Check TARGET_USE_JCR_SECTION.
> >
> > Index: libgcc/crtstuff.c
> > ===================================================================
> > --- libgcc/crtstuff.c       (revision 190556)
> > +++ libgcc/crtstuff.c       (working copy)
> > @@ -256,13 +256,13 @@
> >       = { };
> >  #endif /* USE_EH_FRAME_REGISTRY */
> >
> > -#ifdef JCR_SECTION_NAME
> > +#if TARGET_USE_JCR_SECTION && defined (JCR_SECTION_NAME)
> >  /* Stick a label at the beginning of the java class registration info
> >     so we can register them properly.  */
> >  STATIC void *__JCR_LIST__[]
> >    __attribute__ ((used, section(JCR_SECTION_NAME),
> > aligned(sizeof(void*))))
> >    = { };
> > -#endif /* JCR_SECTION_NAME */
> > +#endif /* TARGET_USE_JCR_SECTION && JCR_SECTION_NAME */
> >
> >  #if USE_TM_CLONE_REGISTRY
> >  STATIC func_ptr __TMC_LIST__[]
> > @@ -438,7 +438,7 @@
> >  #endif
> >
> >  #if defined(USE_EH_FRAME_REGISTRY) \
> > -    || defined(JCR_SECTION_NAME) \
> > +    || defined(TARGET_USE_JCR_SECTION) \
> >      || defined(USE_TM_CLONE_REGISTRY)
> >  /* Stick a call to __register_frame_info into the .init section.  For
> > some
> >     reason calls with no arguments work more reliably in .init, so
> > stick the
> > @@ -461,7 +461,7 @@
> >  #endif /* CRT_GET_RFIB_DATA */
> >  #endif /* USE_EH_FRAME_REGISTRY */
> >
> > -#ifdef JCR_SECTION_NAME
> > +#if TARGET_USE_JCR_SECTION
> >    if (__JCR_LIST__[0])
> >      {
> >        void (*register_classes) (void *) = _Jv_RegisterClasses;
> > @@ -469,7 +469,7 @@
> >        if (register_classes)
> >     register_classes (__JCR_LIST__);
> >      }
> > -#endif /* JCR_SECTION_NAME */
> > +#endif /* TARGET_USE_JCR_SECTION */
> >
> >  #if USE_TM_CLONE_REGISTRY
> >    register_tm_clones ();
> > @@ -483,7 +483,7 @@
> >    __attribute__ ((__used__, section(".init_array"),
> > aligned(sizeof(func_ptr))))
> >    = { frame_dummy };
> >  #endif /* !defined(INIT_SECTION_ASM_OP) */
> > -#endif /* USE_EH_FRAME_REGISTRY || JCR_SECTION_NAME ||
> > USE_TM_CLONE_REGISTRY */
> > +#endif /* USE_EH_FRAME_REGISTRY || TARGET_USE_JCR_SECTION ||
> > USE_TM_CLONE_REGISTRY */
> >
> >  #else  /* OBJECT_FORMAT_ELF */
> >
> > @@ -551,7 +551,7 @@
> >  }
> >
> >  #if defined(USE_EH_FRAME_REGISTRY) \
> > -    || defined(JCR_SECTION_NAME) \
> > +    || defined(TARGET_USE_JCR_SECTION) \
> >      || defined(USE_TM_CLONE_REGISTRY)
> >  /* A helper function for __do_global_ctors, which is in crtend.o.
> > Here
> >     in crtbegin.o, we can reference a couple of symbols not visible
> > there.
> > @@ -566,7 +566,7 @@
> >      __register_frame_info (__EH_FRAME_BEGIN__, &object);
> >  #endif
> >
> > -#ifdef JCR_SECTION_NAME
> > +#if TARGET_USE_JCR_SECTION
> >    if (__JCR_LIST__[0])
> >      {
> >        void (*register_classes) (void *) = _Jv_RegisterClasses;
> > @@ -580,7 +580,7 @@
> >    register_tm_clones ();
> >  #endif /* USE_TM_CLONE_REGISTRY */
> >  }
> > -#endif /* USE_EH_FRAME_REGISTRY || JCR_SECTION_NAME ||
> > USE_TM_CLONE_REGISTRY */
> > +#endif /* USE_EH_FRAME_REGISTRY || TARGET_USE_JCR_SECTION ||
> > USE_TM_CLONE_REGISTRY */
> >
> >  #else /* ! INIT_SECTION_ASM_OP && ! HAS_INIT_SECTION */
> >  #error "What are you doing with crtstuff.c, then?"
> > @@ -656,13 +656,13 @@
> >       = { 0 };
> >  #endif /* EH_FRAME_SECTION_NAME */
> >
> > -#ifdef JCR_SECTION_NAME
> > +#if TARGET_USE_JCR_SECTION && defined (JCR_SECTION_NAME)
> >  /* Null terminate the .jcr section array.  */
> >  STATIC void *__JCR_END__[1]
> >     __attribute__ ((used, section(JCR_SECTION_NAME),
> >                aligned(sizeof(void *))))
> >     = { 0 };
> > -#endif /* JCR_SECTION_NAME */
> > +#endif /* TARGET_USE_JCR_SECTION && JCR_SECTION_NAME */
> >
> >  #if USE_TM_CLONE_REGISTRY
> >  # ifndef HAVE_GAS_HIDDEN
> > @@ -742,7 +742,7 @@
> >  {
> >    func_ptr *p;
> >  #if defined(USE_EH_FRAME_REGISTRY) \
> > -    || defined(JCR_SECTION_NAME) \
> > +    || defined(TARGET_USE_JCR_SECTION) \
> >      || defined(USE_TM_CLONE_REGISTRY)
> >    __do_global_ctors_1();
> >  #endif
> 
> 




Reply via email to