Use of malloc primitives in Genode

Stefan Kalkowski stefan.kalkowski at ...1...
Wed Mar 16 10:26:13 CET 2011


On 03/15/2011 09:45 PM, Stefan Kalkowski wrote:
> *while looking at Norman's mail*: ok, thats my fault I missed the
> malloc/free implementation in 'mini_c', so it's just about C/C++ linkage
> differences.
> 
> On 03/15/2011 09:27 PM, Amadeo Cuadrado wrote:
>> Thanks Stefan for your answer.
>>
>> Would it be possible to statically link libc into my project?
> 
> With respect to your question: of course, it's possible in general.
> I guess you like to use libc on top of Fiasco.OC, where ldso isn't
> enabled yet? Otherwise I would recommend you to use ldso instead.
> 
> Please try it, by uncommenting the following two lines in
> 'libc/lib/mk/libc.mk':
> 
> SHARED_LIB  = yes
> LD_OPT     += --version-script=$(REP_DIR)/src/lib/libc/Version.def

oh sorry again, I meant commenting these lines out - of course! I think
I was a little bit tired yesterday evening :-)

Regards
Stefan

> 
> Regards
> Stefan
> 
>>
>> Amadeo
>>
>>
>> -----Original Message-----
>> From: Stefan Kalkowski [mailto:stefan.kalkowski at ...1...] 
>> Sent: Tuesday, March 15, 2011 1:16 PM
>> To: genode-main at lists.sourceforge.net
>> Subject: Re: Use of malloc primitives in Genode
>>
>> Hello Amadeo,
>>
>> if you really want to use stdlib's malloc and free, you'll have to link
>> against our 'libc'. The 'mini_c' library you've choosen doesn't provide
>> malloc/free. It's just a small dummy library for the png-library in our
>> demo-repository, that provides a few string-handling functions.
>>
>> If you only need malloc/free without additional libc functionality,
>> there is a simple implementation in our C++ support-library in:
>>
>> base/src/base/cxx/malloc_free.cc
>>
>> which uses the heap-allocator from Genode's base environment. To not
>> clash with the definition of e.g. the implementation in the 'libc' both
>> symbols are hidden after linking the C++ support library, so you cannot
>> use it directly, but it might help you as a starting point, if you don't
>> want to link against whole 'libc'.
>>
>> Regards
>> Stefan
>>
>> On 03/15/2011 08:53 PM, Amadeo Cuadrado wrote:
>>> Hello,
>>>
>>>  
>>>
>>> When I try to build the app below in Genode, the following linking error
>>> happens:
>>>
>>>  
>>>
>>> main.o: In function `main':
>>>
>>> .../main.cc:6: undefined reference to `malloc(unsigned int)'
>>>
>>> .../main.cc:8: undefined reference to `free(void*)'
>>>
>>>  
>>>
>>> What am I missing here? Thanks!
>>>
>>>  
>>>
>>> Amadeo
>>>
>>>  
>>>
>>>  
>>>
>>> ::::::::::::::
>>>
>>> main.cc
>>>
>>> ::::::::::::::
>>>
>>> #include <stdlib.h>
>>>
>>>  
>>>
>>> #define N 10
>>>
>>>  
>>>
>>> int main(void) {
>>>
>>>   int *v = (int *) malloc(N*sizeof(int));
>>>
>>>   for (int i=0; i<N; i++) v[i] = i;
>>>
>>>   free(v);
>>>
>>> }
>>>
>>> ::::::::::::::
>>>
>>> target.mk
>>>
>>> ::::::::::::::
>>>
>>> TARGET = foo
>>>
>>> SRC_CC = main.cc
>>>
>>> LIBS   = cxx env mini_c
>>>
>>>  
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Colocation vs. Managed Hosting
>>> A question and answer guide to determining the best fit
>>> for your organization - today and in the future.
>>> http://p.sf.net/sfu/internap-sfd2d
>>>
>>>
>>>
>>> _______________________________________________
>>> Genode-main mailing list
>>> Genode-main at lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/genode-main
>>
> 

-- 
Stefan Kalkowski
Genode Labs

http://www.genode-labs.com/ · http://genode.org/

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth




More information about the users mailing list