Re: [PATCH] Add support for ELF notes

2023-03-28 Thread Chris Johns
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 ) + 0x1 )
> 
> We basically have 32-bits available. We could also use something like this:
> 
> #define ELF_NOTE_RTEMS_BASE_TYPE( _index ) ( ( _index ) + 0x1000 )
> 
> #define ELF_NOTE_RTEMS_TEST_TYPE( _index ) ( ( _index ) + 0x2000 )
> 
> #define ELF_NOTE_RTEMS_USER_TYPE( _index ) ( ( _index ) + 0x3000 )
> 
> ...
> 

Nice.

 Do you have any host side tools in mind to access notes apart from the
 standards
 like readefl? Maybe the rtems-exe-info tool could do this?
>>>
>>> Yes, it should be added to this tool.
>>
>> Great. Once we have something merged I can take a look.
>>
>>> I think the most important use case is the
>>> RTEMS tester currently. You can read the notes with the elftools for Python.
>>
>> I could not see an elftools module in the standard cpython support and I have
>> carefully avoided any pipy dependences in user facing tools. We have elf 
>> support
>> in the tool kit so if we can sort something out without needing to add 
>> something
>> else I would prefer it. I think the first thing to do is the get this into
>> rtems.git and then we can address the tooling we need.
> 
> We could add a JSON output to rtems-exe-info which is used by the RTEMS 
> Tester.
> The drawback is that you need a process for each executable.

The exe info tool is fast and yes exporting JSON is a good idea. I have a decent
C++ JSON implementation I am using that can be added to the toolkit and used.

>> We have a GSoC project to sort out the post link stuff that was stripped out
>> when we moved to waf. Could that detail be added as notes? There is something
>> nice about each executable having the needed info and not needing to match an
>> exe with a specific installed configuration set up.
> 
> I think we just have to try it out.

Great.

Chris
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel


Re: [PATCH] Add support for ELF notes

2023-03-28 Thread Sebastian Huber



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 ) + 0x1 )

We basically have 32-bits available. We could also use something like this:

#define ELF_NOTE_RTEMS_BASE_TYPE( _index ) ( ( _index ) + 0x1000 )

#define ELF_NOTE_RTEMS_TEST_TYPE( _index ) ( ( _index ) + 0x2000 )

#define ELF_NOTE_RTEMS_USER_TYPE( _index ) ( ( _index ) + 0x3000 )

...


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 ) + 0x100 ) )

This could be used by the host tool to more easily produce the right 
JSON data.


--
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.hu...@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/
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: [PATCH] Add support for ELF notes

2023-03-28 Thread Chris Johns
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 ) + 0x1 )
>>>
>>> We basically have 32-bits available. We could also use something like this:
>>>
>>> #define ELF_NOTE_RTEMS_BASE_TYPE( _index ) ( ( _index ) + 0x1000 )
>>>
>>> #define ELF_NOTE_RTEMS_TEST_TYPE( _index ) ( ( _index ) + 0x2000 )
>>>
>>> #define ELF_NOTE_RTEMS_USER_TYPE( _index ) ( ( _index ) + 0x3000 )
>>>
>>> ...
>>>
>> 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 ) + 0x100 ) )
> 
> 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.

Chris
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: [PATCH v2] eng: Add register block specification types

2023-03-28 Thread Sebastian Huber

On 28.03.23 07:53, Chris Johns wrote:

On 23/3/2023 3:59 am, Sebastian Huber wrote:

Hello Chris,

I would like to come back to this topic, because it blocks the integration of
the sparc/gr712rc and sparc/gr740 changes we have done for the pre-qualification
activity.

On 27.09.21 02:23, Chris Johns wrote:

On 24/9/21 11:09 pm, Sebastian Huber wrote:

A register block may be used to specify the interface of devices which
use a linear address space.  Register blocks consist of register block

Can we please move away from the "linear address" in the definitions? As stated
previously it only serves a specialized version of a bus and register-block.
What about something like this:

