aboutsummaryrefslogtreecommitdiff
path: root/opcodes
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2023-01-20 10:17:53 +0100
committerJan Beulich <jbeulich@suse.com>2023-01-20 10:17:53 +0100
commitedf772580db29fdddc54deef72d3ddda00c21286 (patch)
tree7f5d14598c7db7e515fab6d08ffa3d7ebe385831 /opcodes
parent6d86a54595d80b93baaaafe0b4db3dea6a5d451e (diff)
downloadgdb-edf772580db29fdddc54deef72d3ddda00c21286.zip
gdb-edf772580db29fdddc54deef72d3ddda00c21286.tar.gz
gdb-edf772580db29fdddc54deef72d3ddda00c21286.tar.bz2
x86: embed register names in reg_entry
Register names are (including their nul terminators) on average almost 4 bytes long. Otoh no register name is longer than 7 bytes. Hence even for 32-bit builds using a pointer is only slightly more space efficient than embedding the strings. A level of indirection can be also avoided by embedding the names as an array of 8 characters directly in the struct, and the number of base relocations in PIE builds of gas goes down as well.
Diffstat (limited to 'opcodes')
-rw-r--r--opcodes/i386-opc.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/opcodes/i386-opc.h b/opcodes/i386-opc.h
index ebedb3e..6739d49 100644
--- a/opcodes/i386-opc.h
+++ b/opcodes/i386-opc.h
@@ -987,7 +987,7 @@ insn_template;
/* these are for register name --> number & type hash lookup */
typedef struct
{
- const char *reg_name;
+ char reg_name[8];
i386_operand_type reg_type;
unsigned char reg_flags;
#define RegRex 0x1 /* Extended register. */