On 11 Nov 2009, at 11:54, Marco van de Voort wrote:

In our previous episode, Jeppe Johansen said:
This syntax is not possible. The external 'xxx' name 'proc' is there for a reason, for systems with multiple linker namespaces. Moreover there is already an
enormous codebase that uses this.

I don't know if I'm making a fool of myself, but what systems? Skimming
the sources, I couldn't find any mention of it in the ELF writers. An
external symbol will simply be linked to the first occurrence of a
matching symbol in the first shared or static object(unless there's some name mangling going on that I didn't spot). The COFF writer already does
it the way I suggested.

Windows, Darwin, and afaik Solaris.

The library name is not used on Darwin. You also can't tell the static linker that a name should only be looked up in a particular library. It simply goes through all libraries/frameworks. Once it finds a library/framework that contains the symbol, I think it does record in the final binary from which library/framework the symbol comes though (so that if at run time multiple libraries export the symbol, the same one will always be chosen).


Jonas

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to