Added the address size to architecture descriptions

This commit is contained in:
Pierre Pronchery 2011-09-27 23:55:37 +00:00
parent 825007b4fa
commit e411b708b0
13 changed files with 63 additions and 16 deletions

View File

@ -29,15 +29,16 @@ typedef struct _Arch Arch;
typedef enum _ArchEndian typedef enum _ArchEndian
{ {
ARCH_ENDIAN_BIG = 0, ARCH_ENDIAN_BIG = 0x1,
ARCH_ENDIAN_LITTLE, ARCH_ENDIAN_LITTLE = 0x2,
ARCH_ENDIAN_BOTH ARCH_ENDIAN_BOTH = 0x3
} ArchEndian; } ArchEndian;
typedef struct _ArchDescription typedef struct _ArchDescription
{ {
char const * format; /* default format */ char const * format; /* default format plug-in */
ArchEndian endian; ArchEndian endian;
uint32_t address_size;
uint32_t alignment; uint32_t alignment;
uint32_t instruction_size; /* 0 if not constant */ uint32_t instruction_size; /* 0 if not constant */
} ArchDescription; } ArchDescription;

View File

@ -46,6 +46,11 @@ enum
/* variables */ /* variables */
static ArchDescription _amd64_description =
{
"elf", ARCH_ENDIAN_LITTLE, 64, 8, 0
};
#define REG(name, size, id) { "" # name, size, id }, #define REG(name, size, id) { "" # name, size, id },
static ArchRegister _amd64_registers[] = static ArchRegister _amd64_registers[] =
{ {
@ -78,7 +83,7 @@ ArchPlugin arch_plugin =
{ {
NULL, NULL,
"amd64", "amd64",
NULL, &_amd64_description,
_amd64_registers, _amd64_registers,
_amd64_instructions, _amd64_instructions,
NULL, NULL,

View File

@ -33,7 +33,10 @@ enum
/* variables */ /* variables */
static ArchDescription _arm_description = { "elf", ARCH_ENDIAN_BIG, 32, 32 }; static ArchDescription _arm_description =
{
"elf", ARCH_ENDIAN_BOTH, 32, 32, 32
};
#define REG(name, size, id) { "" # name, size, id }, #define REG(name, size, id) { "" # name, size, id },
static ArchRegister _arm_registers[] = static ArchRegister _arm_registers[] =

View File

@ -56,7 +56,9 @@ enum
/* variables */ /* variables */
/* plug-in */ /* plug-in */
static ArchDescription _dalvik_description = static ArchDescription _dalvik_description =
{ "dex", ARCH_ENDIAN_LITTLE, 2, 0 }; {
"dex", ARCH_ENDIAN_LITTLE, 32, 16, 0
};
#define REG(name, size, id) { "" # name, size, id }, #define REG(name, size, id) { "" # name, size, id },

View File

@ -43,6 +43,11 @@ enum
/* variables */ /* variables */
static ArchDescription _i386_description =
{
"elf", ARCH_ENDIAN_LITTLE, 32, 8, 0
};
#define REG(name, size, id) { "" # name, size, id }, #define REG(name, size, id) { "" # name, size, id },
static ArchRegister _i386_registers[] = static ArchRegister _i386_registers[] =
{ {
@ -70,7 +75,7 @@ ArchPlugin arch_plugin =
{ {
NULL, NULL,
"i386", "i386",
NULL, &_i386_description,
_i386_registers, _i386_registers,
_i386_instructions, _i386_instructions,
NULL, NULL,

View File

@ -44,6 +44,11 @@ enum
/* variables */ /* variables */
static ArchDescription _i386_real_description =
{
"elf", ARCH_ENDIAN_LITTLE, 20, 8, 0
};
#define REG(name, size, id) { "" # name, size, id }, #define REG(name, size, id) { "" # name, size, id },
static ArchRegister _i386_real_registers[] = static ArchRegister _i386_real_registers[] =
{ {
@ -71,7 +76,7 @@ ArchPlugin arch_plugin =
{ {
NULL, NULL,
"i386_real", "i386_real",
NULL, &_i386_real_description,
_i386_real_registers, _i386_real_registers,
_i386_real_instructions, _i386_real_instructions,
NULL, NULL,

View File

@ -43,6 +43,11 @@ enum
/* variables */ /* variables */
static ArchDescription _i486_description =
{
"elf", ARCH_ENDIAN_LITTLE, 32, 8, 0
};
#define REG(name, size, id) { "" # name, size, id }, #define REG(name, size, id) { "" # name, size, id },
static ArchRegister _i486_registers[] = static ArchRegister _i486_registers[] =
{ {
@ -71,7 +76,7 @@ ArchPlugin arch_plugin =
{ {
NULL, NULL,
"i486", "i486",
NULL, &_i486_description,
_i486_registers, _i486_registers,
_i486_instructions, _i486_instructions,
NULL, NULL,

View File

@ -43,6 +43,11 @@ enum
/* variables */ /* variables */
static ArchDescription _i586_description =
{
"elf", ARCH_ENDIAN_LITTLE, 32, 8, 0
};
#define REG(name, size, id) { "" # name, size, id }, #define REG(name, size, id) { "" # name, size, id },
static ArchRegister _i586_registers[] = static ArchRegister _i586_registers[] =
{ {
@ -72,7 +77,7 @@ ArchPlugin arch_plugin =
{ {
NULL, NULL,
"i586", "i586",
NULL, &_i586_description,
_i586_registers, _i586_registers,
_i586_instructions, _i586_instructions,
NULL, NULL,

View File

@ -44,6 +44,11 @@ enum
/* variables */ /* variables */
static ArchDescription _i686_description =
{
"elf", ARCH_ENDIAN_LITTLE, 32, 8, 0
};
#define REG(name, size, id) { "" # name, size, id }, #define REG(name, size, id) { "" # name, size, id },
static ArchRegister _i686_registers[] = static ArchRegister _i686_registers[] =
{ {
@ -74,7 +79,7 @@ ArchPlugin arch_plugin =
{ {
NULL, NULL,
"i686", "i686",
NULL, &_i686_description,
_i686_registers, _i686_registers,
_i686_instructions, _i686_instructions,
NULL, NULL,

View File

@ -25,7 +25,10 @@
/* Java */ /* Java */
/* private */ /* private */
/* variables */ /* variables */
static ArchDescription _java_description = { "java", ARCH_ENDIAN_BIG, 1, 0 }; static ArchDescription _java_description =
{
"java", ARCH_ENDIAN_BIG, 32, 8, 0
};
static ArchRegister _java_registers[] = static ArchRegister _java_registers[] =
{ {

View File

@ -22,7 +22,10 @@
/* mips */ /* mips */
/* private */ /* private */
/* variables */ /* variables */
static ArchDescription _mips_description = { "elf", ARCH_ENDIAN_BIG, 32, 32 }; static ArchDescription _mips_description =
{
"elf", ARCH_ENDIAN_BOTH, 32, 32, 32
};
#define REG(name, size, id) { "" # name, size, id }, #define REG(name, size, id) { "" # name, size, id },
static ArchRegister _mips_registers[] = static ArchRegister _mips_registers[] =

View File

@ -22,7 +22,10 @@
/* sparc */ /* sparc */
/* private */ /* private */
/* variables */ /* variables */
static ArchDescription _sparc_description = { "elf", ARCH_ENDIAN_BIG, 32, 32 }; static ArchDescription _sparc_description =
{
"elf", ARCH_ENDIAN_BIG, 32, 32, 32
};
#define REG(name, size, id) { "" # name, size, id }, #define REG(name, size, id) { "" # name, size, id },
static ArchRegister _sparc_registers[] = static ArchRegister _sparc_registers[] =

View File

@ -23,7 +23,9 @@
/* private */ /* private */
/* variables */ /* variables */
static ArchDescription _sparc64_description = static ArchDescription _sparc64_description =
{ "elf", ARCH_ENDIAN_BIG, 32, 32 }; {
"elf", ARCH_ENDIAN_BIG, 64, 32, 32
};
#define REG(name, size, id) { "" # name, size, id }, #define REG(name, size, id) { "" # name, size, id },
static ArchRegister _sparc64_registers[] = static ArchRegister _sparc64_registers[] =