On Wed, Aug 14, 2013 at 4:36 PM, Uros Bizjak <ubiz...@gmail.com> wrote:
> On Wed, Aug 14, 2013 at 4:34 PM, Gabriel Dos Reis
> <g...@integrable-solutions.net> wrote:
>> On Wed, Aug 14, 2013 at 9:22 AM, Uros Bizjak <ubiz...@gmail.com> wrote:
>>>
>>> On Wed, Aug 14, 2013 at 4:05 PM, Gabriel Dos Reis
>>> <g...@integrable-solutions.net> wrote:
>>> > I agree 'const void*' is preferable, and all the places you mention should
>>> > be covered too.
>>>
>>> I already installed my original patch, so attached incremental patch
>>> implements preferred solution.
>>>
>>> 2013-08-14  Uros Bizjak  <ubiz...@gmail.com>
>>>
>>>         * src/c++98/compatibility.cc (_ZTIe): Use (const cast *)
>>>         to avoid -Wcast-qual warnings.
>>>         (_ZTIPe): Ditto.
>>>         (ZTIPKe): Ditto.
>>>
>>> Tested on alphaev68-pc-linux-gnu and installed on mainline SVN.
>>>
>>> Is this solution also OK for other release branches?
>>>
>>> Uros.
>>
>> Sorry, when I said 'const void*' was OK, I implicitly assumed that you would
>> use C++-style cast reinterpret_cast<const void*>(_Z….).  Same for
>> reinterpret_cast<const void*>(1);
>
> Ah, OK. I'll add this in a moment.

Like the attached patch?

Again, build tested on alphaev68-pc-linux-gnu.

Uros.
Index: src/c++98/compatibility.cc
===================================================================
--- src/c++98/compatibility.cc  (revision 201727)
+++ src/c++98/compatibility.cc  (working copy)
@@ -517,16 +517,21 @@
 extern __attribute__((used, weak)) const char _ZTSPe[3] = "Pe";
 extern __attribute__((used, weak)) const char _ZTSPKe[4] = "PKe";
 extern __attribute__((used, weak)) const void * const _ZTIe[2]
-  = { (const void *) &_ZTVN10__cxxabiv123__fundamental_type_infoE[2],
-      (const void *) _ZTSe };
+  = { reinterpret_cast<const void *>
+      (&_ZTVN10__cxxabiv123__fundamental_type_infoE[2]),
+      reinterpret_cast<const void *>(_ZTSe) };
 extern __attribute__((used, weak)) const void * const _ZTIPe[4]
-  = { (const void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
-      (const void *) _ZTSPe, (const void *) 0L,
-      (const void *) _ZTIe };
+  = { reinterpret_cast<const void *>
+      (&_ZTVN10__cxxabiv119__pointer_type_infoE[2]),
+      reinterpret_cast<const void *>(_ZTSPe),
+      reinterpret_cast<const void *>(0L),
+      reinterpret_cast<const void *>(_ZTIe) };
 extern __attribute__((used, weak)) const void * const _ZTIPKe[4]
-  = { (const void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
-      (const void *) _ZTSPKe, (const void *) 1L,
-      (const void *) _ZTIe };
+  = { reinterpret_cast<const void *>
+      (&_ZTVN10__cxxabiv119__pointer_type_infoE[2]),
+      reinterpret_cast<const void *>(_ZTSPKe),
+      reinterpret_cast<const void *>(1L),
+      reinterpret_cast<const void *>(_ZTIe) };
 #endif // _GLIBCXX_LONG_DOUBLE_COMPAT
 
 #ifdef _GLIBCXX_SYMVER_DARWIN

Reply via email to