public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
* [ECOS] Re: Building C++ application for eCos on ARM
@ 2013-09-17 14:41 cetoni GmbH - Uwe Kindler
  2013-09-18 13:18 ` Jabran Bhatti
  0 siblings, 1 reply; 7+ messages in thread
From: cetoni GmbH - Uwe Kindler @ 2013-09-17 14:41 UTC (permalink / raw)
  To: ecos-discuss, jabran.tlv

Hi,

we also had an own library that uses stl and we managed to build it for 
eCos uSTL. We did the following

1.
We created an stl compatibility layer: a folder that contains the stl 
include files for eCos:
vector
string
map
...

2.
Each of these include files contains the same content - it simply 
includes ustl_compat.h file

#ifndef ustl_compat_vectorH
#define ustl_compat_vectorH
#include "ustl_compat.h"

#endif

3.
The ustl_compat.h file contains the following code:

#ifndef ustl_compatH
#define ustl_compatH
#include <ustl.h>

#define std ustl

#endif // ustl_compatH


So it simply includes the ustl.h header file and defines the 
preprocessor macro std. So each occurence of std::vector will be 
replaced by ustl::vector

This worked for us and we could compile the library.






-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ECOS] Re: Building C++ application for eCos on ARM
  2013-09-17 14:41 [ECOS] Re: Building C++ application for eCos on ARM cetoni GmbH - Uwe Kindler
@ 2013-09-18 13:18 ` Jabran Bhatti
  2013-09-18 17:14   ` Uwe Kindler
  0 siblings, 1 reply; 7+ messages in thread
From: Jabran Bhatti @ 2013-09-18 13:18 UTC (permalink / raw)
  To: cetoni GmbH - Uwe Kindler; +Cc: eCos Discussion

Hello John/cetoni,

Thanks for your replies.

* I tried the stl compatibility layer solution and all goes well until
I get the following error:

/usr/local/include/ptlib/critsec.h:37:30: fatal error:
ext/atomicity.h: No such file or directory

It appears that the ptlib library also requires header files that are
actually extensions of STL (header files in the folder ext/). These
extensions are not defined in ustl, which means this solution will not
work. Am I right?

* I also tried to build a toolchain including Erik Aagaard Knudsen's
libstdc++ for eCos (as described in the file
eCos_libstdcxx_compatibility/libstdcxx_compatibility.eak). Here, I
encountered the following problem:  when configuring GCC (4.3.2.), I
get a warning that most of the options such as --enable-languages,
--with-gnu-as, --with-gnu-ld, --with-newlib,... are not recognized.
When i try to build and install GCC next, I get a whole bunch of
assembler messages as follows:

/usr/src/gcc-4.3.2/libiberty/regex.c: In function ‘xregerror’:

/usr/src/gcc-4.3.2/libiberty/regex.c:8089: warning: implicit
declaration of function ‘mempcpy’

/usr/src/gcc-4.3.2/libiberty/regex.c:8089: warning: incompatible
implicit declaration of built-in function ‘mempcpy’

/tmp/ccNe5Dme.s: Assembler messages:

/tmp/ccNe5Dme.s:5991: Error: r13 not allowed here -- `lsr r3,sp,#3'

/tmp/ccNe5Dme.s:6498: Error: r13 not allowed here -- `rsb sp,r3,sp'

/tmp/ccNe5Dme.s:6500: Error: r13 not allowed here -- `lsr r0,sp,#3'

