This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Registry Group


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.
 */



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]