Hello,
while migrating to the latest l4re-snapshot-2015123115, I run into an issue with dynamic linking. The code is tested on an older snapshot and works great, there.
Well, let's look at the simplified libmy.so and its output:
/* my.cc */ #include <stdlib.h> #include <l4/sys/err.h> #include <l4/sys/types.h> #include <l4/re/env> #include <l4/re/util/cap_alloc> #include <l4/cxx/ipc_stream> #include <l4/re/dataspace>
#include "shared.h"
uint32_t myInit(){
L4::Cap<Calc> server = L4Re::Env::env()->get_cap<Calc>("calc_server"); if (!server.is_valid()) { // printf("Could not get server capability!\n"); return 1; } return 0; }
Ned says: Hi World! Ned: loading file: 'rom/my.cfg' Client | Client | : symbol 'l4re_global_env': can't resolve symbol
When there is only one single printf() in myInit() I see this output:
Ned says: Hi World! Ned: loading file: 'rom/my.cfg' Client | Client | : symbol 'memcpy': can't resolve symbol Client | Client | : symbol 'puts': can't resolve symbol Client | Client | : symbol 'abort': can't resolve symbol
Do I miss something in modules.list?
entry my roottask moe rom/my.cfg module ned module l4re module my.cfg module my_server module my_ldloader module libmy.so module libld-l4.so module libl4util.so module libl4sys.so module libl4sys-direct.so module libdl.so module lib4re.so module lib4re-util.so module libc_support_misc.so module libc_be_socket_noop.so module libc_be_l4refile.so module libc_be_l4re.so module libsupc++.so module libuc_c.so