public inbox for linux-next@vger.kernel.org
 help / color / mirror / Atom feed
* [-next] ERROR: "strchr" [drivers/target/target_core_mod.ko] undefined!
@ 2011-01-07 10:57 Geert Uytterhoeven
  2011-01-07 15:44 ` James Bottomley
  0 siblings, 1 reply; 3+ messages in thread
From: Geert Uytterhoeven @ 2011-01-07 10:57 UTC (permalink / raw)
  To: Nicholas Bellinger, James Bottomley; +Cc: scsi, Linux-Next, linux-kernel

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,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [-next] ERROR: "strchr" [drivers/target/target_core_mod.ko] undefined!
  2011-01-07 10:57 [-next] ERROR: "strchr" [drivers/target/target_core_mod.ko] undefined! Geert Uytterhoeven
@ 2011-01-07 15:44 ` James Bottomley
  2011-01-07 21:04   ` Nicholas A. Bellinger
  0 siblings, 1 reply; 3+ messages in thread
From: James Bottomley @ 2011-01-07 15:44 UTC (permalink / raw)
  To: Geert Uytterhoeven; +Cc: Nicholas Bellinger, scsi, Linux-Next, linux-kernel

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.

James

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [-next] ERROR: "strchr" [drivers/target/target_core_mod.ko] undefined!
  2011-01-07 15:44 ` James Bottomley
@ 2011-01-07 21:04   ` Nicholas A. Bellinger
  0 siblings, 0 replies; 3+ messages in thread
From: Nicholas A. Bellinger @ 2011-01-07 21:04 UTC (permalink / raw)
  To: James Bottomley; +Cc: Geert Uytterhoeven, scsi, Linux-Next, linux-kernel

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-01-07 21:10 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-01-07 10:57 [-next] ERROR: "strchr" [drivers/target/target_core_mod.ko] undefined! Geert Uytterhoeven
2011-01-07 15:44 ` James Bottomley
2011-01-07 21:04   ` Nicholas A. Bellinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox