Re: Adding architecture-specific commands in GDB
Andrew Burgess via Gdb <[email protected]> Wed, 24 Jun 2026 17:13:14 +0100
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <[email protected]> |
Matthieu Longo via Gdb <[email protected]> writes: > Hi all, > > Today, GDB seems to support architecture-specific commands for show/set [1]. However, it is not > clear to me whether any commands beyond the scope of show/set can/should be easily added. > > My usecase consists in adding AArch64-specific commands to dump some tables and permissions set up > by the Linux kernel. > > # Constraints: > 1. The tables are AArch64 specific and don't fit into an existing command. > 2. The permissions/capability views require to fetch information in different tables and procfs > files to be computed, so the computation of such permissions/capabilities is very tied to the > architecture specificities. > > Since I don't see how I could add those features to existing commands, I was thinking about adding > them under an "aarch64" namespace, and following the semantic of existing generic commands as much > as possible. > > # Examples > > ## Dumping the tables > > show aarch64 <feature>-tables [TABLE_NAME]* > > NB: those tables should only be set by the kernel, only read access is required. The content is tied > to the architecture. Maybe I'm wrong, in which case I'd love to see some counter examples, but the set/show command are usually for settings that are set by the user of GDB, and the show reads back the setting. Viewing kernel data would normally be an 'info' command. > > ## Dumping permissions > > aarch64 info <feature> <permissions-type> [some other options and args] > > ## Dumping capabilities for a code or data > > aarch64 info <feature> caps [some other options and args] > > Please note that in the previous examples, <feature> is a subcommand of info, and <permissions-type> > or caps are subcommands of <feature>. > Note: "info aarch64 <subcommand> <subsubcommand>" might make more sense than "aarch64 info > <subcommand> <subsubcommand>" given the existing show/set commands. > > Please let me know if adding such architecture-specific commands is possible today, or if it > requires changing the current commands framework. Yes adding these commands is totally possible today. Personally, I'd rather see it structured as: 'info aarch64 <feature> ....' as I think users are more likely to think 'info' to find out about the process, but I understand you might have a strong preference for the other order. > Those new commands would really be needed for debugging the new AArch64 feature and are not optional. > Is such an architecture-specific support undesirable ? No it's fine. You'd create the commands within an AArch64 only file, likely aarch64-tdep.c, or similar, within the per-file init function, look for 'INIT_GDB_FILE'. That way, the commands will only be registered for a build of GDB that includes AArch64 support. > Should such commands be moved to Python extensions even if they are essential ? I don't think there's anything wrong with writing commands as a Python extension. The commands can be included with GDB and always loaded. Of course, this does mean that a build of GDB without Python support will lack these commands, but these days it's pretty rare to find builds of GDB without Python support. Thanks, Andrew > > [1]: https://sourceware.org/gdb/current/onlinedocs/gdb.html/Embedded-Processors.html#Embedded-Processors > > Regards, > Matthieu