tools/gcc-plugin: support [un]signed in pragma

Need `unsigned char *` for `%pHX`.

Signed-off-by: David Lamparter <equinox@diac24.net>
This commit is contained in:
David Lamparter 2021-02-19 00:05:35 +01:00
parent 23922bbc08
commit bcf9d7d8aa
2 changed files with 17 additions and 2 deletions

View File

@ -4241,6 +4241,11 @@ handle_finish_parse (void *event_data, void *data)
continue;
}
node = TREE_TYPE (node);
if (etab->t_unsigned)
node = c_common_unsigned_type (node);
else if (etab->t_signed)
node = c_common_signed_type (node);
}
etab->type = node;
@ -4357,9 +4362,17 @@ handle_pragma_printfrr_ext (cpp_reader *dummy)
ttype = pragma_lex (&token, &loc);
/* qualifiers */
if (ttype == CPP_NAME && !strcmp (IDENTIFIER_POINTER (token), "const"))
while (ttype == CPP_NAME)
{
etab->t_const = true;
if (!strcmp (IDENTIFIER_POINTER (token), "const"))
etab->t_const = true;
else if (!strcmp (IDENTIFIER_POINTER (token), "signed"))
etab->t_signed = true;
else if (!strcmp (IDENTIFIER_POINTER (token), "unsigned"))
etab->t_unsigned = true;
else
break;
ttype = pragma_lex (&token, &loc);
}

View File

@ -113,6 +113,8 @@ struct kernel_ext_fmt
tree_code type_code;
int ptrlevel;
bool t_const;
bool t_unsigned;
bool t_signed;
bool warned;
const char *type_str;