lkml.org 
[lkml]   [2006]   [Mar]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: kbuild - status on section mismatch warnings
On Sun, Mar 05, 2006 at 10:58:53PM +0100, Sam Ravnborg wrote:
> Hi Al.
>
> > Now try x86 with sd.o non-modular. And see
> >
> >
> > __init foo()
> > {
> > ....
> > switch(n) {
> > ....
> > ....
> > }
> > }
> Hmm, in my tree sd.o has no switch in the init function. But that does
> not change your point which is valid indeed.
>
> > compiling essentially into
> >
> > if (n < lower || n > upper)
> > goto Ldefault;
> > addr = const_array_of_labels[n - lower];
> > goto addr;
> >
> > with const_array_of_labels sitting in .rodata and its contents pointing
> > inside foo(), i.e. into .init.text. And yes, .init.text is discarded,
> > while .rodata is left intact. Since the only reference to that array
> > disappears along with .init.text *and* section where array goes into is
> > hardwired into gcc, we
> > a) are actually OK and
> > b) can't do anything about that false positive, AFAICS.
>
> For the same reason references to .init.text from .rodata are not warned
> upon - there are simply too many compielr generated false positives.
>
> Following is the original comment from reference_init.pl:
>
> * Unfortunately references to read only data that referenced .init
> * sections had to be excluded. Almost all of these are false
> * positives, they are created by gcc. The downside of excluding rodata
> * is that there really are some user references from rodata to
> * init code, e.g. drivers/video/vgacon.c:
> *
> * const struct consw vga_con = {
> * con_startup: vgacon_startup,
> *
> * where vgacon_startup is __init. If you want to wade through
> * the false
> * positives, take out the check for rodata.
>
> And this is unfortunate since we cannot do a full check, but we do a
> better job than before and warn for many of the trivial cases.
> Judging the amount of warnings already generated this is worth checking.

I think the best way to be with an extension to sparse to
check calls from non-init marked code do not to go to items
marked init unless forced to.

--
Ben (ben@fluff.org, http://www.fluff.org/)

'a smiley only costs 4 bytes'
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-03-06 13:11    [W:0.042 / U:0.084 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site