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
>
>