Use weak functions in the RTEMS core?

Sebastian Huber sebastian.huber at embedded-brains.de
Thu Apr 9 04:53:47 UTC 2020


On 09/04/2020 03:32, Chris Johns wrote:

> On 2020-04-09 03:43, Sebastian Huber wrote:
>> On 08/04/2020 19:34, Jonathan Brandmeyer wrote:
>>> Instead of treating weak references as a single level of 
>>> indirection, I think you have to treat them as a single overridable 
>>> interface.  In a dynamically-linked application, we might try to 
>>> perform an override using the LD_PRELOAD feature. But in a 
>>> statically-linked application we have to do it differently.  The 
>>> overriding archive must be named in full, and it must be named as an 
>>> object to be linked instead of a library to be searched.  
>>> Furthermore, an interface can have only one override that ends up in 
>>> the linked application.
>> Yes, you can only have one strong implementation, otherwise you get 
>> multiple definition errors.
>
> I have only ever considered weak references as an overridable 
> interface within a user's application and not layered within RTEMS 
> itself. I am not sure about automatic indirection within an archive.
Yes, this is one use case. You could use also a normal function in a 
separate file to get something similar.
>
> In the case of different heap allocators why not have confdefs.h 
> select the one we want and manage the indirection with a const table 
> of pointers?

Yes it can be done with new configuration options, however, this would 
be my least favorite choice. I created an example how I would like to 
use weak functions:

https://lists.rtems.org/pipermail/devel/2020-April/059196.html



More information about the devel mailing list