From 83e389677e9cd26e711ca9681e2a55f830c7d7f8 Mon Sep 17 00:00:00 2001 From: Arnaldo Carvalho de Melo Date: Wed, 18 Mar 2009 11:48:40 -0300 Subject: [PATCH] base_type: Move base_type__name_to_size from the ctf loader to the core Will be used in more parts. Signed-off-by: Arnaldo Carvalho de Melo --- ctf_loader.c | 61 ---------------------------------------------------- dwarves.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++ dwarves.h | 3 +++ 3 files changed, 64 insertions(+), 61 deletions(-) diff --git a/ctf_loader.c b/ctf_loader.c index 3b398dd..4507d56 100644 --- a/ctf_loader.c +++ b/ctf_loader.c @@ -784,67 +784,6 @@ static void open_files(struct ctf_state *sp, const char *in_filename) } } -struct base_type_name_to_size { - const char *name; - strings_t sname; - size_t size; -} base_type_name_to_size_table[] = { - { .name = "unsigned", .size = 32, }, - { .name = "signed int", .size = 32, }, - { .name = "unsigned int", .size = 32, }, - { .name = "int", .size = 32, }, - { .name = "short unsigned int", .size = 16, }, - { .name = "signed short", .size = 16, }, - { .name = "unsigned short", .size = 16, }, - { .name = "short int", .size = 16, }, - { .name = "char", .size = 8, }, - { .name = "signed char", .size = 8, }, - { .name = "unsigned char", .size = 8, }, - { .name = "signed long", .size = 0, }, - { .name = "long int", .size = 0, }, - { .name = "signed long", .size = 0, }, - { .name = "unsigned long", .size = 0, }, - { .name = "long unsigned int", .size = 0, }, - { .name = "bool", .size = 8, }, - { .name = "_Bool", .size = 8, }, - { .name = "long long unsigned int", .size = 64, }, - { .name = "long long int", .size = 64, }, - { .name = "signed long long", .size = 64, }, - { .name = "unsigned long long", .size = 64, }, - { .name = "double", .size = 64, }, - { .name = "double double", .size = 64, }, - { .name = "single float", .size = 32, }, - { .name = NULL }, -}; - - -static void base_type_name_to_size_table__init(void) -{ - int i = 0; - - while (base_type_name_to_size_table[i].name != NULL) { - base_type_name_to_size_table[i].sname = - strings__find(strings, - base_type_name_to_size_table[i].name); - ++i; - } -} - -static size_t base_type__name_to_size(struct base_type *self, struct cu *cu) -{ - int i = 0; - - while (base_type_name_to_size_table[i].name != NULL) { - if (base_type_name_to_size_table[i].sname == self->name) { - size_t size = base_type_name_to_size_table[i].size; - - return size ?: ((size_t)cu->addr_size * 8); - } - ++i; - } - return 0; -} - static int class__fixup_ctf_bitfields(struct tag *self, struct cu *cu) { struct class_member *pos; diff --git a/dwarves.c b/dwarves.c index 682e1dd..22100e2 100644 --- a/dwarves.c +++ b/dwarves.c @@ -196,6 +196,67 @@ size_t tag__fprintf_decl_info(const struct tag *self, return 0; } +static struct base_type_name_to_size { + const char *name; + strings_t sname; + size_t size; +} base_type_name_to_size_table[] = { + { .name = "unsigned", .size = 32, }, + { .name = "signed int", .size = 32, }, + { .name = "unsigned int", .size = 32, }, + { .name = "int", .size = 32, }, + { .name = "short unsigned int", .size = 16, }, + { .name = "signed short", .size = 16, }, + { .name = "unsigned short", .size = 16, }, + { .name = "short int", .size = 16, }, + { .name = "char", .size = 8, }, + { .name = "signed char", .size = 8, }, + { .name = "unsigned char", .size = 8, }, + { .name = "signed long", .size = 0, }, + { .name = "long int", .size = 0, }, + { .name = "signed long", .size = 0, }, + { .name = "unsigned long", .size = 0, }, + { .name = "long unsigned int", .size = 0, }, + { .name = "bool", .size = 8, }, + { .name = "_Bool", .size = 8, }, + { .name = "long long unsigned int", .size = 64, }, + { .name = "long long int", .size = 64, }, + { .name = "signed long long", .size = 64, }, + { .name = "unsigned long long", .size = 64, }, + { .name = "double", .size = 64, }, + { .name = "double double", .size = 64, }, + { .name = "single float", .size = 32, }, + { .name = NULL }, +}; + +void base_type_name_to_size_table__init(void) +{ + int i = 0; + + while (base_type_name_to_size_table[i].name != NULL) { + if (base_type_name_to_size_table[i].sname == 0) + base_type_name_to_size_table[i].sname = + strings__find(strings, + base_type_name_to_size_table[i].name); + ++i; + } +} + +size_t base_type__name_to_size(struct base_type *self, struct cu *cu) +{ + int i = 0; + + while (base_type_name_to_size_table[i].name != NULL) { + if (base_type_name_to_size_table[i].sname == self->name) { + size_t size = base_type_name_to_size_table[i].size; + + return size ?: ((size_t)cu->addr_size * 8); + } + ++i; + } + return 0; +} + static size_t type__fprintf(struct tag *type, const struct cu *cu, const char *name, const struct conf_fprintf *conf, FILE *fp); diff --git a/dwarves.h b/dwarves.h index 55f7de2..15e9bd3 100644 --- a/dwarves.h +++ b/dwarves.h @@ -815,6 +815,9 @@ static inline const char *base_type__name(const struct base_type *self) return strings__ptr(strings, self->name); } +void base_type_name_to_size_table__init(void); +size_t base_type__name_to_size(struct base_type *self, struct cu *cu); + struct array_type { struct tag tag; uint32_t *nr_entries;