Re: strange Bug

Björn Döbel <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>
-----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-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.