Subject: Re: Dynamic linking is go (again)
To: Jason Thorpe <thorpej@wasabisystems.com>
From: Marcus Comstedt <marcus@mc.pp.se>
List: port-dreamcast
Date: 07/04/2003 17:46:49
Marcus Comstedt <marcus@mc.pp.se> writes:

> [...]  Right now I'm thinking maybe ld will automatically
> add exports of symbols in the main binary if it can see that they are
> being used from a shared object?  That would explain the behaviour,
> but it would be a bit underhanded of ld...  :-)  I'll investigate
> further.

Yup, this seems to be the true explanation.  func2 is the function in
the main binary that is called from the shared object:

Program using dlopen linked without -E:

doreimon:~/sohack% objdump -T prog | grep "g    DF .text"
00400fd0 g    DF .text  0000007c __fixunsdfsi
00401050 g    DF .text  0000006c __fixunssfsi


Program linked against the shared object, but still without -E:

doreimon:~/sohack% objdump -T prog | grep "g    DF .text"
00400fa0 g    DF .text  0000007c __fixunsdfsi
00400e80 g    DF .text  0000005c func2
00401020 g    DF .text  0000006c __fixunssfsi


dlopen program linked with -E:

doreimon:~/sohack% objdump -T prog | grep "g    DF .text"
00400d2c g    DF .text  0000003c _dladdr
00400c70 g    DF .text  0000003c _dlclose
004010b0 g    DF .text  0000007c __fixunsdfsi
00400cac g    DF .text  0000003c _dlsym
00400c34 g    DF .text  0000003c _dlopen
00400ce8 g    DF .text  00000044 _dlerror
00400ab6 g    DF .text  000000ba _start
00400f5c g    DF .text  00000148 main
00400f00 g    DF .text  0000005c func2
00400b8e g    DF .text  000000a6 _rtld_setup
00401130 g    DF .text  0000006c __fixunssfsi


Sneaky...  :-)


  // Marcus