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