I think these errors might be caused by a conflict between my native
GCC compiler (4.8) and gcc-4.3.2.
So I tried to install gcc-4.3.2 on my machine (32-bit ubuntu 12.04)
from source (since it's no longer available on aptitude). Here, I
encountered a known bug in the linker step
(https://bugs.launchpad.net/ubuntu/+source/binutils/+bug/738098). The
workaround described here didn't work for me.

What do you guys think?

2013/9/17 cetoni GmbH - Uwe Kindler <uwe.kindler@cetoni.de>:
> Hi,
>
> we also had an own library that uses stl and we managed to build it for eCos
> uSTL. We did the following
>
> 1.
> We created an stl compatibility layer: a folder that contains the stl
> include files for eCos:
> vector
> string
> map
> ...
>
> 2.
> Each of these include files contains the same content - it simply includes
> ustl_compat.h file
>
> #ifndef ustl_compat_vectorH
> #define ustl_compat_vectorH
> #include "ustl_compat.h"
>
> #endif
>
> 3.
> The ustl_compat.h file contains the following code:
>
> #ifndef ustl_compatH
> #define ustl_compatH
> #include <ustl.h>
>
> #define std ustl
>
> #endif // ustl_compatH
>
>
> So it simply includes the ustl.h header file and defines the preprocessor
> macro std. So each occurence of std::vector will be replaced by ustl::vector
>
> This worked for us and we could compile the library.
>
>
>
>
>

--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ECOS] Re: Building C++ application for eCos on ARM
  2013-09-18 13:18 ` Jabran Bhatti
@ 2013-09-18 17:14   ` Uwe Kindler
  0 siblings, 0 replies; 7+ messages in thread
From: Uwe Kindler @ 2013-09-18 17:14 UTC (permalink / raw)
  To: Jabran Bhatti; +Cc: eCos Discussion

Hi,

ext/atomicity.h is a GCC specific extension of the STL library - so it is not supported by ustl. You could try to implement the functionality provided by atomicity.h header by yourself - but most likely you will run into the next error afterwards caused by the next missing file that is GCC specific.

Maybe you should switch to an embedded Linux instead of eCos if this is possible. Then you have full STL support. If you do not develop a consumer product where every cent counts, a Linux might be the better choice?

Kind regards, Uwe



Am 18.09.2013 15:18, schrieb Jabran Bhatti:
> Hello John/cetoni,
>
> Thanks for your replies.
>
> * I tried the stl compatibility layer solution and all goes well until
> I get the following error:
>
> /usr/local/include/ptlib/critsec.h:37:30: fatal error:
> ext/atomicity.h: No such file or directory
>
> It appears that the ptlib library also requires header files that are
> actually extensions of STL (header files in the folder ext/). These
> extensions are not defined in ustl, which means this solution will not
> work. Am I right?
>
> * I also tried to build a toolchain including Erik Aagaard Knudsen's
> libstdc++ for eCos (as described in the file
> eCos_libstdcxx_compatibility/libstdcxx_compatibility.eak). Here, I
> encountered the following problem:  when configuring GCC (4.3.2.), I
> get a warning that most of the options such as --enable-languages,
> --with-gnu-as, --with-gnu-ld, --with-newlib,... are not recognized.
> When i try to build and install GCC next, I get a whole bunch of
> assembler messages as follows:
>
> /usr/src/gcc-4.3.2/libiberty/regex.c: In function ‘xregerror’:
>
> /usr/src/gcc-4.3.2/libiberty/regex.c:8089: warning: implicit
> declaration of function ‘mempcpy’
>
> /usr/src/gcc-4.3.2/libiberty/regex.c:8089: warning: incompatible
> implicit declaration of built-in function ‘mempcpy’
>
> /tmp/ccNe5Dme.s: Assembler messages:
>
> /tmp/ccNe5Dme.s:5991: Error: r13 not allowed here -- `lsr r3,sp,#3'
>
> /tmp/ccNe5Dme.s:6498: Error: r13 not allowed here -- `rsb sp,r3,sp'
>
> /tmp/ccNe5Dme.s:6500: Error: r13 not allowed here -- `lsr r0,sp,#3'
>
> I think these errors might be caused by a conflict between my native
> GCC compiler (4.8) and gcc-4.3.2.
> So I tried to install gcc-4.3.2 on my machine (32-bit ubuntu 12.04)
> from source (since it's no longer available on aptitude). Here, I
> encountered a known bug in the linker step
> (https://bugs.launchpad.net/ubuntu/+source/binutils/+bug/738098). The
> workaround described here didn't work for me.
>
> What do you guys think?
>
> 2013/9/17 cetoni GmbH - Uwe Kindler <uwe.kindler@cetoni.de>:
>> Hi,
>>
>> we also had an own library that uses stl and we managed to build it for eCos
>> uSTL. We did the following
>>
>> 1.
>> We created an stl compatibility layer: a folder that contains the stl
>> include files for eCos:
>> vector
>> string
>> map
>> ...
>>
>> 2.
>> Each of these include files contains the same content - it simply includes
>> ustl_compat.h file
>>
>> #ifndef ustl_compat_vectorH
>> #define ustl_compat_vectorH
>> #include "ustl_compat.h"
>>
>> #endif
>>
>> 3.
>> The ustl_compat.h file contains the following code:
>>
>> #ifndef ustl_compatH
>> #define ustl_compatH
>> #include <ustl.h>
>>
>> #define std ustl
>>
>> #endif // ustl_compatH
>>
>>
>> So it simply includes the ustl.h header file and defines the preprocessor
>> macro std. So each occurence of std::vector will be replaced by ustl::vector
>>
>> This worked for us and we could compile the library.
>>
>>
>>
>>
>>

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ECOS] Re: Building C++ application for eCos on ARM
  2013-09-10 19:13     ` Jabran Bhatti
@ 2013-09-11  8:03       ` John Dallaway
  0 siblings, 0 replies; 7+ messages in thread
From: John Dallaway @ 2013-09-11  8:03 UTC (permalink / raw)
  To: Jabran Bhatti; +Cc: eCos Discussion

Hi Jabran

On 10/09/13 20:13, Jabran Bhatti wrote:

> So I had a look at the uSTL package and it indeed incorporates most
> C++ STL features.
> The problem is, however, that I am using an external (open source)
> library. That library has been built using STL, i.e., the header and
> source files are filled with STL header file includes and namespace
> 'std::' references. It is a rather complex task to adjust each of the
> these files.

You might consider a scripted global string substitution "std::" ->
"ustl::" as part of your build system. Otherwise, I suggest you look at
Erik Aagaard Knudsen's work on libstdc++ for eCos. Ref:

  http://ecos.sourceware.org/ml/ecos-discuss/2011-09/msg00023.html

I hope this helps...

John Dallaway
eCos maintainer
http://www.dallaway.org.uk/john

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ECOS] Re: Building C++ application for eCos on ARM
  2013-09-02 14:18   ` Jabran Bhatti
@ 2013-09-10 19:13     ` Jabran Bhatti
  2013-09-11  8:03       ` John Dallaway
  0 siblings, 1 reply; 7+ messages in thread
From: Jabran Bhatti @ 2013-09-10 19:13 UTC (permalink / raw)
  To: John Dallaway; +Cc: eCos Discussion

Hi,

So I had a look at the uSTL package and it indeed incorporates most
C++ STL features.
The problem is, however, that I am using an external (open source)
library. That library has been built using STL, i.e., the header and
source files are filled with STL header file includes and namespace
'std::' references. It is a rather complex task to adjust each of the
these files.

As an alternative, would it be possible to compile the STL library
using the original source code along with the eCos application? Does
anyone have any experience with compilation of the STL library from
scratch?

2013/9/2 Jabran Bhatti <jabran.tlv@gmail.com>:
> Hi John,
>
> Thanks for your answer, I will see what I can do with the uSTL library
> and keep you posted.
>
> Regards,
>
> Jabran
>
> 2013/8/29 John Dallaway <john@dallaway.org.uk>:
>> Hi Jabran
>>
>> On 29/08/13 15:33, Jabran Bhatti wrote:
>>
>>> I'm looking to build a C++ application for eCos on an ARM processor.
>>> My program requires several standard C++ header files such as vector,
>>> iostream, list, ...
>>>
>>> My question is: how can I achieve this? Does anyone have any
>>> experience building and deploying C++ applications for eCos?
>>
>> Take a look at the eCos uSTL package which provides a size optimized
>> implementation of most aspects of the C++ STL. Ref:
>>
>>   http://ecos.sourceware.org/docs-latest/ref/ustl-overview.html
>>
>> I hope this helps.
>>
>> John Dallaway
>> eCos maintainer
>> http://www.dallaway.org.uk/john

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ECOS] Re: Building C++ application for eCos on ARM
  2013-08-29 16:13 ` [ECOS] " John Dallaway
@ 2013-09-02 14:18   ` Jabran Bhatti
  2013-09-10 19:13     ` Jabran Bhatti
  0 siblings, 1 reply; 7+ messages in thread
From: Jabran Bhatti @ 2013-09-02 14:18 UTC (permalink / raw)
  To: John Dallaway; +Cc: eCos Discussion

Hi John,

Thanks for your answer, I will see what I can do with the uSTL library
and keep you posted.

Regards,

Jabran

2013/8/29 John Dallaway <john@dallaway.org.uk>:
> Hi Jabran
>
> On 29/08/13 15:33, Jabran Bhatti wrote:
>
>> I'm looking to build a C++ application for eCos on an ARM processor.
>> My program requires several standard C++ header files such as vector,
>> iostream, list, ...
>>
>> My question is: how can I achieve this? Does anyone have any
>> experience building and deploying C++ applications for eCos?
>
> Take a look at the eCos uSTL package which provides a size optimized
> implementation of most aspects of the C++ STL. Ref:
>
>   http://ecos.sourceware.org/docs-latest/ref/ustl-overview.html
>
> I hope this helps.
>
> John Dallaway
> eCos maintainer
> http://www.dallaway.org.uk/john

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ECOS] Re: Building C++ application for eCos on ARM
  2013-08-29 14:33 [ECOS] " Jabran Bhatti
@ 2013-08-29 16:13 ` John Dallaway
  2013-09-02 14:18   ` Jabran Bhatti
  0 siblings, 1 reply; 7+ messages in thread
From: John Dallaway @ 2013-08-29 16:13 UTC (permalink / raw)
  To: Jabran Bhatti; +Cc: eCos Discussion

Hi Jabran

On 29/08/13 15:33, Jabran Bhatti wrote:

> I'm looking to build a C++ application for eCos on an ARM processor.
> My program requires several standard C++ header files such as vector,
> iostream, list, ...
> 
> My question is: how can I achieve this? Does anyone have any
> experience building and deploying C++ applications for eCos?

Take a look at the eCos uSTL package which provides a size optimized
implementation of most aspects of the C++ STL. Ref:

  http://ecos.sourceware.org/docs-latest/ref/ustl-overview.html

I hope this helps.

John Dallaway
eCos maintainer
http://www.dallaway.org.uk/john

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-09-18 17:14 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-17 14:41 [ECOS] Re: Building C++ application for eCos on ARM cetoni GmbH - Uwe Kindler
2013-09-18 13:18 ` Jabran Bhatti
2013-09-18 17:14   ` Uwe Kindler
  -- strict thread matches above, loose matches on Subject: below --
2013-08-29 14:33 [ECOS] " Jabran Bhatti
2013-08-29 16:13 ` [ECOS] " John Dallaway
2013-09-02 14:18   ` Jabran Bhatti
2013-09-10 19:13     ` Jabran Bhatti
2013-09-11  8:03       ` John Dallaway

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).