On 12/12/2018 16:45, Luc Van Oostenryck wrote: > With this helper, we can easily output constants > with the correct type, like '0x123' for ints, '0x123UL' > for unsigned longs, .... > > Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> > --- > show-parse.c | 73 ++++++++++++++++++++++++++++++---------------------- > symbol.h | 1 + > 2 files changed, 43 insertions(+), 31 deletions(-) > > diff --git a/show-parse.c b/show-parse.c > index 6328439c9..2705d162c 100644 > --- a/show-parse.c > +++ b/show-parse.c > @@ -218,38 +218,39 @@ static void FORMAT_ATTR(2) append(struct type_name *name, const char *fmt, ...) > static struct ctype_name { > struct symbol *sym; > const char *name; > + const char *suffix; > } typenames[] = { > - { & char_ctype, "char" }, > - { &schar_ctype, "signed char" }, > - { &uchar_ctype, "unsigned char" }, > - { & short_ctype, "short" }, > - { &sshort_ctype, "signed short" }, > - { &ushort_ctype, "unsigned short" }, > - { & int_ctype, "int" }, > - { &sint_ctype, "signed int" }, > - { &uint_ctype, "unsigned int" }, > - { &slong_ctype, "signed long" }, > - { & long_ctype, "long" }, Not a problem, but maybe swap the above two lines - all the other types are ordered: type, signed type, unsigned type, and this single exception made me stumble ... ATB, Ramsay Jones > - { &ulong_ctype, "unsigned long" }, > - { & llong_ctype, "long long" }, > - { &sllong_ctype, "signed long long" }, > - { &ullong_ctype, "unsigned long long" }, > - { & lllong_ctype, "long long long" }, > - { &slllong_ctype, "signed long long long" }, > - { &ulllong_ctype, "unsigned long long long" }, > - > - { &void_ctype, "void" }, > - { &bool_ctype, "bool" }, > - { &string_ctype, "string" }, > - > - { &float_ctype, "float" }, > - { &double_ctype, "double" }, > - { &ldouble_ctype,"long double" }, > - { &incomplete_ctype, "incomplete type" }, > - { &int_type, "abstract int" }, > - { &fp_type, "abstract fp" }, > - { &label_ctype, "label type" }, > - { &bad_ctype, "bad type" }, > + { & char_ctype, "char", "" }, > + { &schar_ctype, "signed char", "" }, > + { &uchar_ctype, "unsigned char", "" }, > + { & short_ctype, "short", "" }, > + { &sshort_ctype, "signed short", "" }, > + { &ushort_ctype, "unsigned short", "" }, > + { & int_ctype, "int", "" }, > + { &sint_ctype, "signed int", "" }, > + { &uint_ctype, "unsigned int", "U" }, > + { &slong_ctype, "signed long", "L" }, > + { & long_ctype, "long", "L" }, > + { &ulong_ctype, "unsigned long", "UL" }, > + { & llong_ctype, "long long", "LL" }, > + { &sllong_ctype, "signed long long", "LL" }, > + { &ullong_ctype, "unsigned long long", "ULL" }, > + { & lllong_ctype, "long long long", "LLL" }, > + { &slllong_ctype, "signed long long long", "LLL" }, > + { &ulllong_ctype, "unsigned long long long", "ULLL" }, > + > + { &void_ctype, "void", "" }, > + { &bool_ctype, "bool", "" }, > + { &string_ctype, "string", "" }, > + > + { &float_ctype, "float", "F" }, > + { &double_ctype, "double", "" }, > + { &ldouble_ctype,"long double", "L" }, > + { &incomplete_ctype, "incomplete type", "" }, > + { &int_type, "abstract int", "" }, > + { &fp_type, "abstract fp", "" }, > + { &label_ctype, "label type", "" }, > + { &bad_ctype, "bad type", "" }, > }; > > const char *builtin_typename(struct symbol *sym) > @@ -262,6 +263,16 @@ const char *builtin_typename(struct symbol *sym) > return NULL; > } > > +const char *builtin_type_suffix(struct symbol *sym) > +{ > + int i; > + > + for (i = 0; i < ARRAY_SIZE(typenames); i++) > + if (typenames[i].sym == sym) > + return typenames[i].suffix; > + return NULL; > +} > + > const char *builtin_ctypename(struct ctype *ctype) > { > int i; > diff --git a/symbol.h b/symbol.h > index 5a3d7cef5..f9fb4bc5a 100644 > --- a/symbol.h > +++ b/symbol.h > @@ -317,6 +317,7 @@ extern struct symbol *examine_symbol_type(struct symbol *); > extern struct symbol *examine_pointer_target(struct symbol *); > extern const char *show_typename(struct symbol *sym); > extern const char *builtin_typename(struct symbol *sym); > +extern const char *builtin_type_suffix(struct symbol *sym); > extern const char *builtin_ctypename(struct ctype *ctype); > extern const char* get_type_name(enum type type); > >