A register block specifies a word addressable set of elements in a device
software is required to access and manipulate. The mechanics software uses to
access a register element in a register-block is defined by the bus-interface.
The software and register may be a direct coupling to the CPU bus as found in a
linear cache coherent memory mapped device or the access may be indirect through
a bus hierarchy that may require more than one software action to complete.
Device and register specifications are independent of the CPU architecture and
connecting bus architectures.

A linear address space is just an address space in which a single integer is
sufficient to address something. So a word addressable set of elements in a
device is a linear address space. In contrast to for example the AArch32 system
register space, which uses a coprocessor index, Opcode_1, CRn, CRm, and
Opcode_2. An address space granule is the smallest block of memory that can be
addressed. This could be a subword depending on what a word is and the bus
system capabilities.

I am sorry I have read and reread this and I do not follow. I do not know if you
are saying the aarch64 cp access and addressing is an example for or a counter
example?


The AArch32 system registers are an example for a not linear or 
segmented address space.




The term "linear address" offers no value. An address bus at any point in a
circuit is are collection of signals wired to the address decoder of a device so
by the nature of how that works it is going to resolve itself to a number and to
be accurate it is a whole number because the concept of negative addressing
would be interesting. The wiring of the interfacing address to a device's
address bus does not have to be 1:1 and it does not need to be continuous in the
external interface's addressing scheme. If linear is saying there is a series of
numbers then again I wonder what the value is. You can view this in datasheets
and code that maps struct to memory mapping devices because reserved (or what
ever they get called) are added. Adding these reserved etc fields is doing
nothing more than making a memory mapped struct work as you hope and I mean
hope. That logic needs a continuous address space.


The register block specification is used to specify a device which 
consists of registers with an address. Each register consists of bit 
fields. We need a name for the address space of the register block 
specification and linear address space is from my point of view the best 
name for an address space in which an address is simply an unsigned 
integer. How would you name it?


The register block specification does not specify a bus system. It just 
transfers what you have documented in a datasheet of a device. I did 
read quite a lot of datasheets and the register block specification 
resulted from this experience. Do you have a datasheet which would be 
difficult to translate into the proposed scheme?


Actually the register block specification for the Gailser IP Library was 
done by translating the PDF


https://www.gaisler.com/products/grlib/grip.pdf

into a text file, parsing the text file with a Python script and then 
generating the specification files:


https://git.rtems.org/rtems-central/tree/spec/dev/grlib/if

This work was reviewed by the ISVV activity:

https://devel.rtems.org/ticket/4842




The offsets in the register block specification are just the offset you find in
the corresponding datasheet.


I know this is just the commit message but I think this should be in the manual.

bus-interface:

A bus interface is the mechanics software uses to access a register word element
in a device. A bus interface specifies the requirements needed by software to
access a register word. It must consider timing, CPU word size to device word
size, byte ordering for word sizes greater than 8bits, cache considerations and
sequencing of multiple software accesses if required.

I would like to see a bus-interface section and the device reference it. It only
needs to cover the type of bus interface you need to specify at this point in
time.

At the moment I just have a header file generator for memory-mapped devices. I
don't think there will be major issues to adopt the generator to output
interfaces for some bus space API.

I think the langua

FreeBSD libefi import -- how to proceed?

2023-03-28 Thread Karel Gardas



  Folks,

I'm using FreeBSD's libefi on my hacked multiboot2 based amd64 BSP which 
I'd like to push for review (at least).


Now, I'd like to prepare libefi for import but I'm still in doubts if to 
do that in:


- as intact form as possible, import even files which will not be used 
in foreseeable future or even ever


- as minimalistic as possible. Include only files really needed by 
RTEMS. Where making compilation issues #ifdef __rtems__ as usual.


What exactly I need to import is:

https://github.com/freebsd/freebsd-src/tree/main/stand/efi/include
https://github.com/freebsd/freebsd-src/tree/main/stand/efi/libefi

In 'include' I'd like to omit risc/arm/arm64 platform specific 
subdirectories for now.


Anyway, plan is to put both those directories into 
bsps/shared/freebsd/stand/efi to mimic perfectly location in FBSD tree 
and to have them ready to be reusable later for arm64 and risc-v BSPs 
consumption.



