Re: [PATCH 3/8] riscv: init: merge split string literals in preprocessor directive

From: Luc Van Oostenryck
Date: Fri Oct 18 2019 - 01:28:45 EST


On Thu, Oct 17, 2019 at 09:38:18PM -0700, Paul Walmsley wrote:
> On Fri, 18 Oct 2019, Luc Van Oostenryck wrote:
>
> > On Thu, Oct 17, 2019 at 05:49:24PM -0700, Paul Walmsley wrote:
> > > sparse complains loudly when string literals associated with
> > > preprocessor directives are split into multiple, separately quoted
> > > strings across different lines:
> >
> > ...
> >
> > > #ifndef __riscv_cmodel_medany
> > > -#error "setup_vm() is called from head.S before relocate so it should "
> > > - "not use absolute addressing."
> > > +#error "setup_vm() is called from head.S before relocate so it should not use absolute addressing."
> > > #endif
> >
> > Using a blacslash should do the trick :
> > #error "blablablablablablablablablablablabla" \
> > "and blablabla again"
> > Or if need I cn fix Sparse if needed and desiable.
>
> Thanks for the kind offer!
>
> The backslashless syntax is pretty horrible to my eyes. As far as I can
> tell from a brief glance, the instance fixed by this patch was the only
> instance of its kind in the kernel. The existing kernel precedents appear
> to be to simply use a single long line. Example:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/compiler-gcc.h#n3
>
> So, from a kernel point of view, we should just fix this specific
> instance. It doesn't seem worth changing sparse for such a rare case.
>
> On the other hand, gcc seems to support the non-backslashed syntax. So if
> the intention is for sparse to follow the gcc practice, and to be used
> beyond the kernel, maybe it's worth aligning sparse to gcc? Only if
> you're bored, I suppose...

I'll first see what is acceptable for the point of view of the standard
(and maybe some justifications from GCC).

-- Luc