On Wed, 21 Dec 2016, Guenter Roeck wrote:
> Hi Julia, > > On Wed, Dec 21, 2016 at 03:05:37PM +0100, Julia Lawall wrote: > > A solution is below: the semantic patch, an explanation of the semantic > > patch, and the results. I have only tried to compile the results (make > > drivers/hwmon/). Two affected files were not considered for compilation: > > > > drivers/hwmon/vexpress-hwmon.o > > drivers/hwmon/jz4740-hwmon.o > > > > All the other affected files obtained .o files with no compiler errors or > > warnings. > > > > There are a few cases that are not handled: > > > > 1. Calls like the following, where the attribute name is not an > > identifier: > > > > adm1026.c:static DEVICE_ATTR(temp##offset##_crit_enable, ...) > > > > 2. Calls like the following, where the function name is constructed using > > a macro: > > > > gl518sm.c:static DEVICE_ATTR(in0_min, S_IWUSR|S_IRUGO, show_in_min0, > > set_in_min1); > > > > 3. Calls, like the following, where a function name is reused: > > > > adm1026.c:static DEVICE_ATTR(pwm2, S_IRUGO | S_IWUSR, pwm1_show, > > pwm1_store); > > > > In the third case, it does treat one use, but not the others. For > > example, DEVICE_ATTR_RW(pwm1); is generated in this case. Another > > approach would be to do no transformation, ie not transform the pwm1 case > > as well. > > > > It is possible that the transformation will change the number of > > characters in a function name, causing the parameter or argument list to > > become unaligned. The semantic patch thus removes and adds back the > > argument or parameter list, using the Coccinelle defaults for indentation. > > This means that the arguments are parameters are lined up with the right > > side of the (. Another option would be to leave the argument or parameter > > list as is. In particular, it seems that the original code often just > > puts a few tabs for the continuation line, rather than trying to align the > > arguments or parameters, so perhaps the Coccinelle defaults are not what > > is wanted. It is easy to remove what Coccinelle does, but then some code > > may need to be adjusted by hand. > > > > I haven't checked the resulting patch very carefully, so this is more a > > request for comments rather than a patch submission. I can also break up > > the patch by file or by set of maintainers, if that would be useful. > > > This is amazing - thanks a lot! I'll run it through my test system to see > if it finds any problems. > > For a real patch series, it would be great if you can split it up by file. > This way it would be easier to handle file specific problems later on, > and/or to apply a patch to an earlier release if it turns out to be necessary > to backport a subsequent (unrelated) bug fix. Sure, just let me know when it seems ok. julia > > > I guess it would be easy to adapt all this to the SENSOR case. > > > Yes, I hope so. This should give me a pretty good start. > > Again, thanks a lot! > > Guenter > _______________________________________________ Cocci mailing list [email protected] https://systeme.lip6.fr/mailman/listinfo/cocci
