<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<br>
<div class="moz-cite-prefix">On 4/1/2014 3:09 PM, Daniel Hellstrom
wrote:<br>
</div>
<blockquote
cite="mid:782c82de-dcce-456a-90ef-ba6baa039c66@email.android.com"
type="cite">
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
Hi,<br>
<br>
The SPARC v7/v8 traps ends at 255, I dont have RTEMS code in front
of me, perhaps there is a mask of 0x100 added to the trap number
to indicate something.<br>
<br>
</blockquote>
OK. The 0x80 indicates synchronous trap:<br>
<br>
/**<br>
* This macro indicates that @a _trap as a synchronous trap.<br>
*/<br>
#define SPARC_SYNCHRONOUS_TRAP( _trap ) ((_trap) + 256 )<br>
<br>
How about 137 or 0x87 which makes it a type of trap? <br>
<br>
It is happening in classify_object_over_fdes if that helps.<br>
<br>
--joel<br>
<blockquote
cite="mid:782c82de-dcce-456a-90ef-ba6baa039c66@email.android.com"
type="cite">
Daniel<br>
<br>
<div class="gmail_quote">On 1 April 2014 17:44:38 CEST, Joel
Sherrill <a class="moz-txt-link-rfc2396E" href="mailto:joel.sherrill@oarcorp.com"><joel.sherrill@oarcorp.com></a> wrote:
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
0.8ex; border-left: 1px solid rgb(204, 204, 204);
padding-left: 1ex;"> 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"> 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>
</font>
<pre cols="72"><font color="#888888">--
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</font></pre>
</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>
</font>
<pre cols="72"><font color="#888888">--
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</font></pre>
</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 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>
</div>
<br>
-- <br>
Sent from my Android phone with K-9 Mail. Please excuse my
brevity.
</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>