Re: [PATCH 4/9] pre-process: print macros containing # and ## correctly

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

 




On 20/11/2018 00:03, Luc Van Oostenryck wrote:
> On Mon, Nov 19, 2018 at 08:49:42PM +0000, Ramsay Jones wrote:
>>
>> The dump_macro() function fails to correctly output the definitions of
>> macros that contain the string operator '#', the concatenation operator
>> '##' and any macro parameter in the definition token list. For example,
>> the following macros:
>>
>>     #define STRING(x) #x
>>     #define CONCAT(x,y) x ## y
>>
>> are output like so:
>>
>>     #define STRING(x) unhandled token type '21'
>>     #define CONCAT(x, y) unhandled token type '22'  unhandled token type '23'  unhandled token type '22'
> 
> Mmmm, yes. I never thought about these.
>  
>> Add the code necessary to handle those token types to the dump_macros()
>> function and add the above macros to the 'dump-macros.c' test file.
>>
>> Signed-off-by: Ramsay Jones <ramsay@xxxxxxxxxxxxxxxxxxxx>
>> ---
>>  pre-process.c                         | 7 +++++++
>>  validation/preprocessor/dump-macros.c | 5 +++++
>>  2 files changed, 12 insertions(+)
>>
>> diff --git a/pre-process.c b/pre-process.c
>> index 8abd5e6..eca7ab5 100644
>> --- a/pre-process.c
>> +++ b/pre-process.c
>> @@ -2196,6 +2196,13 @@ static void dump_macro(struct symbol *sym)
>>  		switch (token_type(token)) {
>>  		case TOKEN_UNTAINT:
>>  			break;
>> +		case TOKEN_STR_ARGUMENT:
>> +			printf("#%s", show_token(args[token->argnum]));
>> +			break;
>> +		case TOKEN_CONCAT:
>> +			printf("## ");
>> +			break;
>> +		case TOKEN_QUOTED_ARGUMENT:
>>  		case TOKEN_MACRO_ARGUMENT:
> 
> I'm wondering if there could be some other TOKEN type that would
> need to be handled here.

Good question, but I don't know the answer! ;-)

These patches were written months ago and I was being driven by
the need to harmonize the output of the 'meld ggc-macs sp-macs'
command! I quite literally wrote each of these patches, in the
given order, to address each irritation as I noticed it!

ATB,
Ramsay Jones



[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