On Tue, Dec 20, 2011 at 10:47 AM, Dong Xu Wang
<
address@hidden> wrote:
> 于 2011年12月20日 18:13, Stefan Hajnoczi 写道:
>
>> On Tue, Dec 20, 2011 at 05:03:47PM +0800, Dong Xu Wang wrote:
>>>
>>> From: Dong Xu Wang<
address@hidden>
>>>
>>> On some platforms, __LINE__ will not expand to real number in
>>> QEMU_BUILD_BUG_ON,
>>> so if using QEMU_BUILD_BUG_ON twice, compiler will report errors. This
>>> patch will
>>> fix it.
>>>
>>> BTW, I got error message on RHEL 6.1/gcc 4.4.5.
>>
>>
>> Can you post the gcc -E output of the file that produces the error as
>> well as the gcc error output?
>>
>> Stefan
>>
>>
>
> I doubled the following lines in block/qcow2-snapshot.c(line 211 and 212):
>
> QEMU_BUILD_BUG_ON(offsetof(QCowHeader, snapshots_offset) !=
> offsetof(QCowHeader, nb_snapshots) + sizeof(header_data.nb_snapshots));"
>
>
> While "gcc -E -C -I. block/qcow2-snapshot.c", I can get:
> typedef char
> qemu_build_bug_on____LINE__
> # 241 "block/qcow2-snapshot.c"
> [(__builtin_offsetof (QCowHeader, snapshots_offset) != __builtin_offsetof
> (QCowHeader, nb_snapshots) + sizeof(header_data.nb_snapshots))?-1:1];
>
> ;
> typedef char
> qemu_build_bug_on____LINE__
> # 243 "block/qcow2-snapshot.c"
> [(__builtin_offsetof (QCowHeader, snapshots_offset) != __builtin_offsetof
> (QCowHeader, nb_snapshots) + sizeof(header_data.nb_snapshots))?-1:1];
>
> __LINE__ are not expanded to real line number.
>
>
>
> While normally compiling, error message is:
> CC block/qcow2-snapshot.o
> block/qcow2-snapshot.c: In function \u2018qcow2_write_snapshots\u2019:
> block/qcow2-snapshot.c:244: error: redefinition of typedef
> \u2018qemu_build_bug_on____LINE__\u2019
> block/qcow2-snapshot.c:242: note: previous declaration of
> \u2018qemu_build_bug_on____LINE__\u2019 was here
> make: *** [block/qcow2-snapshot.o] Error 1