cvs
Sven Panne
Sven.Panne at informatik.uni-muenchen.de
Thu Sep 25 17:52:10 EDT 2003
Alastair Reid wrote:
> [...] If we linked Hugs using the -rdynamic flag (on Linux), then symbols in
> the Hugs executable would be visible.
>
> From your report of success using getters and setters though, it sounds as
> though functions are always visible but variables are not - so that's not the
> problem.
Strangely enough, adding -rdynamic (or equivalently -Wl,--export-dynamic or -Wl,-E)
solves the problem with the variable on my x86 SuSE 8.2 Linux. From ld's man page:
-E
--export-dynamic
When creating a dynamically linked executable, add all
symbols to the dynamic symbol table. The dynamic sym
bol table is the set of symbols which are visible from
dynamic objects at run time.
If you do not use this option, the dynamic symbol
table will normally contain only those symbols which
are referenced by some dynamic object mentioned in the
link.
If you use "dlopen" to load a dynamic object which
needs to refer back to the symbols defined by the pro
gram, rather than some other dynamic object, then you
will probably need to use this option when linking the
program itself.
Reading this and looking at the output of "objdump -T hugs" with and without -rdynamic,
I don't even understand why the getter/setter approach works. %-]
> [...] In conclusion, I think you should not try to push harder to access the
> variable directly, that you should use foreign import to access getter/setter
> functions, and that we should consider adding the getter/setter functions to
> HugsAPI if we run into portability problems.
OK, I'll proceed as you propose...
Cheers,
S.
More information about the Cvs-libraries
mailing list