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

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

 



On Tue, Nov 20, 2018 at 12:42:20AM +0000, Ramsay Jones wrote:
> 
> 
> 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!

Yes, nervermind. It was as much a note to myself than a real question.

I quickly checked and I think only TOKEN_GNU_KLUDGE may need some
extra processing.

Best regards,
-- Luc



[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