dynamic linking (broke in new snap)

Adam Lackorzynski adam at os.inf.tu-dresden.de
Mon Apr 25 23:41:30 CEST 2016


On Fri Apr 22, 2016 at 15:58:41 +0200, ba_f wrote:
> 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:

I tried to reproduce this but did not succeed. Here are the files that I
used. What do you see using those files?

Lib:
Makefile:
PKGDIR		?= ../..
L4DIR		?= $(PKGDIR)/../..

TARGET		= libt1.so
SRC_CC		= lib.cc

include $(L4DIR)/mk/lib.mk

lib.cc:
#include <l4/re/env>
#include <stdio.h>

int myInit();
int myInit(){
  
  L4::Cap<void> server = L4Re::Env::env()->get_cap<void>("123");
  printf("hi\n");
  return !server.is_valid();
} 


Program:
PKGDIR		?= ../..
L4DIR		?= $(PKGDIR)/../..

TARGET		= t1
MODE            = shared
SRC_CC		= main.cc
LIBS += -lt1

include $(L4DIR)/mk/prog.mk

main.cc:
int myInit();
int main()
{
  myInit();
  return 0;
}

> /* 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?

I think not because than there would be an earlier error.

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



Adam
-- 
Adam                 adam at os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/



More information about the l4-hackers mailing list