2002-09-01 00:26:24

by Adrian Bunk

[permalink] [raw]
Subject: drivers/atm/firestream.c doesn't compile in 2.5.33


<-- snip -->

...
gcc -Wp,-MD,./.firestream.o.d -D__KERNEL__
-I/home/bunk/linux/kernel-2.5/linux-2.5.33-full/include -Wall
-Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer
-fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2
-march=k6 -nostdinc -iwithprefix include -g -DKBUILD_BASENAME=firestream
-c -o firestream.o firestream.c
firestream.c: In function `fs_open':
firestream.c:870: called object is not a function
firestream.c:870: parse error before string constant
firestream.c:1097: called object is not a function
firestream.c:1097: parse error before string constant
firestream.c: In function `fs_close':
firestream.c:1109: called object is not a function
firestream.c:1109: parse error before string constant
firestream.c:1159: called object is not a function
firestream.c:1159: parse error before string constant
...
make[2]: *** [firestream.o] Error 1
make[2]: Leaving directory `/home/bunk/linux/kernel-2.5/linux-2.5.33-full/drivers/atm'

<-- snip -->


cu
Adrian

--

You only think this is a free country. Like the US the UK spends a lot of
time explaining its a free country because its a police state.
Alan Cox


2002-09-01 01:25:47

by Alessandro Suardi

[permalink] [raw]
Subject: Re: drivers/atm/firestream.c doesn't compile in 2.5.33

Adrian Bunk wrote:
> <-- snip -->
>
> ...
> gcc -Wp,-MD,./.firestream.o.d -D__KERNEL__
> -I/home/bunk/linux/kernel-2.5/linux-2.5.33-full/include -Wall
> -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer
> -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2
> -march=k6 -nostdinc -iwithprefix include -g -DKBUILD_BASENAME=firestream
> -c -o firestream.o firestream.c
> firestream.c: In function `fs_open':
> firestream.c:870: called object is not a function
> firestream.c:870: parse error before string constant
> firestream.c:1097: called object is not a function
> firestream.c:1097: parse error before string constant
> firestream.c: In function `fs_close':
> firestream.c:1109: called object is not a function
> firestream.c:1109: parse error before string constant
> firestream.c:1159: called object is not a function
> firestream.c:1159: parse error before string constant

Same symptom as the cpia.c (and IrDA, too). Just change

#define func_enter() fs_dprintk (FS_DEBUG_FLOW, "fs: enter "
__FUNCTION__ "\n")
#define func_exit() fs_dprintk (FS_DEBUG_FLOW, "fs: exit "
__FUNCTION__ "\n")

to

#define func_enter() fs_dprintk (FS_DEBUG_FLOW, "fs: enter %s\n",
__FUNCTION__)
#define func_exit() fs_dprintk (FS_DEBUG_FLOW, "fs: exit %s\n",
__FUNCTION__)

(the 2.4.20-pre5 firestream.c has the fixed version already)

--alessandro

"everything dies, baby that's a fact
but maybe everything that dies someday comes back"
(Bruce Springsteen, "Atlantic City")

2002-09-01 09:10:15

by Rogier Wolff

[permalink] [raw]
Subject: Re: drivers/atm/firestream.c doesn't compile in 2.5.33

On Sun, Sep 01, 2002 at 03:28:03AM +0200, Alessandro Suardi wrote:
> Same symptom as the cpia.c (and IrDA, too). Just change
>
> #define func_enter() fs_dprintk (FS_DEBUG_FLOW, "fs: enter "
> __FUNCTION__ "\n")
>
> to
>
> #define func_enter() fs_dprintk (FS_DEBUG_FLOW, "fs: enter %s\n",
> __FUNCTION__)

Ehmm.

I wrote that code, and I made a decision to do it that way. Did
I use "invalid C" or did the C spec change?

Or did the __FUNCTION__ extension from gcc change? Someone please
explain.....

Roger.

--
** [email protected] ** http://www.BitWizard.nl/ ** +31-15-2600998 **
*-- BitWizard writes Linux device drivers for any device you may have! --*
* There are old pilots, and there are bold pilots.
* There are also old, bald pilots.

2002-09-01 09:15:06

by David Miller

[permalink] [raw]
Subject: Re: drivers/atm/firestream.c doesn't compile in 2.5.33

From: Rogier Wolff <[email protected]>
Date: Sun, 1 Sep 2002 11:14:33 +0200

Or did the __FUNCTION__ extension from gcc change? Someone please
explain.....

CPP pasting __FUNCTION__ is now deprecated because for c++ you
cannot do it at compile time. At least that is how I understand
the problem.

The long and short of it is that __FUNCTION__ cpp string pasting
is now illegal.