<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    OK.. replying to self..<br>
    <br>
    I made some changes locally and now have the examples-v2 sample<br>
    cxx_throw nearly running.  I am down to the spurious exception
    handler<br>
    getting invoked on sis for exception 263 which I don't know what
    that<br>
    is.  [1]<br>
    <br>
    Does this run in gdb or exception mean anything to anyone?<br>
    <br>
    (gdb) r<br>
    Starting program:
    /home/joel/rtems-4.11-work/examples-v2/cxx/cxx_throw/o-optimize/cxx_throw.exe
    <br>
    Hey I'm in base class constructor number 1 for 0x2068384.<br>
    Hey I'm in base class constructor number 2 for 0x206837c.<br>
    Hey I'm in derived class constructor number 3 for 0x206837c.<br>
    <br>
    <br>
    *** CONSTRUCTOR/DESTRUCTOR TEST ***<br>
    Hey I'm in base class constructor number 4 for 0x20730f0.<br>
    Hey I'm in base class constructor number 5 for 0x20730f8.<br>
    Hey I'm in base class constructor number 6 for 0x2073100.<br>
    Hey I'm in base class constructor number 7 for 0x2073108.<br>
    Hey I'm in derived class constructor number 8 for 0x2073108.<br>
    Testing a C++ I/O stream<br>
    before try block<br>
    <br>
    Breakpoint 1, _Terminate (<br>
        the_source=the_source@entry=RTEMS_FATAL_SOURCE_EXCEPTION, <br>
        is_internal=is_internal@entry=false,
    the_error=the_error@entry=34011320)<br>
        at
    ../../../../../../rtems/c/src/../../cpukit/score/src/interr.c:36<br>
    36    {<br>
    (gdb) bt<br>
    #0  _Terminate
    (the_source=the_source@entry=RTEMS_FATAL_SOURCE_EXCEPTION, <br>
        is_internal=is_internal@entry=false,
    the_error=the_error@entry=34011320)<br>
        at
    ../../../../../../rtems/c/src/../../cpukit/score/src/interr.c:36<br>
    #1  0x0203c454 in rtems_fatal (<br>
        source=source@entry=RTEMS_FATAL_SOURCE_EXCEPTION, <br>
        error=error@entry=34011320)<br>
        at
    ../../../../../../rtems/c/src/../../cpukit/sapi/src/fatal2.c:34<br>
    #2  0x02035f48 in bsp_spurious_handler (trap=263, isf=0x20721d8)<br>
        at
../../../../../../../../rtems/c/src/lib/libbsp/sparc/erc32/startup/spurious.c:131<br>
    #3  0x0205fda4 in dont_fix_pil2 ()<br>
        at
../../../../../../../../rtems/c/src/lib/libbsp/sparc/erc32/../../sparc/shared/irq_asm.S:476<br>
    #4  0x0205fda4 in dont_fix_pil2 ()<br>
        at
../../../../../../../../rtems/c/src/lib/libbsp/sparc/erc32/../../sparc/shared/irq_asm.S:476<br>
    Backtrace stopped: previous frame identical to this frame (corrupt
    stack?)<br>
    (gdb) <br>
    #0  _Terminate
    (the_source=the_source@entry=RTEMS_FATAL_SOURCE_EXCEPTION, <br>
        is_internal=is_internal@entry=false,
    the_error=the_error@entry=34011320)<br>
        at
    ../../../../../../rtems/c/src/../../cpukit/score/src/interr.c:36<br>
    #1  0x0203c454 in rtems_fatal (<br>
        source=source@entry=RTEMS_FATAL_SOURCE_EXCEPTION, <br>
        error=error@entry=34011320)<br>
        at
    ../../../../../../rtems/c/src/../../cpukit/sapi/src/fatal2.c:34<br>
    #2  0x02035f48 in bsp_spurious_handler (trap=263, isf=0x20721d8)<br>
        at
../../../../../../../../rtems/c/src/lib/libbsp/sparc/erc32/startup/spurious.c:131<br>
    #3  0x0205fda4 in dont_fix_pil2 ()<br>
        at
../../../../../../../../rtems/c/src/lib/libbsp/sparc/erc32/../../sparc/shared/irq_asm.S:476<br>
    #4  0x0205fda4 in dont_fix_pil2 ()<br>
        at
../../../../../../../../rtems/c/src/lib/libbsp/sparc/erc32/../../sparc/shared/irq_asm.S:476<br>
    Backtrace stopped: previous frame identical to this frame (corrupt
    stack?)<br>
    (gdb) <br>
    <br>
    <br>
    [1] I am not feeling 100% well and am at home today. So don't have <br>
    access to everything not inclination to hunt.<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 4/1/2014 10:21 AM, Joel Sherrill
      wrote:<br>
    </div>
    <blockquote cite="mid:533AD98D.7050905@oarcorp.com" type="cite">
      <meta content="text/html; charset=ISO-8859-1"
        http-equiv="Content-Type">
      I am confused. Did you build RTEMS with --enable-cxx?<br>
      <br>
      Did you make the linkcmds changes discussed?<br>
      <br>
      In RTEMS, the C++ global constructors are called by the first
      thread <br>
      that executes. Before that, almost anything a constructor is
      allowed<br>
      to do that is not pure computation or memory initialization would
      <br>
      not be valid because the OS and tasking are not running.<br>
      <br>
      There is a call in _Thread_Handler to the constructor execution
      method.<br>
      The name varies by target so it is a macro named INIT. A few lines
      of code<br>
      later the user init task is invoked.<br>
      <br>
      Let's keep this on rtems-users so others benefit from the
      discussion.<br>
      <br>
      --joel<br>
      <div class="moz-cite-prefix">On 3/27/2014 9:00 PM, Thomas (Gmail)
        wrote:<br>
      </div>
      <blockquote
