MLVM hotspot will not compile with GCC 4.3.2

Chanwit Kaewkasi chanwit at gmail.com
Mon Jul 6 18:50:40 PDT 2009


Hi all,

I upgraded the compile to GCC 4.3.2 and failed to rebuild hotspot.
The compiler reported as follow:

cc1plus: warnings being treated as errors
/opt/openjdk/bsd-port/hotspot/src/share/vm/oops/klass.cpp: In member
function 'virtual char* Klass::signature_name() const':
/opt/openjdk/bsd-port/hotspot/src/share/vm/oops/klass.cpp:505: error:
deprecated conversion from string constant to 'char*'

Some methods need declaring 'const char*' instead of 'char*'. Here's a
patch to correct them.

------------------------------------------------------------------------------

diff --git a/src/share/vm/oops/instanceKlass.cpp
b/src/share/vm/oops/instanceKlass.cpp
--- a/src/share/vm/oops/instanceKlass.cpp
+++ b/src/share/vm/oops/instanceKlass.cpp
@@ -1761,7 +1761,7 @@
   }
 }

-char* instanceKlass::signature_name() const {
+const char* instanceKlass::signature_name() const {
   const char* src = (const char*) (name()->as_C_string());
   const int src_length = (int)strlen(src);
   char* dest = NEW_RESOURCE_ARRAY(char, src_length + 3);
diff --git a/src/share/vm/oops/instanceKlass.hpp
b/src/share/vm/oops/instanceKlass.hpp
--- a/src/share/vm/oops/instanceKlass.hpp
+++ b/src/share/vm/oops/instanceKlass.hpp
@@ -678,7 +678,7 @@
 #endif // SERIALGC

   // Naming
-  char* signature_name() const;
+  const char* signature_name() const;

   // Iterators
   int oop_oop_iterate(oop obj, OopClosure* blk) {
diff --git a/src/share/vm/oops/klass.cpp b/src/share/vm/oops/klass.cpp
--- a/src/share/vm/oops/klass.cpp
+++ b/src/share/vm/oops/klass.cpp
@@ -501,7 +501,7 @@
 }


-char* Klass::signature_name() const {
+const char* Klass::signature_name() const {
   if (name() == NULL)  return "<unknown>";
   return name()->as_C_string();
 }
diff --git a/src/share/vm/oops/klass.hpp b/src/share/vm/oops/klass.hpp
--- a/src/share/vm/oops/klass.hpp
+++ b/src/share/vm/oops/klass.hpp
@@ -546,7 +546,7 @@
   // For arrays, this returns the name of the element with a leading '['.
   // For classes, this returns the name with a leading 'L' and a trailing ';'
   //     and the package separators as '/'.
-  virtual char* signature_name() const;
+  virtual const char* signature_name() const;

   // garbage collection support
   virtual void oop_follow_contents(oop obj) = 0;

------------------------------------------------------------------------------

Best regards,

Chanwit



More information about the mlvm-dev mailing list