Re: [Cocci] Re: status of constification
From: Julia Lawall
Date: Mon Jun 06 2011 - 01:03:40 EST
Thanks for the reports. The first is due to an isomorphism that allows a
declaration to match a declaration in which the declared variable is
assigned to a constant. You can put disable const_decl_init in your rule
to avoid this. I'll look into the disappearing newlines problem. I think
there has been some progress in this direction recently, but proper pretty
printing is an ongoing battle... I'm not sure about the last problem. If
you try again at some point, you can let me know in more detail of what
the problem is.
Thanks,
julia
On Sun, 5 Jun 2011, Emese Revfy wrote:
> > Could I see the semantic patch? The clean up issue sounds interesting.
> > Perhaps there is a way around it.
>
> Hi,
> I no longer use Coccinelle to generate constification patch, but only to find
> candidate structures for constification. This is because I ran into several
> issues
> some of which I will try describe now from memory (unfortunately I don't have
> those Cocci scripts anymore):
>
> 1. Sometimes (always?) cocci removed NULL initialization while emitting the
> constified patch:
>
> linux-2.6.39-rc7/arch/frv/mb93090-mb00/pci-vdk.c
> @@ -356,7 +356,7 @@ void __init pcibios_fixup_bus(struct pci
>
> int __init pcibios_init(void)
> {
> - struct pci_ops *dir = NULL;
> + const struct pci_ops *dir;
>
> if (!mb93090_mb00_detected)
> return -ENXIO;
>
> 2. Sometimes (always?) cocci joined structure field lines into one line while
> constifying them:
>
> linux-2.6.39-rc7/arch/x86/include/asm/x86_init.h
> @@ -119,14 +119,7 @@ struct x86_init_pci {
> *
> */
> struct x86_init_ops {
> - struct x86_init_resources resources;
> - struct x86_init_mpparse mpparse;
> - struct x86_init_irqs irqs;
> - struct x86_init_oem oem;
> - struct x86_init_paging paging;
> - struct x86_init_timers timers;
> - struct x86_init_iommu iommu;
> - struct x86_init_pci pci;
> + const struct x86_init_resources resources;const struct
> x86_init_mpparse mpparse;const struct x86_init_irqs irqs;const struct
> x86_init_oem oem;const struct x86_init_paging paging;const struct
> x86_init_timers timers;const struct x86_init_iommu iommu;const struct
> x86_init_pci pci;
> };
>
> /**
>
> 3. Sometimes cocci removed comment lines while joining others, maybe related
> to the previous issue:
> linux-2.6.39-rc7/drivers/net/wireless/ath/ath9k/hw.h
> @@ -753,9 +753,7 @@ struct ath_hw {
> } enable_32kHz_clock;
>
> /* Private to hardware code */
> - struct ath_hw_private_ops private_ops;
> - /* Accessed by the lower level driver */
> - struct ath_hw_ops ops;
> + const struct ath_hw_private_ops private_ops;const struct ath_hw_ops
> ops;
>
> /* Used to program the radio on non single-chip devices */
> u32 *analogBank0Data;
>
> 4. My constification patch generator cocci script didn't find all structures
> that it should have, I don't know whether it was a bug in my script or in
> cocci but in the end I just gave it up.
>
> --
> Emese
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/