cite="mid:CADY8aTCPuncfZwxwHe0DcA=Co=H9kT64DNFyhkqSpuUEtRwBQQ@mail.gmail.com"
        type="cite">
        <div dir="ltr">On referencing, I misunderstood that _init() call
          not C++ constructor function because there is not C++
          constructor function in crti.o.
          <div><br>
          </div>
          <div>Today, after I make object dump file about elf
            file(cxx_throw.exe), I checked that below objdump
            information. It included ++ constructor as like below;</div>
          <div><br>
          </div>
          <div>
            <div>02066130 <_init>:</div>
            <div> 2066130:<span class="" style="white-space:pre"> </span>9d

              e3 bf a0 <span class="" style="white-space:pre"> </span>save

               %sp, -96, %sp</div>
            <div> 2066134:<span class="" style="white-space:pre"> </span>7f

              fe 6c 60 <span class="" style="white-space:pre"> </span>call

               20012b4 <frame_dummy></div>
            <div> 2066138:<span class="" style="white-space:pre"> </span>01

              00 00 00 <span class="" style="white-space:pre"> </span>nop </div>
            <div> 206613c:<span class="" style="white-space:pre"> </span>7f

              ff e8 99 <span class="" style="white-space:pre"> </span>call

               20603a0 <__do_global_ctors_aux></div>
            <div> 2066140:<span class="" style="white-space:pre"> </span>01

              00 00 00 <span class="" style="white-space:pre"> </span>nop </div>
            <div> 2066144:<span class="" style="white-space:pre"> </span>81

              e8 00 00 <span class="" style="white-space:pre"> </span>restore </div>
            <div> 2066148:<span class="" style="white-space:pre"> </span>81

              c3 e0 08 <span class="" style="white-space:pre"> </span>retl </div>
            <div> 206614c:<span class="" style="white-space:pre"> </span>01

              00 00 00 <span class="" style="white-space:pre"> </span>nop </div>
          </div>
          <div><br>
          </div>
          <div>I am sorry for my misunderstanding.</div>
          <div><br>
          </div>
          <div>Best Regards</div>
        </div>
        <div class="gmail_extra"><br>
          <br>
          <div class="gmail_quote">2014-03-28 10:19 GMT+09:00 Thomas
            (Gmail) <span dir="ltr"><<a moz-do-not-send="true"
                href="mailto:thomas73.kim@gmail.com" target="_blank">thomas73.kim@gmail.com</a>></span>:<br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div dir="ltr">
                <div>Please check that my modification is correct.</div>
                <div><br>
                </div>
                I modified linkcmds.base according to your comment.
                <div> <br>
                </div>
                <div>(Before)</div>
                <div>
                  <div>    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o )
                    .ctors))</div>
                  <div>    KEEP (*(SORT(.ctors.*)))</div>
                  <div>    KEEP (*(.ctors))</div>
                  <div>    KEEP (*crtbegin.o(.dtors))</div>
                  <div>    KEEP (*crtbegin?.o(.dtors))</div>
                  <div>    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o )
                    .dtors))</div>
                  <div>    KEEP (*(SORT(.dtors.*)))</div>
                  <div>    KEEP (*(.dtors))</div>
                </div>
                <div><br>
                </div>
                <div>(After)<br>
                </div>
                <div>
                  <div>    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o )
                    .ctors))</div>
                  <div>    KEEP (*(SORT(.ctors.*)))</div>
                  <div>    KEEP (*(.ctors*))</div>
                  <div>    KEEP (*crtbegin.o(.dtors))</div>
                  <div>    KEEP (*crtbegin?.o(.dtors))</div>
                  <div>    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o )
                    .dtors))</div>
                  <div>    KEEP (*(SORT(.dtors.*)))</div>
                  <div>    KEEP (*(.dtors*))</div>
                </div>
                <div><br>
                </div>
                <div>Also, I compared map file.</div>
                <div><br>
                </div>
                <div>(Before)</div>
                <div>
                  <div> *(.ctors)</div>
                  <div> .ctors         0x0206040c        0x4
                    /opt/rtems-4.11/lib/gcc/sparc-rtems4.11/4.8.2/crtend.o</div>
                  <div> *crtbegin.o(.dtors)</div>
                  <div> .dtors         0x02060410        0x4
                    /opt/rtems-4.11/lib/gcc/sparc-rtems4.11/4.8.2/crtbegin.o</div>
                  <div> *crtbegin?.o(.dtors)</div>
                  <div> *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)</div>
                  <div> *(SORT(.dtors.*))</div>
                  <div> *(.dtors)</div>
                </div>
                <div><br>
                </div>
                <div>(After)<br>
                </div>
                <div>
                  <div>*(.ctors*)</div>
                  <div> .ctors         0x0206040c        0x4
                    /opt/rtems-4.11/lib/gcc/sparc-rtems4.11/4.8.2/crtend.o</div>
                  <div> *crtbegin.o(.dtors)</div>
                  <div> .dtors         0x02060410        0x4
                    /opt/rtems-4.11/lib/gcc/sparc-rtems4.11/4.8.2/crtbegin.o</div>
                  <div> *crtbegin?.o(.dtors)</div>
                  <div> *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)</div>
                  <div> *(SORT(.dtors.*))</div>
                  <div> *(.dtors*)</div>
                  <div> </div>
                </div>
                <div>Best Regards</div>
                <div>
                  <div class="gmail_extra"><br>
                    <br>
                    <div class="gmail_quote">2014-03-28 2:00 GMT+09:00
                      Joel Sherrill <span dir="ltr"><<a
                          moz-do-not-send="true"
                          href="mailto:joel.sherrill@oarcorp.com"
                          target="_blank">joel.sherrill@oarcorp.com</a>></span>:<br>
                      <blockquote class="gmail_quote" style="margin:0px
                        0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
                        <div bgcolor="#FFFFFF" text="#000000"> I am out
                          of the country and teaching this week. Trying
                          adding an<br>
                          "*" after ctors and before the parentheses.
                          Ditto for dtors so it wild<br>
                          card matches.<br>
                          <br>
                          Look at how .text has a * on it <br>
                          <div>On 3/27/2014 10:25 AM, Thomas (Gmail)
                            wrote:<br>
                          </div>
                          <blockquote type="cite">
                            <div dir="ltr">I am tring to compare
                              linkcmd.base and toolchain's
                              elf32_sparc.x.
                              <div>But, I am difficult to modify
                                linkcmd.base for this.</div>
                              <div><br>
                              </div>
                              <div>Please could you send to me the
                                revised linkcmd.base file ?</div>
                              <div><br>
                              </div>
                            </div>
                            <div class="gmail_extra"><br>
                              <br>
                              <div class="gmail_quote">2014-03-27 18:18
                                GMT+09:00 Joel Sherrill <span dir="ltr"><<a
                                    moz-do-not-send="true"
                                    href="mailto:joel.sherrill@oarcorp.com"
                                    target="_blank">joel.sherrill@oarcorp.com</a>></span>:<br>
                                <blockquote class="gmail_quote"
                                  style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
                                  <div bgcolor="#FFFFFF" text="#000000">
                                    libgcc2 is already in the toolset.
                                    This almost 100% certainly is a
                                    small<br>
                                    bug in
                                    c/src/lib/libbsp/sparc/shared/startup/linkcmds.base. 
                                    Look <br>
                                    at how the .ctors are referenced in
                                    the files elf32_sparc.x* installed<br>
                                    as part of the toolset in
                                    $prefix/sparc-rtems4.11/lib/ldscripts.
                                    They<br>
                                    have "." and a "*" in the KEEP
                                    lines. I don't think we have that.<br>
                                    <br>
                                    The problem was almost certainly
                                    introduced with function sections<br>
                                    being used and I missed a wildcard
                                    on the ctor/dtor lines.<br>
                                    <br>
                                    <div>On 3/27/2014 3:04 AM, Thomas
                                      (Gmail) wrote:<br>
                                    </div>
                                    <blockquote type="cite">
                                      <div dir="ltr">On referencing, I
                                        am a beginner regarding this.
                                        <div><br>
                                        </div>
                                        <div>As I know from googling
                                          information, name of the
                                          section for constructor is in
                                          .ctors section in
                                          linkcmds.base.</div>
                                        <div>below reference code is
                                          from
                                          gcc-4.8.2/libgcc/libgcc2.c</div>
                                        <div>because __do_global_ctors()
                                          function is in libgcc2.c, I
                                          tried to add libgcc.a in rtems
                                          building environment. but, I
                                          didn't complete.</div>
                                        <div><br>
                                        </div>
                                        <div>< libgcc2.c ></div>
                                        <div>
                                          <div>----------------------------------------------------------------------------------------------------</div>
                                          <div>/* Run all the global
                                            destructors on exit from the
                                            program.  */</div>
                                          <div>void<br>
                                          </div>
                                          <div>__do_global_ctors (void)</div>
                                          <div>{</div>
                                          <div>#ifdef
                                            EH_FRAME_SECTION_NAME</div>
                                          <div>  {</div>
                                          <div>    static struct object
                                            object;</div>
                                          <div>    __register_frame_info
                                            (__EH_FRAME_BEGIN__,
                                            &object);</div>
                                          <div>  }</div>
                                          <div>#endif</div>
                                          <div>  DO_GLOBAL_CTORS_BODY;</div>
                                          <div>  atexit
                                            (__do_global_dtors);</div>
                                          <div>}</div>
                                          <div>-------------------------------------------------------------------------------------<br>
                                          </div>
                                          <div><br>
                                          </div>
                                        </div>
                                        <div>< gbl-ctors.h></div>
                                        <div>-------------------------------------------------------------------------------------</div>
                                        <div>
                                          <pre><span style="font-style:italic;color:rgb(178,34,34)">/* Some systems use a different strategy for finding the ctors.
   For example, svr3.  */</span>
