Review: fixing hotspot fastdebug+universal build

Alexander Strange astrange at apple.com
Thu Jun 2 17:20:54 PDT 2011


This makes hotspot debug and fastdebug builds compile. Fastdebug works, but debug crashes on startup due to some other issue.

I posted it for review since I was unsure about the printf format changes - they work fine but might be a portability regression.

/:
diff --git a/make/hotspot-rules.gmk b/make/hotspot-rules.gmk
--- a/make/hotspot-rules.gmk
+++ b/make/hotspot-rules.gmk
@@ -66,13 +66,27 @@
 
 HOTSPOT_TARGET = all_product
 ifeq ($(PLATFORM), macosx)
+ifeq ($(ARCH), universal)
   HOTSPOT_TARGET = universal_product
 endif
+endif
+
 ifeq ($(DEBUG_NAME), debug)
   HOTSPOT_TARGET = all_debug
+ifeq ($(PLATFORM), macosx)
+ifeq ($(ARCH), universal)
+  HOTSPOT_TARGET = universal_debug
 endif
+endif
+endif
+
 ifeq ($(DEBUG_NAME), fastdebug)
   HOTSPOT_TARGET = all_fastdebug
+ifeq ($(PLATFORM), macosx)
+ifeq ($(ARCH), universal)
+  HOTSPOT_TARGET = universal_fastdebug
+endif
+endif
 endif
 
 ifeq ($(ZERO_BUILD), true)

hotspot:
diff --git a/make/Makefile b/make/Makefile
--- a/make/Makefile
+++ b/make/Makefile
@@ -473,6 +473,17 @@
 	$(MKDIR) -p $(EXPORT_JRE_LIB_DIR)/{client,server}
 	$(QUIETLY) $(MAKE) universalize
 
+universal_fastdebug:
+	$(QUIETLY) $(MAKE) ARCH_DATA_MODEL=32 all_fastdebug
+	$(QUIETLY) $(MAKE) ARCH_DATA_MODEL=64 all_fastdebug
+	$(MKDIR) -p $(EXPORT_JRE_LIB_DIR)/{client,server}
+	$(QUIETLY) $(MAKE) universalize
+
+universal_debug:
+	$(QUIETLY) $(MAKE) ARCH_DATA_MODEL=32 all_debug
+	$(QUIETLY) $(MAKE) ARCH_DATA_MODEL=64 all_debug
+	$(MKDIR) -p $(EXPORT_JRE_LIB_DIR)/{client,server}
+	$(QUIETLY) $(MAKE) universalize
 #
 # Check target
 #
diff --git a/src/share/vm/utilities/globalDefinitions.hpp b/src/share/vm/utilities/globalDefinitions.hpp
--- a/src/share/vm/utilities/globalDefinitions.hpp
+++ b/src/share/vm/utilities/globalDefinitions.hpp
@@ -1209,12 +1209,11 @@
 
 // Format macros that allow the field width to be specified.  The width must be
 // a string literal (e.g., "8") or a macro that evaluates to one.
+#define UINTX_FORMAT_W(width)   "%" #width PRIuPTR
 #ifdef _LP64
-#define UINTX_FORMAT_W(width)   UINT64_FORMAT_W(width)
 #define SSIZE_FORMAT_W(width)   INT64_FORMAT_W(width)
 #define SIZE_FORMAT_W(width)    UINT64_FORMAT_W(width)
 #else
-#define UINTX_FORMAT_W(width)   UINT32_FORMAT_W(width)
 #define SSIZE_FORMAT_W(width)   INT32_FORMAT_W(width)
 #define SIZE_FORMAT_W(width)    UINT32_FORMAT_W(width)
 #endif // _LP64
@@ -1228,15 +1227,10 @@
 // 4.3.2. So we have to use "%016x" or "%08x" to simulate the printing format.
 // GCC 4.3.2, however requires the data to be converted to "intptr_t" when
 // using "%x".
-#ifdef  _LP64
-#define PTR_FORMAT    PTR64_FORMAT
-#define SIZE_FORMAT   UINT64_FORMAT
-#define SSIZE_FORMAT  INT64_FORMAT
-#else   // !_LP64
-#define PTR_FORMAT    PTR32_FORMAT
-#define SIZE_FORMAT   UINT32_FORMAT
-#define SSIZE_FORMAT  INT32_FORMAT
-#endif  // _LP64
+#define PTR_FORMAT    "%08" PRIxPTR
+#define SIZE_FORMAT   "%" PRIuPTR
+#define SSIZE_FORMAT  "%" PRIdPTR
+
 #define UINTX_FORMAT  "%" PRIuPTR
 #define INTX_FORMAT   "%" PRIdPTR
 



More information about the macosx-port-dev mailing list