[PATCH] Add support for ELF notes

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Mar 29 15:07:04 UTC 2023


On 28.03.23 23:46, Chris Johns wrote:
> On 29/3/2023 5:36 am, Sebastian Huber wrote:
>> On 28.03.23 09:26, Chris Johns wrote:
>>> On 28/3/2023 6:20 pm, Sebastian Huber wrote:
>>>> On 28.03.23 09:03, Chris Johns wrote:
>>>>> On 28/3/2023 5:48 pm, Sebastian Huber wrote:
>>>>>> On 25.03.23 00:39, Chris Johns wrote:
>>>>>>> On 24/3/2023 7:32 pm, Sebastian Huber wrote:
>>>>>>>> On 23.03.23 20:07, Chris Johns wrote:
>>>>>>>>> On 24/3/2023 3:57 am, Sebastian Huber wrote:
>>>>>>>>>> On 23.03.23 17:52, Will wrote:
>>>>>>>>>>> Great idea to store this information in the executable itself. Does this
>>>>>>>>>>> need
>>>>>>>>>>> a RTEMS_TEST_STATE_LINK_ONLY test state or something similar for
>>>>>>>>>>> minimum.exe?
>>>>>>>>>> With the notes you can build the test. The test runner would look at the
>>>>>>>>>> notes
>>>>>>>>>> and then decide if it makes sense to run the test or not. It could still
>>>>>>>>>> run the
>>>>>>>>>> minimum.exe and see if it terminates.
>>>>>>>>> I welcome notes support. Thanks for adding it.
>>>>>>>>>
>>>>>>>>> How will we control and manage the notes we support?
>>>>>>>> In the new elfnote.h header file there are defines for the note type
>>>>>>>> (domain-specific integer).
>>>>>>> Great.
>>>>>>>
>>>>>>>>> Should we document the top level notes domains (?) with some we control and
>>>>>>>>> restrict and others users can use? For example `note.rtems.test`,
>>>>>>>>> `note.rtems.kernel`, `note.rtems.bsp`, and `note.rtems.user`?
>>>>>>>> The section name doesn't matter. You can divide the number space of the note
>>>>>>>> type for this.
>>>>>>> Does this mean we define the numbers or number ranges or is it left open?
>>>>>>> I am
>>>>>>> not sure I am following this bit.
>>>>>> The patch has this:
>>>>>>
>>>>>> #define ELF_NOTE_RTEMS_TYPE( _index ) ( ( _index ) + 0x10000 )
>>>>>>
>>>>>> We basically have 32-bits available. We could also use something like this:
>>>>>>
>>>>>> #define ELF_NOTE_RTEMS_BASE_TYPE( _index ) ( ( _index ) + 0x10000000 )
>>>>>>
>>>>>> #define ELF_NOTE_RTEMS_TEST_TYPE( _index ) ( ( _index ) + 0x20000000 )
>>>>>>
>>>>>> #define ELF_NOTE_RTEMS_USER_TYPE( _index ) ( ( _index ) + 0x30000000 )
>>>>>>
>>>>>> ...
>>>>>>
>>>>> Nice.
>>>> Maybe we should also encode the data type here, for example:
>>>>
>>>> #define ELF_NOTE_DATA_TYPE_BOOL 0
>>>> #define ELF_NOTE_DATA_TYPE_INT8 1
>>>> #define ELF_NOTE_DATA_TYPE_UINT8 2
>>>> #define ELF_NOTE_DATA_TYPE_INT16 3
>>>> #define ELF_NOTE_DATA_TYPE_UINT16 4
>>>> #define ELF_NOTE_DATA_TYPE_INT32 5
>>>> #define ELF_NOTE_DATA_TYPE_UINT32 6
>>>> #define ELF_NOTE_DATA_TYPE_INT64 7
>>>> #define ELF_NOTE_DATA_TYPE_UINT64 8
>>>> #define ELF_NOTE_DATA_TYPE_FLOAT32 9
>>>> #define ELF_NOTE_DATA_TYPE_FLOAT32 10
>>>> #define ELF_NOTE_DATA_TYPE_FLOAT64 11
>>>> #define ELF_NOTE_DATA_TYPE_FLOAT64 12
>>>> #define ELF_NOTE_DATA_TYPE_STRING 13
>>>> #define ELF_NOTE_DATA_TYPE_BINARY 14
>>>>
>>>> #define ELF_NOTE_RTEMS_BASE_TYPE( _data_type, _index ) \
>>>>     ( ( ( _data_type ) << 28 ) | ( ( _index ) + 0x1000000 ) )
>>>>
>>>> This could be used by the host tool to more easily produce the right JSON data.
>>>>
>>> Good idea. I cannot think of anything else as scoping would tend to reduce to a
>>> new type.
>> Another option would be to add a GNU note type for JSON data. The note
>> description would be an arbitrary JSON string.
> Wooo that is interesting. JSON can be useful in these situations. I like it.

It looks like we are not the only ones needing such a thing. Nick 
Clifton suggested to use this:

https://systemd.io/ELF_PACKAGE_METADATA/

https://sourceware.org/pipermail/binutils/2023-March/126822.html

-- 
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber at embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/


More information about the devel mailing list