strange Bug

Björn Döbel doebel at os.inf.tu-dresden.de
Mon Dec 1 12:36:45 CET 2014


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 30.11.2014 19:59, ba_f wrote:
> Hello,
> 
> 
>> Debugging quickfix: link your program statically to identify the 
>> faulty location.
> 
> Unfortunately, no success neither.
> 
> I made libClients.a link with myClient. Still there is some dynamic
> linking, i couldn't get rid of. And MODE=shared must be set to
> build successfully. Is there a file, listing all files for the
> Linker? Maybe i could check there which .so is needed for
> building.

No .so files are needed for static linking. What error are you getting
if you remove MODE=shared?

> Objdump gives me the following, but i guess that comes from
> MODE=shared:
> 
> NEEDED               libc_be_sig.so NEEDED
> libpthread.so NEEDED               libld-l4.so NEEDED
> libdl.so NEEDED               libc_support_misc.so NEEDED
> libc_be_socket_noop.so NEEDED               lib4re-util.so NEEDED
> libc_be_l4refile.so NEEDED               libc_be_l4re.so NEEDED
> libsupc++.so NEEDED               libuc_c.so NEEDED
> lib4re.so NEEDED               libl4util.so NEEDED
> libl4sys.so
> 
> 
> Anyway...

There are static library equivalents for all those. Sounds like
setting the proper REQUIRES_LIBS in your Makefile should do the trick.

>> Alternative (not recommended before you tried the quickfix):
>> obtain dynamic loading info using the LD_DEBUG environment
>> variable and figure out which library gets mapped to the
>> respective address.
> 
> ...this looks promising.
> 
> But, do you know how to get the output of LD_DEBUG? I run on an
> embedded ARM with UART-output.
> 
> I set 'LD_DEBUG=all' in the Makefile of myClient. Normally, i'd
> specify the output there. E.g. 'LD_DEBUG=all cat'

LD_DEBUG is an environment variable, so specifying it at compile time
in the Makefile is not useful. Instead, add it as an environment
variable to your setup:

L4.default_loader.start( { caps ...},
                         "rom/myProgram",
                         { LD_DEBUG=all }
};

Again, I would go for the static linking route.

Bjoern
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iEYEARECAAYFAlR8UsoACgkQP5ijxgQLUNnbRQCfWjlo/a8AZqRyLF4JIOeoNW97
rF4AoIngrY5dRQZ1TiPjgZ+t2rXo1RyL
=z0Ru
-----END PGP SIGNATURE-----




More information about the l4-hackers mailing list