Re: [PATCH v2 05/14] add builtin_type_suffix()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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);
>  
> 



[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux