<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
The problem appears to be a missing "KEEP" directive in the<br>
linkcmds shared across the sparc BSPs.<br>
<br>
I proved this by reverting the patch to do per function/variable<br>
sections. <br>
<br>
The long term fix is to see what sections have KEEP() in <br>
$prefix/sparc-rtems4.11/lib/ldscripts and see which one was<br>
missed in the RTEMS version of this.<br>
<br>
But this patch is a short term fix<br>
<br>
diff --git a/c/src/lib/libbsp/sparc/erc32/make/custom/erc32.cfg
b/c/src/lib/libb<br>
index 2859372..3ee9ca8 100644<br>
--- a/c/src/lib/libbsp/sparc/erc32/make/custom/erc32.cfg<br>
+++ b/c/src/lib/libbsp/sparc/erc32/make/custom/erc32.cfg<br>
@@ -13,6 +13,6 @@ CPU_CFLAGS = -mcpu=cypress<br>
<br>
# optimize flag: typically -O2<br>
CFLAGS_OPTIMIZE_V = -O2 -g<br>
-CFLAGS_OPTIMIZE_V += -ffunction-sections -fdata-sections<br>
+# CFLAGS_OPTIMIZE_V += -ffunction-sections -fdata-sections<br>
<br>
-LDFLAGS = -Wl,--gc-sections<br>
+# LDFLAGS = -Wl,--gc-sections<br>
<br>
<div class="moz-cite-prefix">On 4/2/2014 9:27 AM, Thomas Kim wrote:<br>
</div>
<blockquote
cite="mid:CADY8aTBok1bHsL=qsXew_TT+hb2OmG-hNbc177Sz=T1ivgpEXQ@mail.gmail.com"
type="cite">
<div dir="ltr">Hi,
<div><br>
</div>
<div>I didn't use --enable_cxx option because this option is C++
class API for rtems native c api.</div>
<div>Is it correct ?</div>
<div>Also, the reason about address unalignment is that the base
address pointer for eh_frame is located on ctor_list.
ctor_list is used for C++ global constructor.</div>
<div><br>
</div>
<div>After I modifed linkcmd.base for sis, eh_frame is
generated. but, there is still a problem in
classify_object_over_fdes() because CIE information is not
correct.</div>
<div><br>
</div>
<div>If correct eh_frame section is generated, maybe, C++ throw
handler will be worked.</div>
<div><br>
</div>
<div>If you have any idea for this, please let me know that.</div>
<div><br>
</div>
<div>Best Regards,</div>
<div>Thomas </div>
<div> </div>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2014-04-02 6:19 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:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
On 4/1/2014 4:10 PM, Cláudio Silva wrote:<br>
> If you are receiving trap 263 it should mean that you
are receiving<br>
> trap 7 when subtracted with the synchronous bit. Trap 7
is memory<br>
> address not aligned in sis?<br>
It is and all SPARC BSPs use the same linkcmds.<br>
<br>
This may be dereferencing a special section which is not
aligned<br>
enough. C++ has<br>
a number of them. The question is:<br>
<br>
What does the method classify_object_over_fdes() really
do?<br>
<br>
Once we know the section(s) it uses, aligning it is easy.<br>
<br>
--joel<br>
> .<br>
> On Tue, Apr 1, 2014 at 9:36 PM, Joel Sherrill <<a
moz-do-not-send="true"
href="mailto:joel.sherrill@oarcorp.com">joel.sherrill@oarcorp.com</a>>
wrote:<br>
>> On 4/1/2014 3:09 PM, Daniel Hellstrom wrote:<br>
>><br>
>> Hi,<br>
>><br>
>> The SPARC v7/v8 traps ends at 255, I dont have
RTEMS code in front of me,<br>
>> perhaps there is a mask of 0x100 added to the trap
number to indicate<br>
>> something.<br>
>><br>
>> 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>
>><br>
>> Daniel<br>
>><br>
>> On 1 April 2014 17:44:38 CEST, Joel Sherrill <<a
moz-do-not-send="true"
href="mailto:joel.sherrill@oarcorp.com">joel.sherrill@oarcorp.com</a>><br>
>> wrote:<br>
>>> 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:<br>
>>>
/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,<br>
>>> 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,<br>
>>> 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<br>
>>>
../../../../../../../../rtems/c/src/lib/libbsp/sparc/erc32/startup/spurious.c:131<br>
>>> #3 0x0205fda4 in dont_fix_pil2 ()<br>
>>> at<br>
>>>
../../../../../../../../rtems/c/src/lib/libbsp/sparc/erc32/../../sparc/shared/irq_asm.S:476<br>
>>> #4 0x0205fda4 in dont_fix_pil2 ()<br>
>>> at<br>
>>>
../../../../../../../../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,<br>
>>> 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<br>
>>>
../../../../../../../../rtems/c/src/lib/libbsp/sparc/erc32/startup/spurious.c:131<br>
>>> #3 0x0205fda4 in dont_fix_pil2 ()<br>
>>> at<br>
>>>
../../../../../../../../rtems/c/src/lib/libbsp/sparc/erc32/../../sparc/shared/irq_asm.S:476<br>
>>> #4 0x0205fda4 in dont_fix_pil2 ()<br>
>>> at<br>
>>>
../../../../../../../../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>
>>> On 4/1/2014 10:21 AM, Joel Sherrill wrote:<br>
>>><br>
>>> 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>
>>> On 3/27/2014 9:00 PM, Thomas (Gmail) wrote:<br>
>>><br>
>>> On referencing, I misunderstood that _init()
call not C++ constructor<br>
>>> function because there is not C++ constructor
function in crti.o.<br>
>>><br>
>>> Today, after I make object dump file about elf
file(cxx_throw.exe), I<br>
>>> checked that below objdump information. It
included ++ constructor as like<br>
>>> below;<br>
>>><br>
>>> 02066130 <_init>:<br>
>>> 2066130: 9d e3 bf a0 save %sp, -96, %sp<br>
>>> 2066134: 7f fe 6c 60 call 20012b4
<frame_dummy><br>
>>> 2066138: 01 00 00 00 nop<br>
>>> 206613c: 7f ff e8 99 call 20603a0
<__do_global_ctors_aux><br>
>>> 2066140: 01 00 00 00 nop<br>
>>> 2066144: 81 e8 00 00 restore<br>
>>> 2066148: 81 c3 e0 08 retl<br>
>>> 206614c: 01 00 00 00 nop<br>
>>><br>
>>> I am sorry for my misunderstanding.<br>
>>><br>
>>> Best Regards<br>
>>><br>
>>><br>
>>> 2014-03-28 10:19 GMT+09:00 Thomas (Gmail) <<a
moz-do-not-send="true"
href="mailto:thomas73.kim@gmail.com">thomas73.kim@gmail.com</a>>:<br>
>>>> Please check that my modification is
correct.<br>
>>>><br>
>>>> I modified linkcmds.base according to your
comment.<br>
>>>><br>
>>>> (Before)<br>
>>>> KEEP (*(EXCLUDE_FILE (*crtend.o
*crtend?.o ) .ctors))<br>
>>>> KEEP (*(SORT(.ctors.*)))<br>
>>>> KEEP (*(.ctors))<br>
>>>> KEEP (*crtbegin.o(.dtors))<br>
>>>> KEEP (*crtbegin?.o(.dtors))<br>
>>>> KEEP (*(EXCLUDE_FILE (*crtend.o
*crtend?.o ) .dtors))<br>
>>>> KEEP (*(SORT(.dtors.*)))<br>
>>>> KEEP (*(.dtors))<br>
>>>><br>
>>>> (After)<br>
>>>> KEEP (*(EXCLUDE_FILE (*crtend.o
*crtend?.o ) .ctors))<br>
>>>> KEEP (*(SORT(.ctors.*)))<br>
>>>> KEEP (*(.ctors*))<br>
>>>> KEEP (*crtbegin.o(.dtors))<br>
>>>> KEEP (*crtbegin?.o(.dtors))<br>
>>>> KEEP (*(EXCLUDE_FILE (*crtend.o
*crtend?.o ) .dtors))<br>
>>>> KEEP (*(SORT(.dtors.*)))<br>
>>>> KEEP (*(.dtors*))<br>
>>>><br>
>>>> Also, I compared map file.<br>
>>>><br>
>>>> (Before)<br>
>>>> *(.ctors)<br>
>>>> .ctors 0x0206040c 0x4<br>
>>>>
/opt/rtems-4.11/lib/gcc/sparc-rtems4.11/4.8.2/crtend.o<br>
>>>> *crtbegin.o(.dtors)<br>
>>>> .dtors 0x02060410 0x4<br>
>>>>
/opt/rtems-4.11/lib/gcc/sparc-rtems4.11/4.8.2/crtbegin.o<br>
>>>> *crtbegin?.o(.dtors)<br>
>>>> *(EXCLUDE_FILE(*crtend?.o *crtend.o)
.dtors)<br>
>>>> *(SORT(.dtors.*))<br>
>>>> *(.dtors)<br>
>>>><br>
>>>> (After)<br>
>>>> *(.ctors*)<br>
>>>> .ctors 0x0206040c 0x4<br>
>>>>
/opt/rtems-4.11/lib/gcc/sparc-rtems4.11/4.8.2/crtend.o<br>
>>>> *crtbegin.o(.dtors)<br>
>>>> .dtors 0x02060410 0x4<br>
>>>>
/opt/rtems-4.11/lib/gcc/sparc-rtems4.11/4.8.2/crtbegin.o<br>
>>>> *crtbegin?.o(.dtors)<br>
>>>> *(EXCLUDE_FILE(*crtend?.o *crtend.o)
.dtors)<br>
>>>> *(SORT(.dtors.*))<br>
>>>> *(.dtors*)<br>
>>>><br>
>>>> Best Regards<br>
>>>><br>
>>>><br>
>>>> 2014-03-28 2:00 GMT+09:00 Joel Sherrill
<<a moz-do-not-send="true"
href="mailto:joel.sherrill@oarcorp.com">joel.sherrill@oarcorp.com</a>>:<br>
>>>>> 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>
>>>>> On 3/27/2014 10:25 AM, Thomas (Gmail)
wrote:<br>
>>>>><br>
>>>>> I am tring to compare linkcmd.base and
toolchain's elf32_sparc.x.<br>
>>>>> But, I am difficult to modify
linkcmd.base for this.<br>
>>>>><br>
>>>>> Please could you send to me the revised
linkcmd.base file ?<br>
>>>>><br>
>>>>><br>
>>>>><br>
>>>>> 2014-03-27 18:18 GMT+09:00 Joel
Sherrill <<a moz-do-not-send="true"
href="mailto:joel.sherrill@oarcorp.com">joel.sherrill@oarcorp.com</a>>:<br>
>>>>>> libgcc2 is already in the toolset.
This almost 100% certainly is a<br>
>>>>>> 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>
>>>>>> On 3/27/2014 3:04 AM, Thomas
(Gmail) wrote:<br>
>>>>>><br>
>>>>>> On referencing, I am a beginner
regarding this.<br>
>>>>>><br>
>>>>>> As I know from googling
information, name of the section for<br>
>>>>>> constructor is in .ctors section in
linkcmds.base.<br>
>>>>>> below reference code is from
gcc-4.8.2/libgcc/libgcc2.c<br>
>>>>>> because __do_global_ctors()
function is in libgcc2.c, I tried to add<br>
>>>>>> libgcc.a in rtems building
environment. but, I didn't complete.<br>
>>>>>><br>
>>>>>> < libgcc2.c ><br>
>>>>>><br>
>>>>>>
----------------------------------------------------------------------------------------------------<br>
>>>>>> /* Run all the global destructors
on exit from the program. */<br>
>>>>>> void<br>
>>>>>> __do_global_ctors (void)<br>
>>>>>> {<br>
>>>>>> #ifdef EH_FRAME_SECTION_NAME<br>
>>>>>> {<br>
>>>>>> static struct object object;<br>
>>>>>> __register_frame_info
(__EH_FRAME_BEGIN__, &object);<br>
>>>>>> }<br>
>>>>>> #endif<br>
>>>>>> DO_GLOBAL_CTORS_BODY;<br>
>>>>>> atexit (__do_global_dtors);<br>
>>>>>> }<br>
>>>>>><br>
>>>>>>
-------------------------------------------------------------------------------------<br>
>>>>>><br>
>>>>>> < gbl-ctors.h><br>
>>>>>><br>
>>>>>>
-------------------------------------------------------------------------------------<br>
>>>>>><br>
>>>>>> /* Some systems use a different
strategy for finding the ctors.<br>
>>>>>> For example, svr3. */<br>
>>>>>> #ifndef DO_GLOBAL_CTORS_BODY<br>
>>>>>> #define DO_GLOBAL_CTORS_BODY \<br>
>>>>>> do { \<br>
>>>>>> unsigned long nptrs = (unsigned
long) __CTOR_LIST__[0]; \<br>
>>>>>> unsigned i; \<br>
>>>>>> if (nptrs == (unsigned long)-1)
\<br>
>>>>>> for (nptrs = 0;
__CTOR_LIST__[nptrs + 1] != 0; nptrs++); \<br>
>>>>>> for (i = nptrs; i >= 1; i--)
\<br>
>>>>>> __CTOR_LIST__[i] (); \<br>
>>>>>> } while (0)<br>
>>>>>> #endif<br>
>>>>>><br>
>>>>>><br>
>>>>>>
-------------------------------------------------------------------------------------<br>
>>>>>><br>
>>>>>><br>
>>>>>><br>
>>>>>> 2014-03-27 16:33 GMT+09:00 Joel
Sherrill <<a moz-do-not-send="true"
href="mailto:joel.sherrill@oarcorp.com">joel.sherrill@oarcorp.com</a>>:<br>
>>>>>>><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<br>
>>>>>>>>> __do_global_ctors().<br>
>>>>>>>> If you have to do this by
hand, then your build process is broken.<br>
>>>>>>>> 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<br>
>>>>>>>>> environment ?<br>
>>>>>>>>><br>
>>>>>>>>> If this approach is not
correct, please let me know correct<br>
>>>>>>>>> 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<br>
>>>>>>> of<br>
>>>>>>> just .init.<br>
>>>>>>> This would mean that an
asterisk is needed in the linkcmds.base for<br>
>>>>>>> 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.<br>
>>>>>>><br>
>>>>>>> --<br>
>>>>>>> Joel Sherrill, Ph.D.
Director of Research & Development<br>
>>>>>>> <a class="moz-txt-link-abbreviated" href="mailto:joel.sherrill@OARcorp.com">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>
>>>>>><br>
>>>>>> --<br>
>>>>>> Joel Sherrill, Ph.D.
Director of Research & Development<br>
>>>>>> <a class="moz-txt-link-abbreviated" href="mailto:joel.sherrill@OARcorp.com">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>
>>>>><br>
>>>>> --<br>
>>>>> Joel Sherrill, Ph.D.
Director of Research & Development<br>
>>>>> <a class="moz-txt-link-abbreviated" href="mailto:joel.sherrill@OARcorp.com">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>
>>><br>
>>> --<br>
>>> Joel Sherrill, Ph.D. Director of
Research & Development<br>
>>> <a class="moz-txt-link-abbreviated" href="mailto:joel.sherrill@OARcorp.com">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>
>>><br>
>>> --<br>
>>> Joel Sherrill, Ph.D. Director of
Research & Development<br>
>>> <a class="moz-txt-link-abbreviated" href="mailto:joel.sherrill@OARcorp.com">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>
>> --<br>
>> Sent from my Android phone with K-9 Mail. Please
excuse my brevity.<br>
>><br>
<span class="HOEnZb"><font color="#888888">>><br>
>> --<br>
>> Joel Sherrill, Ph.D. Director of
Research & Development<br>
>> <a class="moz-txt-link-abbreviated" href="mailto:joel.sherrill@OARcorp.com">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>
>><br>
>> _______________________________________________<br>
>> rtems-users mailing list<br>
>> <a moz-do-not-send="true"
href="mailto:rtems-users@rtems.org">rtems-users@rtems.org</a><br>
>> <a moz-do-not-send="true"
href="http://www.rtems.org/mailman/listinfo/rtems-users"
target="_blank">http://www.rtems.org/mailman/listinfo/rtems-users</a><br>
>><br>
<br>
--<br>
Joel Sherrill, Ph.D. Director of Research
& Development<br>
<a class="moz-txt-link-abbreviated" href="mailto:joel.sherrill@OARcorp.com">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></blockquote>
</div>
<br>
</div>
</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>