2003-05-17 19:03:20

by Sam Ravnborg

[permalink] [raw]
Subject: [PATCH] Remove 'strchr' warning from reiserfs

Hi Linus, please apply - maintainer cc:ed for info.

Reiserfs emits a warning about strchr being defined but not
used. I finally tracked down the reason for this.
gcc - when seeing strstr(x, "%") recognized that the second parameter
is a char, and therefore uses strchr instead of strstr.
The workaround to avoid the warning is to replace the call
to strstr with strchr - which is OK.

This hides the warning, and brings us down to 6 warnings for a
make defconfig bzImage.

Sam

===== fs/reiserfs/prints.c 1.21 vs edited =====
--- 1.21/fs/reiserfs/prints.c Sun Mar 23 07:14:13 2003
+++ edited/fs/reiserfs/prints.c Sat May 17 21:08:16 2003
@@ -164,7 +164,7 @@

*skip = 0;

- while ((k = strstr (k, "%")) != NULL)
+ while ((k = strchr (k, '%')) != NULL)
{
if (k[1] == 'k' || k[1] == 'K' || k[1] == 'h' || k[1] == 't' ||
k[1] == 'z' || k[1] == 'b' || k[1] == 'y' || k[1] == 'a' ) {


2003-05-19 19:34:25

by Stephen Hemminger

[permalink] [raw]
Subject: Re: [PATCH] Remove 'strchr' warning from reiserfs

On Sat, 17 May 2003 21:16:11 +0200
Sam Ravnborg <[email protected]> wrote:

> Hi Linus, please apply - maintainer cc:ed for info.
>
> Reiserfs emits a warning about strchr being defined but not
> used. I finally tracked down the reason for this.
> gcc - when seeing strstr(x, "%") recognized that the second parameter
> is a char, and therefore uses strchr instead of strstr.
> The workaround to avoid the warning is to replace the call
> to strstr with strchr - which is OK.
>
> This hides the warning, and brings us down to 6 warnings for a
> make defconfig bzImage.
>
> Sam

Good job finding this, several others have looked and never found what
was causing it. Is this gcc behaviour documented anywhere? What other
surprises are there?

2003-05-19 21:20:26

by Sam Ravnborg

[permalink] [raw]
Subject: Re: [PATCH] Remove 'strchr' warning from reiserfs

On Mon, May 19, 2003 at 12:47:12PM -0700, Stephen Hemminger wrote:
>
> Is this gcc behaviour documented anywhere?

I dropped a mail to gcc-bugs - the reply was:

=======
The kernel is a special case; GCC is entitled to assume the existence of
standard C library functions.
=======

So when messing with standard functions we may expect a few suprises,
which I think is fair enough.

Sam

2003-05-20 00:13:58

by Kurt Wall

[permalink] [raw]
Subject: Re: [PATCH] Remove 'strchr' warning from reiserfs

An unnamed Administration source, Sam Ravnborg, wrote:
% On Mon, May 19, 2003 at 12:47:12PM -0700, Stephen Hemminger wrote:
% >
% > Is this gcc behaviour documented anywhere?
%
% I dropped a mail to gcc-bugs - the reply was:
%
% =======
% The kernel is a special case; GCC is entitled to assume the existence of
% standard C library functions.
% =======
%
% So when messing with standard functions we may expect a few suprises,
% which I think is fair enough.

Hmm. And -nostdlib (or -nodefaultlibs) doesn't catch it?

K
--
According to Kentucky state law, every person must take a bath at least
once a year.