Undefined references when extending Child in repo "Base"

Sebastian Sumpf Sebastian.Sumpf at genode-labs.com
Mon Jul 6 09:37:03 CEST 2020


Hi Simon,

On 7/6/20 8:13 AM, Simon Himmelbauer wrote:
> Hi Genodians,
> 
> I am attempting to extend the class Child (base/include/base/child.h)
> with an additional function. However, when compiling my test program, I
> receive an undefined references error, even though I added the
> implementation to src/lib/base/child.cc. My observation seems to be that
> the generated object file does not get linked into the executable but
> calling any other Child-related function works fine.
> 
> My child.h looks pretty much like this:
> 
> class Genode::Child : .... {
> 
> ....
> 
> void test_print();
> 
> }
> 
> 
> and in child.cc:
> 
> void Child::test_print() {
> 
>     log(__PRETTY_FUNCTION__);
> 
> }
> 
> Is there anything I am overseeing? Thanks in advance!

In case you want to call 'Child::test_print()' from outside of the base
library (e.g., a dynamically linked program), you need to add the
mangled 'Child::test_print' symbol to the Genode base library symbol
file [1]. This way the dynamic linker can find and export the function.

[1] repos/base/lib/symbols/ld

Regards,

Sebastian



-- 
Sebastian Sumpf
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