libgcc2 is already in the toolset. This almost 100% certainly is a small bug in c/src/lib/libbsp/sparc/shared/startup/linkcmds.base. Look at how the .ctors are referenced in the files elf32_sparc.x* installed as part of the toolset in $prefix/sparc-rtems4.11/lib/ldscripts. They have "." and a "*" in the KEEP lines. I don't think we have that.
The problem was almost certainly introduced with function sections being used and I missed a wildcard on the ctor/dtor lines. On 3/27/2014 3:04 AM, Thomas (Gmail) wrote: > On referencing, I am a beginner regarding this. > > As I know from googling information, name of the section for > constructor is in .ctors section in linkcmds.base. > below reference code is from gcc-4.8.2/libgcc/libgcc2.c > because __do_global_ctors() function is in libgcc2.c, I tried to add > libgcc.a in rtems building environment. but, I didn't complete. > > < libgcc2.c > > ---------------------------------------------------------------------------------------------------- > /* Run all the global destructors on exit from the program. */ > void > __do_global_ctors (void) > { > #ifdef EH_FRAME_SECTION_NAME > { > static struct object object; > __register_frame_info (__EH_FRAME_BEGIN__, &object); > } > #endif > DO_GLOBAL_CTORS_BODY; > atexit (__do_global_dtors); > } > ------------------------------------------------------------------------------------- > > < gbl-ctors.h> > ------------------------------------------------------------------------------------- > /* Some systems use a different strategy for finding the ctors. > For example, svr3. */ > #ifndef DO_GLOBAL_CTORS_BODY > #define DO_GLOBAL_CTORS_BODY \ > do { \ > unsigned long nptrs = (unsigned long) __CTOR_LIST__[0]; \ > unsigned i; \ > if (nptrs == (unsigned long)-1) \ > for (nptrs = 0; __CTOR_LIST__[nptrs + 1] != 0; nptrs++); \ > for (i = nptrs; i >= 1; i--) > \ > __CTOR_LIST__[i] (); \ > } while (0) > #endif > ------------------------------------------------------------------------------------- > > > 2014-03-27 16:33 GMT+09:00 Joel Sherrill <joel.sherr...@oarcorp.com > <mailto:joel.sherr...@oarcorp.com>>: > > > On 3/27/2014 2:30 AM, Sebastian Huber wrote: > > On 2014-03-27 06:28, Thomas (Gmail) wrote: > >> I am tring to add libgcc.a in linking process for calling > __do_global_ctors(). > > If you have to do this by hand, then your build process is > broken. How did you > > get the RTEMS tool chain? Which RTEMS version do you use? > > > >> Please could you let me know how to add libgcc.a in RTEMS > building environment ? > >> > >> If this approach is not correct, please let me know correct > how-to-do for C++ > >> global constructor for Sparc. > > It should work out of the box. > > > Just out of curiosity what is the name of the section that the > constructor is in? > > When I turned on function sections, it may now be in .initXXX > instead of > just .init. > This would mean that an asterisk is needed in the linkcmds.base > for init > and fini > to pick up all the methods. There is a KEEP() around them which I > thought might > be the issue. > > -- > Joel Sherrill, Ph.D. Director of Research & Development > joel.sherr...@oarcorp.com On-Line Applications Research > Ask me about RTEMS: a free RTOS Huntsville AL 35805 > Support Available (256) 722-9985 > > -- Joel Sherrill, Ph.D. Director of Research & Development joel.sherr...@oarcorp.com On-Line Applications Research Ask me about RTEMS: a free RTOS Huntsville AL 35805 Support Available (256) 722-9985
_______________________________________________ rtems-devel mailing list rtems-devel@rtems.org http://www.rtems.org/mailman/listinfo/rtems-devel