Thanks!
Karel
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel


GSoC Proposal for Code Formatting and Style Check for RTEMS score

2023-03-28 Thread Hardik Sethi
Hey there, the draft for my GSoC 2023 proposal is ready. It would be very
helpful if anyone could review my proposal. All your suggestions are
welcome.
I have attached the link to my proposal below and opened it for
suggestions. If there is any issue with the link, please do let me know.

https://docs.google.com/document/d/11nEfcVgS7XvwPSW3VEreohFeaT9vP8dLNb41sz420UA/edit?usp=sharing

-- 
*Thanks & Regards*
*Hardik Sethi*
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: [PATCH] Add support for ELF notes

2023-03-28 Thread Sebastian Huber



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 ) + 0x1 )

We basically have 32-bits available. We could also use something like this:

#define ELF_NOTE_RTEMS_BASE_TYPE( _index ) ( ( _index ) + 0x1000 )

#define ELF_NOTE_RTEMS_TEST_TYPE( _index ) ( ( _index ) + 0x2000 )

#define ELF_NOTE_RTEMS_USER_TYPE( _index ) ( ( _index ) + 0x3000 )

...


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 ) + 0x100 ) )

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. For example:


diff --git a/binutils/readelf.c b/binutils/readelf.c
index cafba9a4f56..1d977376b77 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -20261,6 +20261,10 @@ print_gnu_note (Filedata * filedata, 
Elf_Internal_Note *pnote)

   print_gnu_property_note (filedata, pnote);
   break;

+case NT_GNU_JSON:
+  print_json_note (filedata, pnote);
+  break;
+
 default:
   /* Handle unrecognised types.  An error message should have 
already been
 created by get_gnu_elf_note_type(), so all that we need to do 
is to

diff --git a/include/elf/common.h b/include/elf/common.h
index ebcd8f9e82c..c5671447074 100644
--- a/include/elf/common.h
+++ b/include/elf/common.h
@@ -805,6 +805,7 @@
 #define NT_GNU_BUILD_ID3   /* Generated by ld 
--build-id.  */

 #define NT_GNU_GOLD_VERSION4   /* Generated by gold.  */
 #define NT_GNU_PROPERTY_TYPE_0  5  /* Generated by gcc.  */
+#define NT_GNU_JSON6   /* Contains arbitrary JSON data.  */

 #define NT_GNU_BUILD_ATTRIBUTE_OPEN0x100
 #define NT_GNU_BUILD_ATTRIBUTE_FUNC0x101

--
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.hu...@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/
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: [PATCH] Add support for ELF notes

2023-03-28 Thread Chris Johns
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 ) + 0x1 )
>
> We basically have 32-bits available. We could also use something like 
> this:
>
> #define ELF_NOTE_RTEMS_BASE_TYPE( _index ) ( ( _index ) + 0x1000 )
>
> #define ELF_NOTE_RTEMS_TEST_TYPE( _index ) ( ( _index ) + 0x2000 )
>
> #define ELF_NOTE_RTEMS_USER_TYPE( _index ) ( ( _index ) + 0x3000 )
>
> ...
>
 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 ) + 0x100 ) )
>>>
>>> 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.

Chris

> For example:
> 
> diff --git a/binutils/readelf.c b/binutils/readelf.c
> index cafba9a4f56..1d977376b77 100644
> --- a/binutils/readelf.c
> +++ b/binutils/readelf.c
> @@ -20261,6 +20261,10 @@ print_gnu_note (Filedata * filedata, 
> Elf_Internal_Note
> *pnote)
>    print_gnu_property_note (filedata, pnote);
>    break;
> 
> +    case NT_GNU_JSON:
> +  print_json_note (filedata, pnote);
> +  break;
> +
>  default:
>    /* Handle unrecognised types.  An error message should have already 
> been
>  created by get_gnu_elf_note_type(), so all that we need to do is to
> diff --git a/include/elf/common.h b/include/elf/common.h
> index ebcd8f9e82c..c5671447074 100644
> --- a/include/elf/common.h
> +++ b/include/elf/common.h
> @@ -805,6 +805,7 @@
>  #define NT_GNU_BUILD_ID    3   /* Generated by ld 
> --build-id.  */
>  #define NT_GNU_GOLD_VERSION    4   /* Generated by gold.  */
>  #define NT_GNU_PROPERTY_TYPE_0  5  /* Generated by gcc.  */
> +#define NT_GNU_JSON    6   /* Contains arbitrary JSON data.  */
> 
>  #define NT_GNU_BUILD_ATTRIBUTE_OPEN    0x100
>  #define NT_GNU_BUILD_ATTRIBUTE_FUNC    0x101
> 
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

