Powered by Linux
Re: Treat macro call like ordinary functions in smatch. — Semantic Matching Tool

Re: Treat macro call like ordinary functions in smatch.

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

 



On Mon, Jun 24, 2024 at 01:50:57PM +0800, Hongyi Lu wrote:
> Hi,
> 
> I have a way of extracting the macro arguments from the Smatch.
> My idea is to extend the `store_macro_pos()` in `macro_table.c` and
> delay its invocation in `pre-process.c` AFTER the arguments have been
> expanded.
> So, we can have a list of argument tokens that were passed into that macro.
> 
> The changes are moderate.
> 1. Add struct macro { struct token* t; struct token_list *arg_list... };
> 2. Extend `store_macro_pos(struct token* token)` ->
> `store_macro_pos(struct token* token, struct token_list* args)`.
> 3. Delay the invocation inside `pre-process` and pass an expanded list
> of arguments when saving a macro.
> 4. Change the logic and naming in `macro_table.c`
> 
> What do you think about this feature? Would it be useful in the mainline?
> Perhaps I can open a PR later.

Sorry for the delay.  I travelled and then I was ill so I was offline
last week.  I'm recovered now.  :)

This does sound useful.  I can't really review the patch without seeing
it, of course.  To be honest, I'd prefer if changes were sent as a patch
to the mailing list, but I will also merge github pull requests.

In general, I will merge any features that people want.  If it's useful
to you then feel free to send the patch.  When it comes to kernel code
and warnings generated, then I prefer to only merge checks which find
bugs, not stuff like "propagate the error code instead returning
-EINVAL".  For those kinds of minor issues or style things, then we can
merge it but turned off by default so you need to pass a command line
option to enable it.  But generally, I'll try merge anything that people
find useful.

regards,
dan carpenter





[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux