Re: [PATCH 3/3] symbol.c: Set correct size of array from parenthesized string initializer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Christopher Li wrote:
> On 05/16/2013 12:44 PM, Ramsay Jones wrote:
> 
>> diff --git a/validation/init-char-array1.c b/validation/init-char-array1.c
>> new file mode 100644
>> index 0000000..7427702
>> --- /dev/null
>> +++ b/validation/init-char-array1.c
>> @@ -0,0 +1,25 @@
>> +/*
>> + * for array of char, ("...") as the initializer is an gcc language
>> + * extension. check that a parenthesized string initializer is handled
>> + * correctly and that -Wparen-string warns about it's use.
>> + */
>> +static const char u[] = ("hello");
>> +static const char v[] = {"hello"};
>> +static const char w[] = "hello";
>> +static const char x[5] = "hello";
> 
> That seems not complete. I haven't found the official gcc rules
> about parenthesized string. I just try the following forms and
> gcc takes it.
> 
> char x1[] = { ("hello") };
> char x2[] = { (("hello")) };
> 
> I guess the rules is that parenthesized string can appear in
> any place where string was allowed.

Until i18n work started on git, I didn't know this was a gcc
extension at all! ;-) I looked at the gcc documentation available
to me at the time, and could not find it mentioned at all, let
alone as a gcc language extension. However, if it wasn't for the
-Wparen-string sparse warning, I wouldn't have suspected that
sparse was supposed to support it.

Also, I was slightly surprised that MSVC supported this syntax.
So, I looked at fixing sparse and came up with my patch. I then
found that tcc didn't support this syntax, which is not standard
C after all, so I submitted a patch to fix the git gettext 'N_'
macro which was the cause of the problem.

ATB,
Ramsay Jones



--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux