Re: [-next] ERROR: "strchr" [drivers/target/target_core_mod.ko] undefined!

Nicholas A. Bellinger
2011-01-07T21:10:35Z

On Fri, 2011-01-07 at 09:44 -0600, James Bottomley wrote:
> On Fri, 2011-01-07 at 11:57 +0100, Geert Uytterhoeven wrote:
> > Since a few days, linux-next shows:
> >
> > | ERROR: "strchr" [drivers/target/target_core_mod.ko] undefined!
> >
> > in m68k allmodconfig builds
> > (http://kisskb.ellerman.id.au/kisskb/buildresult/3754323/).
> >
> > I guess this is caused by the following 3 calls to strstr():
> >
> > drivers/target/target_core_configfs.c:
> > + ptr = strstr(page, "1");
> >
> > + str = strstr(buf, "_");
> >
> > + str2 = strstr(str+1, "_");
> >
> > Some versions of gcc replace calls to strstr() with single-character
> > "needle" string parameters by calls to strchr() behind our back.
> > This causes linking errors if strchr() is defined as an inline function
> > in <asm/string.h> (e.g. on m68k).
> >
> > You can prevent this by explicitly calling strchr() instead.
> >
> > Cfr. commit 59d309f9c8ef0bd01bf93cc0e758f1d810417bdb
> > ("kgdb: Replace strstr() by strchr() for single-character needles).
> >
> > Gr{oetje,eeting}s,
>
> Surely the fix for this is not to inline it in m68k? If gcc is growing
> the capability to make these types of transformations, it's not going to
> stop at single entry string strstr().
>
> If you want to keep the fast inline, there is a way (which I forget) to
> drop an external reference as well, just in case.
>

Hi guys,

So I really don't have a strong perference here, but would tend to agree
with James that this should probably be fixed in m68k.. If this is too
much of an pain for you Geert I am happy to make this change.

Thanks!

--nab