Registry Group

Andrew Cagney cagney@gnu.org
Tue Jan 4 20:20:00 GMT 2005


Alain Magloire wrote:
>>Alexiev, Dobrin wrote:
>>
>>>I am working with the Eclipse C Development Tools community to add a
>>>feature that will group registers in the Register View of Eclipse. 
>>>
>>>Since embedded CPUs have lots of peripheral registers (50-100+) it is
>>>getting a burden for the developer to keep scrolling the registry view
>>>to find the right register. A grouping will make the user experience way
>>>better. 
>>>
>>>Since the IDE is relying on the GDB for most of the device information I
>>>was wandering if there is a similar MI/GDB command to obtain the name of
>>>the groups and their registers association. 
>>>
>>>In our product we added such command "-data-list-register-groups". The
>>>syntax of the command is: 
>>>-data-list-register-groups
>>>^done,register-groups=[{name="r0",group="GRP1"},{name="r8",group="GRP2"}
>>>]
>>
>>Sure! have you looked at the output from:
>>	(gdb) maint print register-groups
>>as it should make a good starting point.
>>
>>I suspect that the output should be more like:
>>	...{name="r0",groups=["grp1","grp2",...]},...
>>(the MI syntax police will quickly point out the exact syntax :-).
>>
> 
> 
> I think Alexiev is off to see Santa 'til January .. but

Sounds familiar, ran into Santa surfing at bondi.

> this is a not from a patch he dropped to the CDT mailing list
> it should give you a rough idea of his way of thinking.
> The part about a default "Main" group is probably CDT specific
> and there for backward compatibility.

Right (more recent gdb's use heuristics to guess which register goes where)

> /**
>  * Custom command for requesting the register groups.
>  * It is not yet in the GDB stream.
>  *
>  * -data-list-register-groups
>  *
>  * The format of the command is:
>  *              IN:(gdb)-data-list-register-groups
>  *              OUT:^done,register-groups= [{name="r0", group="GRP1"},{name="r8",group="GRP2"}]

the first key difference is that a register can be in multiple groups. 
You can see this in the `maint print register-groups' command.  The 
other potential wart is that groups are either "user" or "internal" (for 
instance save/restore groups are normally for internal use) - you might 
want to both query for the list of groups and the register/group mapping.

For code, what about refactoring reggroups.c's *_dump methods so that 
they use ui-out.

Andrew

>  * It is similar of the command: "-data-list-register-values".
>  *
>  * The register group names are case sensitive.
>  *  * The register groups appear in the Register View in order they are returns from
>  * the command "-data-list-register-groups".
>  *
>  * The registers appear in the groups in the order they are returned from the
>  * command "-data-list-register-names".
>  * The register names are case sensitive.
>  *
>  * If the debugger doesn<92>t support the command "-data-list-register-groups" all
>  * registers are added to the "Main" group.
>  * If there is a register returned by the command "-data-list-register-names" but not
>  * in the command "-data-list-register-groups" it is added to the "Main" group.
>  * The main group itself is added first to the Register view.
>  * If there is a register returned by the command "-data-list-register-groups" but not in
>  * the command "-data-list-register-names" the register is ignored.
>  */
> 



More information about the Gdb mailing list