#<span style="font-weight:bold;color:rgb(95,158,160)">ifndef</span> <span style="font-weight:bold;color:rgb(184,134,11)">DO_GLOBAL_CTORS_BODY</span>
#<span style="font-weight:bold;color:rgb(95,158,160)">define</span> <span style="font-weight:bold;color:rgb(184,134,11)">DO_GLOBAL_CTORS_BODY</span>                                                \
<span style="font-weight:bold;color:rgb(160,32,240)">do</span> {                                                                  \
  <span style="font-weight:bold;color:rgb(34,139,34)">unsigned</span> <span style="font-weight:bold;color:rgb(34,139,34)">long</span> nptrs = (<span style="font-weight:bold;color:rgb(34,139,34)">unsigned</span> <span style="font-weight:bold;color:rgb(34,139,34)">long</span>) __CTOR_LIST__[0];           \
  <span style="font-weight:bold;color:rgb(34,139,34)">unsigned</span> i;                                                          \
  <span style="font-weight:bold;color:rgb(160,32,240)">if</span> (nptrs == (<span style="font-weight:bold;color:rgb(34,139,34)">unsigned</span> <span style="font-weight:bold;color:rgb(34,139,34)">long</span>)-1)                                   \
    <span style="font-weight:bold;color:rgb(160,32,240)">for</span> (nptrs = 0; __CTOR_LIST__[nptrs + 1] != 0; nptrs++);          \
  <span style="font-weight:bold;color:rgb(160,32,240)">for</span> (i = nptrs; i >= 1; i--)                                             \
    __CTOR_LIST__[i] ();                                                \
} <span style="font-weight:bold;color:rgb(160,32,240)">while</span> (0) 
#<span style="font-weight:bold;color:rgb(95,158,160)">endif</span></pre>
                                          <pre><span style="font-family:arial;color:rgb(34,34,34)">-------------------------------------------------------------------------------------</span></pre>
                                        </div>
                                      </div>
                                      <div class="gmail_extra"><br>
                                        <br>
                                        <div class="gmail_quote">2014-03-27

                                          16:33 GMT+09:00 Joel Sherrill
                                          <span dir="ltr"><<a
                                              moz-do-not-send="true"
                                              href="mailto:joel.sherrill@oarcorp.com"
                                              target="_blank">joel.sherrill@oarcorp.com</a>></span>:<br>
                                          <blockquote
                                            class="gmail_quote"
                                            style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
                                            On 3/27/2014 2:30 AM,
                                            Sebastian Huber wrote:<br>
                                            > On 2014-03-27 06:28,
                                            Thomas (Gmail) wrote:<br>
                                            >> I am tring to add
                                            libgcc.a in linking process
                                            for calling
                                            __do_global_ctors().<br>
                                            > If you have to do this
                                            by hand, then your build
                                            process is broken.  How did
                                            you<br>
                                            > get the RTEMS tool
                                            chain?  Which RTEMS version
                                            do you use?<br>
                                            ><br>
                                            >> Please could you
                                            let me know how to add
                                            libgcc.a in RTEMS building
                                            environment ?<br>
                                            >><br>
                                            >> If this approach is
                                            not correct, please let me
                                            know correct how-to-do for
                                            C++<br>
                                            >> global constructor
                                            for Sparc.<br>
                                            > It should work out of
                                            the box.<br>
                                            ><br>
                                            Just out of curiosity what
                                            is the name of the section
                                            that the<br>
                                            constructor is in?<br>
                                            <br>
                                            When I turned on function
                                            sections, it may now be in
                                            .initXXX instead of<br>
                                            just .init.<br>
                                            This would mean that an
                                            asterisk is needed in the
                                            linkcmds.base for init<br>
                                            and fini<br>
                                            to pick up all the methods.
                                            There is a KEEP() around
                                            them which I<br>
                                            thought might<br>
                                            be the issue.<span><font
                                                color="#888888"><br>
                                                <span><font
                                                    color="#888888"><br>
                                                    --<br>
                                                    Joel Sherrill, Ph.D.
                                                                Director
                                                    of Research &
                                                    Development<br>
                                                    <a
                                                      moz-do-not-send="true"
href="mailto:joel.sherrill@OARcorp.com" target="_blank">joel.sherrill@OARcorp.com</a>
                                                           On-Line
                                                    Applications
                                                    Research<br>
                                                    Ask me about RTEMS:
                                                    a free RTOS
                                                     Huntsville AL 35805<br>
                                                    Support Available  
                                                                 (256)
                                                    722-9985<br>
                                                    <br>
                                                  </font></span></font></span></blockquote>
                                          <span><font color="#888888"> </font></span></div>
                                        <span><font color="#888888"> <br>
                                            <span class="HOEnZb"><font
                                                color="#888888"><span><font
                                                    color="#888888"> </font></span></font></span></font></span></div>
                                      <span class="HOEnZb"><font
                                          color="#888888"><span><font
                                              color="#888888"> <span><font
                                                  color="#888888"> </font></span></font></span></font></span></blockquote>
                                    <span class="HOEnZb"><font
                                        color="#888888"><span><font
                                            color="#888888"> <span><font
                                                color="#888888"> <br>
                                                <pre cols="72">-- 
Joel Sherrill, Ph.D.             Director of Research & Development
<a moz-do-not-send="true" href="mailto:joel.sherrill@OARcorp.com" target="_blank">joel.sherrill@OARcorp.com</a>        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985</pre>
                                              </font></span></font></span></font></span></div>
                                  <span class="HOEnZb"><font
                                      color="#888888"><span><font
                                          color="#888888"> </font></span></font></span></blockquote>
                                <span class="HOEnZb"><font
                                    color="#888888"><span><font
                                        color="#888888"> </font></span></font></span></div>
                              <span class="HOEnZb"><font color="#888888"><span><font
                                      color="#888888"> <br>
                                    </font></span></font></span></div>
                            <span class="HOEnZb"><font color="#888888"><span><font
                                    color="#888888"> </font></span></font></span></blockquote>
                          <span class="HOEnZb"><font color="#888888"><span><font
                                  color="#888888"> <br>
                                  <pre cols="72">-- 
Joel Sherrill, Ph.D.             Director of Research & Development
<a moz-do-not-send="true" href="mailto:joel.sherrill@OARcorp.com" target="_blank">joel.sherrill@OARcorp.com</a>        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985</pre>
                                </font></span></font></span></div>
                      </blockquote>
                    </div>
                    <br>
                  </div>
                </div>
              </div>
            </blockquote>
          </div>
          <br>
        </div>
      </blockquote>
      <br>
      <pre class="moz-signature" cols="72">-- 
Joel Sherrill, Ph.D.             Director of Research & Development
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:joel.sherrill@OARcorp.com">joel.sherrill@OARcorp.com</a>        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985</pre>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Joel Sherrill, Ph.D.             Director of Research & Development
<a class="moz-txt-link-abbreviated" href="mailto:joel.sherrill@OARcorp.com">joel.sherrill@OARcorp.com</a>        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985</pre>
  </body>
</html>