Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 31 Jul 2004 11:32:57 -0700 (PDT)
From:      Jake Hamby <jhamby@anobject.com>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   java/69853: Patches to build java/jdk14 with GCC 3.4
Message-ID:  <200407311832.i6VIWvnd012723@localhost.my.domain>
Resent-Message-ID: <200407311840.i6VIeSJP062404@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         69853
>Category:       java
>Synopsis:       Patches to build java/jdk14 with GCC 3.4
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-java
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jul 31 18:40:28 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator:     Jake Hamby
>Release:        FreeBSD 5.2-CURRENT i386
>Organization:
anObject
>Environment:
System: FreeBSD atheros 5.2-CURRENT FreeBSD 5.2-CURRENT #0: Thu Jul 29 17:26:29 PDT 2004 root@atheros:/usr/home/work/ATHEROS i386

gcc (GCC) 3.4.2 [FreeBSD] 20040728
	
>Description:

JDK 1.4.2p6_4 doesn't build under GCC 3.4.2 due to stricter type checking
(patches attached).

>How-To-Repeat:

Build java/jdk-1.4.2p6_4 using GCC 3.4.2 recently committed to -current.

>Fix:

Some notes on the patches.  The first one is the only patch needed for the JDK
itself (it's casting away a const, but needs to be (byte*&) rather than (byte*)
or else GCC 3.4 won't find the matching member function).

The second patch is a bit of a hack for the Netscape 6/Mozilla plugin (which I've
verified will load and works okay for both mozilla-1.7.1,2 and firefox-0.9.1_1).
For UNIX, the correct HAVE_CPP_* macros are supposed to be defined by autoconf in,
for example, "xpcom/xpcom-config.h" (according to the headers installed by
Mozilla).  But this file is missing altogether from the version of the headers
installed by the BSD JDK patches, and GCC 3.4 really needs
HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX defined or else it fails because
"template<>" isn't being inserted in the right spots.  Since both GCC 3.4 and
the Metrowerks compiler support all of the HAVE_CPP features, I cheated and reused
those defines for the NS_UNIX build.


--- patch-awt_fontmanager_t2kScalaerContext.cpp begins here ---
--- ../../j2se/src/share/native/sun/awt/font/fontmanager/fontobjects/t2kScalerContext.cpp.orig	Fri Jul 30 18:00:09 2004
+++ ../../j2se/src/share/native/sun/awt/font/fontmanager/fontobjects/t2kScalerContext.cpp	Fri Jul 30 22:11:36 2004
@@ -937,14 +937,14 @@
 CMAPMapper::CharsToGlyphs(
     int count, const Unicode16 unicodes[], UInt32 glyphs[]) const
 {
-    ConvertUnicodeToGlyphs(*font, (unsigned char *)cmap, count, unicodes, glyphs);
+    ConvertUnicodeToGlyphs(*font, (byte*&)cmap, count, unicodes, glyphs);
 }
 
 void
 CMAPMapper::CharsToGlyphs(
         int count, const Unicode32 unicodes[], UInt32 glyphs[]) const
 {
-    ConvertUnicodeToGlyphs(*font, (unsigned char *)cmap, count, unicodes, glyphs);
+    ConvertUnicodeToGlyphs(*font, (byte*&)cmap, count, unicodes, glyphs);
 }
 
 //////////////////////////////////////////////////////////////////////////////
--- patch-awt_fontmanager_t2kScalaerContext.cpp ends here ---

--- patch-plugin::include::nscore.h begins here ---
--- ../../deploy/src/plugin/oji-plugin/include/mozilla_headers_ns610/nscore.h.orig	Fri Jul 30 18:00:05 2004
+++ ../../deploy/src/plugin/oji-plugin/include/mozilla_headers_ns610/nscore.h	Fri Jul 30 23:23:36 2004
@@ -163,7 +163,7 @@
   */
 
   /* under Metrowerks (Mac), we don't have autoconf yet */
-#ifdef __MWERKS__
+#if defined(__MWERKS__) || defined(NS_UNIX)
   #define HAVE_CPP_SPECIALIZATION
   #define HAVE_CPP_PARTIAL_SPECIALIZATION
   #define HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
--- ../../deploy/src/plugin/oji-plugin/include/mozilla_headers_ns600/nscore.h.orig	Fri Jul 30 18:00:04 2004
+++ ../../deploy/src/plugin/oji-plugin/include/mozilla_headers_ns600/nscore.h	Fri Jul 30 23:32:31 2004
@@ -163,7 +163,7 @@
   */
 
   /* under Metrowerks (Mac), we don't have autoconf yet */
-#ifdef __MWERKS__
+#if defined(__MWERKS__) || defined(NS_UNIX)
   #define HAVE_CPP_SPECIALIZATION
   #define HAVE_CPP_PARTIAL_SPECIALIZATION
   #define HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
--- patch-plugin::include::nscore.h ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200407311832.i6VIWvnd012723>