Hi Sebastian,
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
Thanks for your help, I could fix the problem. However, I am wondering whether there is an automated way to insert the mangled symbols? It seems cumbersome to add every symbol by hand.
Best regards,
Simon
Hi Simon,
On 7/6/20 1:49 PM, Simon Himmelbauer wrote:
Hi Sebastian,
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
Thanks for your help, I could fix the problem. However, I am wondering whether there is an automated way to insert the mangled symbols? It seems cumbersome to add every symbol by hand.
Since Genode aims for API stability - especially at the base library level - changes/additions to the base API are taken in a very careful and backward compatible manner. Therefore, the symbol file is currently adjusted by hand. See also the comment within the header of the 'ld' file:
# The original version of this file is based on the output of the # 'tool/abi_symbols' tool with 'ld-<platform>.lib.so' used as argument. # However, this tool was solely used as a starting point for the - now # manually maintained - file.
Regards,
Sebastian