[PATCH 0/1] Improve coherence of user/start docs

2023-03-28 Thread Utkarsh Verma
This patch improves consistency of the documentation in the user/start
section. In app.rst, absolute path has been removed because the PATH had
already been set appropriately in the previous page, i.e. bsp-buil. In
bsp-build.rst, instructions have been removed for manually creating a
build directory as it is unnecessary. Apart from that, minor grammatical
fixes have been made.

Utkarsh Verma (1):
  bsp-howto: Fix grammar and improve coherence.

 user/start/app.rst   |  2 +-
 user/start/bsp-build.rst | 17 +
 2 files changed, 6 insertions(+), 13 deletions(-)

-- 
2.40.0

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel


[PATCH 1/1] bsp-howto: Fix grammar and improve coherence.

2023-03-28 Thread Utkarsh Verma
---
 user/start/app.rst   |  2 +-
 user/start/bsp-build.rst | 17 +
 2 files changed, 6 insertions(+), 13 deletions(-)

diff --git a/user/start/app.rst b/user/start/app.rst
index ce9a44d..0599305 100644
--- a/user/start/app.rst
+++ b/user/start/app.rst
@@ -209,7 +209,7 @@ Run the executable:
 
 .. code-block:: none
 
-$HOME/quick-start/rtems/@rtems-ver-major@/bin/rtems-run 
--rtems-bsps=erc32-sis build/sparc-rtems@rtems-ver-major@-erc32/hello.exe
+rtems-run --rtems-bsps=erc32-sis 
build/sparc-rtems@rtems-ver-major@-erc32/hello.exe
 
 The output will be something close to:
 
diff --git a/user/start/bsp-build.rst b/user/start/bsp-build.rst
index 8401d71..585d009 100644
--- a/user/start/bsp-build.rst
+++ b/user/start/bsp-build.rst
@@ -99,16 +99,9 @@ If you have built a BSP with the RSB, you can move on to
 Manual BSP Build
 
 
-We manually build the BSP in four steps.  The first step is to create a build
-directory.  It must be separate from the RTEMS source directory.  We use
-:file:`$HOME/quick-start/build/b-erc32`.
-
-.. code-block:: none
-
-mkdir -p $HOME/quick-start/build/b-erc32
-
-The second step is to set your path. Prepend the RTEMS tool suite binary
-directory to your ``$PATH`` throughout the remaining steps. Run the command:
+We manually build the BSP in four steps. The first step is to set your path.
+Prepend the RTEMS tool suite binary directory to your ``$PATH`` throughout the
+remaining steps. Run the command:
 
 .. code-block:: none
 
@@ -133,7 +126,7 @@ has not been correctly set. Check the contents of the path
 file cannot be found return to :ref:`QuickStartTools` and install the tools
 again.
 
-The first step is to configure the BSP.  There are various BSP build
+The second step is to configure the BSP.  There are various BSP build
 configuration options available.  Some options are BSP-specific.  Each section
 in the INI-style configuration file ``config.ini`` instructs the build system 
to
 build a particular BSP variant (`sparc/erc32` in our case).  We enable the 
build
@@ -179,7 +172,7 @@ by ``$BASE``.
 Checking for program 'xz': $BASE/anaconda3/bin/xz
 'configure' finished successfully (0.414s)
 
-Building the BSP is the second step.
+Building the BSP is the third step.
 
 .. code-block:: none
 
-- 
2.40.0

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel