Sparse throws the following warning, which I can't really understand:
$ make drivers/staging/vt6655/ C=2
[...]
CHECK drivers/staging/vt6655/datarate.c
drivers/staging/vt6655/datarate.c:302:40: warning: Initializer entry
defined twice
drivers/staging/vt6655/datarate.c:302:46: also defined here
The code looks fine to me:
bool bAutoRate[MAX_RATE] = {true, true, true, true, false, false,
true, true, true, true, true, true};
I've googled it and found only this LKML discussion:
https://lkml.org/lkml/2010/5/7/31
I've tested the suggested code sample and here are the results:
$ cat foo.c
typedef _Bool bool;
enum {
false = 0,
true = 1
};
static const bool foo[10] = {
true,
true,
false,
false,
};
$ sparse foo.c
foo.c:7:8: warning: Initializer entry defined twice
foo.c:8:8: also defined here
It this a sparse problem?
Thanks,
Mariusz
[adding linux-sparse mailing list]
On 10/19/14 02:46, Mariusz Gorski wrote:
> Sparse throws the following warning, which I can't really understand:
>
> $ make drivers/staging/vt6655/ C=2
> [...]
> CHECK drivers/staging/vt6655/datarate.c
> drivers/staging/vt6655/datarate.c:302:40: warning: Initializer entry
> defined twice
> drivers/staging/vt6655/datarate.c:302:46: also defined here
>
> The code looks fine to me:
> bool bAutoRate[MAX_RATE] = {true, true, true, true, false, false,
> true, true, true, true, true, true};
>
> I've googled it and found only this LKML discussion:
> https://lkml.org/lkml/2010/5/7/31
>
> I've tested the suggested code sample and here are the results:
> $ cat foo.c
> typedef _Bool bool;
> enum {
> false = 0,
> true = 1
> };
> static const bool foo[10] = {
> true,
> true,
> false,
> false,
> };
>
> $ sparse foo.c
> foo.c:7:8: warning: Initializer entry defined twice
> foo.c:8:8: also defined here
>
> It this a sparse problem?
>
> Thanks,
> Mariusz
> --
--
~Randy
On 19/10/14 18:21, Randy Dunlap wrote:
> [adding linux-sparse mailing list]
>
> On 10/19/14 02:46, Mariusz Gorski wrote:
>> Sparse throws the following warning, which I can't really understand:
>>
>> $ make drivers/staging/vt6655/ C=2
>> [...]
>> CHECK drivers/staging/vt6655/datarate.c
>> drivers/staging/vt6655/datarate.c:302:40: warning: Initializer entry
>> defined twice
>> drivers/staging/vt6655/datarate.c:302:46: also defined here
>>
>> The code looks fine to me:
>> bool bAutoRate[MAX_RATE] = {true, true, true, true, false, false,
>> true, true, true, true, true, true};
>>
>> I've googled it and found only this LKML discussion:
>> https://lkml.org/lkml/2010/5/7/31
>>
>> I've tested the suggested code sample and here are the results:
>> $ cat foo.c
>> typedef _Bool bool;
>> enum {
>> false = 0,
>> true = 1
>> };
>> static const bool foo[10] = {
>> true,
>> true,
>> false,
>> false,
>> };
>>
>> $ sparse foo.c
>> foo.c:7:8: warning: Initializer entry defined twice
>> foo.c:8:8: also defined here
>>
>> It this a sparse problem?
Yes, I imagine you are using a sparse version of v0.5.0 or
earlier right?
This was fixed by commit b3e9d87c6 ("sparse: make bits_to_bytes
round up instead of down", 16-07-2014), which describes to
v0.5.0-17-gb3e9d87, which has not been included in a released
version yet. (if you don't mind building from source, you could
build the master branch using a clone the git repository at
git://git.kernel.org/pub/scm/devel/sparse/sparse.git).
I'm afraid that I don't know when the next release is due.
HTH
ATB,
Ramsay Jones
Yes, I've actually used outdated sparse in version 0.4.3. After
updating to the latest one, built from master in git repo, the issue
is gone. Thanks.
On 19 October 2014 23:40, Ramsay Jones <[email protected]> wrote:
> On 19/10/14 18:21, Randy Dunlap wrote:
>> [adding linux-sparse mailing list]
>>
>> On 10/19/14 02:46, Mariusz Gorski wrote:
>>> Sparse throws the following warning, which I can't really understand:
>>>
>>> $ make drivers/staging/vt6655/ C=2
>>> [...]
>>> CHECK drivers/staging/vt6655/datarate.c
>>> drivers/staging/vt6655/datarate.c:302:40: warning: Initializer entry
>>> defined twice
>>> drivers/staging/vt6655/datarate.c:302:46: also defined here
>>>
>>> The code looks fine to me:
>>> bool bAutoRate[MAX_RATE] = {true, true, true, true, false, false,
>>> true, true, true, true, true, true};
>>>
>>> I've googled it and found only this LKML discussion:
>>> https://lkml.org/lkml/2010/5/7/31
>>>
>>> I've tested the suggested code sample and here are the results:
>>> $ cat foo.c
>>> typedef _Bool bool;
>>> enum {
>>> false = 0,
>>> true = 1
>>> };
>>> static const bool foo[10] = {
>>> true,
>>> true,
>>> false,
>>> false,
>>> };
>>>
>>> $ sparse foo.c
>>> foo.c:7:8: warning: Initializer entry defined twice
>>> foo.c:8:8: also defined here
>>>
>>> It this a sparse problem?
>
> Yes, I imagine you are using a sparse version of v0.5.0 or
> earlier right?
>
> This was fixed by commit b3e9d87c6 ("sparse: make bits_to_bytes
> round up instead of down", 16-07-2014), which describes to
> v0.5.0-17-gb3e9d87, which has not been included in a released
> version yet. (if you don't mind building from source, you could
> build the master branch using a clone the git repository at
> git://git.kernel.org/pub/scm/devel/sparse/sparse.git).
>
> I'm afraid that I don't know when the next release is due.
>
> HTH
>
> ATB,
> Ramsay Jones
>
>