develooper Front page | perl.perl5.porters | Postings from May 2003

[perl #22201] patch: perl 5.8.0 compile error on ia64/HP-UX (comparing incompatible pointers)

From:
Petter Reinholdtsen
Date:
May 14, 2003 16:13
Subject:
[perl #22201] patch: perl 5.8.0 compile error on ia64/HP-UX (comparing incompatible pointers)
Message ID:
rt-22201-57602.4.57394514679393@bugs6.perl.org
# New Ticket Created by  Petter Reinholdtsen 
# Please include the string:  [perl #22201]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt2/Ticket/Display.html?id=22201 >



After fixing the configure and compile problems reported in bug
#22189, I ran into this compile problem on ia64/HP-UX:


cc-wrapper -c   -Ae -D_HPUX_SOURCE -Wl,+vnocompatwarnings +DD64 -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +O2 +Onolimit   -DVERSION=\"2.04\" -DXS_VERSION=\"2.04\" +Z "-I../.."   Storable.c
Error 168: "Storable.xs", line 1303 # Illegal types associated with operator '==': 'sv *(**)(...)' and 'sv *(*[27])(stcxt *,char *)'.
            cxt->hseen = ((cxt->retrieve_vtbl == sv_old_retrieve) ? newHV() : 0);
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Warning 863: "Storable.xs", line 3325 # Result of operator << is widened from int to unsigned long.
                    MBUF_INIT(0);
                    ^^^^^^^^^
Warning 863: "Storable.xs", line 3325 # Result of operator << is widened from int to unsigned long.
                    MBUF_INIT(0);
                    ^^^^^^^^^
Warning 863: "Storable.xs", line 5557 # Result of operator << is widened from int to unsigned long.
            MBUF_INIT(size);
            ^^^^^^^^^
Warning 863: "Storable.xs", line 5557 # Result of operator << is widened from int to unsigned long.
            MBUF_INIT(size);
            ^^^^^^^^^
make[1]: *** [Storable.o] Error 2


I'm not sure how this should be properly fixed, but casting both to
(void*) made it possible to compare the pointers, and got the code
compiling.  Other options are to cast one of the pointers to the type
of the others, or perhaps change the type of one of the pointers to
match the other.


Here is the patch I am using at the moment:

diff -ur src-5.8.0/ext/Storable/Storable.xs src-5.8.0-local/ext/Storable/Storable.xs
--- src-5.8.0/ext/Storable/Storable.xs	2002-07-12 00:02:37.000000000 +0200
+++ src-5.8.0-local/ext/Storable/Storable.xs	2003-05-14 17:34:47.000000000 +0200
@@ -1300,7 +1300,7 @@
 	 * new retrieve routines.
 	 */
 
-	cxt->hseen = ((cxt->retrieve_vtbl == sv_old_retrieve) ? newHV() : 0);
+	cxt->hseen = (((void*)cxt->retrieve_vtbl == (void*)sv_old_retrieve) ? newHV() : 0);
 
 	cxt->aseen = newAV();			/* Where retrieved objects are kept */
 	cxt->aclass = newAV();			/* Where seen classnames are kept */


When this patch and the patch in #22189 was used, perl 5.8.0 compiled
and make tests completed as it should. :)




nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About