## Appendix G Target Descriptions

One of the challenges of using gdb to debug embedded systems is that there are so many minor variants of each processor architecture in use. It is common practice for vendors to start with a standard processor core — ARM, PowerPC, or MIPS, for example — and then make changes to adapt it to a particular market niche. Some architectures have hundreds of variants, available from dozens of vendors. This leads to a number of problems:

- With so many different customized processors, it is difficult for the gdb maintainers to keep up with the changes.
- Since individual variants may have short lifetimes or limited audiences, it may not be worthwhile to carry information about every variant in the gdb source tree.
- When gdb does support the architecture of the embedded system at hand, the task of finding the correct architecture name to give the `set architecture` command can be error-prone.

To address these problems, the gdb remote protocol allows a target system to not only identify itself to gdb, but to actually describe its own features. This lets gdb support processor variants it has never seen before — to the extent that the descriptions are accurate, and that gdb understands them.

gdb must be linked with the Expat library to support XML target descriptions. See Expat.