#### G.5.2 ARC Features

ARC processors are highly configurable, so even core registers and their number are not completely predetermined. In addition flags and PC registers which are important to GDB are not “core” registers in ARC. It is required that one of the core registers features is present. ‘`org.gnu.gdb.arc.aux-minimal`’ feature is mandatory.

The ‘`org.gnu.gdb.arc.core.v2`’ feature is required for ARC EM and ARC HS targets with a normal register file. It should contain registers ‘`r0`’ through ‘`r25`’, ‘`gp`’, ‘`fp`’, ‘`sp`’, ‘`r30`’, ‘`blink`’, ‘`lp_count`’ and ‘`pcl`’. This feature may contain register ‘`ilink`’ and any of extension core registers ‘`r32`’ through ‘`r59/acch`’. ‘`ilink`’ and extension core registers are not available to read/write, when debugging GNU/Linux applications, thus ‘`ilink`’ is made optional.

The ‘`org.gnu.gdb.arc.core-reduced.v2`’ feature is required for ARC EM and ARC HS targets with a reduced register file. It should contain registers ‘`r0`’ through ‘`r3`’, ‘`r10`’ through ‘`r15`’, ‘`gp`’, ‘`fp`’, ‘`sp`’, ‘`r30`’, ‘`blink`’, ‘`lp_count`’ and ‘`pcl`’. This feature may contain register ‘`ilink`’ and any of extension core registers ‘`r32`’ through ‘`r59/acch`’.

The ‘`org.gnu.gdb.arc.core.arcompact`’ feature is required for ARCompact targets with a normal register file. It should contain registers ‘`r0`’ through ‘`r25`’, ‘`gp`’, ‘`fp`’, ‘`sp`’, ‘`r30`’, ‘`blink`’, ‘`lp_count`’ and ‘`pcl`’. This feature may contain registers ‘`ilink1`’, ‘`ilink2`’ and any of extension core registers ‘`r32`’ through ‘`r59/acch`’. ‘`ilink1`’ and ‘`ilink2`’ and extension core registers are not available when debugging GNU/Linux applications. The only difference with ‘`org.gnu.gdb.arc.core.v2`’ feature is in the names of ‘`ilink1`’ and ‘`ilink2`’ registers and that ‘`r30`’ is mandatory in ARC v2, but ‘`ilink2`’ is optional on ARCompact.

The ‘`org.gnu.gdb.arc.aux-minimal`’ feature is required for all ARC targets. It should contain registers ‘`pc`’ and ‘`status32`’.