[fpc-devel] Proposal: Supporting initial references for weakexternal

Jeppe Johansen jepjoh2 at es.aau.dk
Wed Jan 12 19:16:27 CET 2011


Den 12-01-2011 12:42, Jonas Maebe skrev:
>
> On 12 Jan 2011, at 06:29, Jeppe Johansen wrote:
>
>> While trying to find a nice solution for generating interrupt vector 
>> tables on ARM, I found that the usually employed solution is to 
>> generate weak references to symbols, that are initialized to a single 
>> handler. This way an application can override the weak reference, by 
>> declaring a new symbol with the same name. While it's possible to do 
>> that currently by using some external assembler code, I think a 
>> simpler solution could be made by using the weakexternal directive. 
>> The infrastructure is already there, but it's used in a slightly 
>> different way.
>
> How is it normally done in C? At first sight, using the weakexternal 
> directive to /define/ symbols seems like a wrong approach.
>
>
> Jonas
With C it's done using compiler dependent attributes. With gcc you can 
do it using __attribute__((weak,alias("SomeFunction")));. Though often 
it'll just be done using assembler using the .weak and .set/thumb_set 
directives

The weakexternal directive already "defines" a symbol, it will exist at 
runtime, but it might be nil. The only difference is that if you set the 
initial value it'll resolve to something at link time



More information about the fpc-devel mailing list