[fpc-devel] Proposal: Supporting initial references for weakexternal
Paul Ishenin
ip at kmiac.ru
Wed Jan 12 07:40:18 CET 2011
12.01.2011 13:21, Jeppe Johansen wrote:
>> a) NoHandler must have the same arguments and calling convention as
>> TestProc?
> With this solution, no. This uses only symbol names
This I don't understand. What happen when I call
DoSomething(1, 'test');
But DoSomething is not resolved and instead
HandleDoSomethingUnresolved() is called? Is there a chance to access my
arguments from that handler or no?
What happen if I pass some argument by reference and expect a result or
do a function call:
Value := CallSomething(); // What Value equal to if CallSomething is not
resolved?
>> b) What happen if NoHandler is not found?
> Then TestProc cannot be resolved to any symbol, and will generate a weak
> undefined reference. Eg. it won't complain about an undefined reference
I don't see where you reference the "weakinitial" symbol in your patch
that's why I'm asking this question. If NoHandler is not referenced it
will be stripped away during the linking process?
Generally I want to have an ability to handle a case where I call an
unresolved symbol but I want to be sure that I receive arguments and my
handler will not be striped from the executable.
I'd better suggest the next syntax:
procedure NoHandler;
begin
end;
procedure TestProc; weakexternal name 'TestProc' set NoHandler;
In this case I'm sure that:
1. NoHandler is a valid identifier which points to a procedure.
2. I can check that NoHandler has compatible with TestProc definition.
3. I can reference NoHandler so it will not be removed away from the
executable.
Although I may be just don't understand your proposal.
Best regards,
Paul Ishenin
More information about the fpc-devel
mailing list