Clean up some warnings

Andrew Haley aph@redhat.com
Thu Jan 11 13:51:00 GMT 2007


There's an aliasing violation in x86_64-signal.h, and a couple of
warnings. Fixed thusly.
Andrew.
2007年01月11日 Andrew Haley <aph@redhat.com>
	* prims.cc (jdwpOptions) Fix deprecated cast from char[] constant
	to char*.
	* include/x86_64-signal.h (HANDLE_DIVIDE_OVERFLOW): Rewrite to fix
	aliasing violation.
Index: prims.cc
===================================================================
--- prims.cc	(revision 120638)
+++ prims.cc	(working copy)
@@ -87,7 +87,7 @@
 // Number of bytes in largest array object we create. This could be
 // increased to the largest size_t value, so long as the appropriate
 // functions are changed to take a size_t argument instead of jint.
-#define MAX_OBJECT_SIZE ((1<<31) - 1)
+#define MAX_OBJECT_SIZE (((size_t)1<<31) - 1)
 
 // Properties set at compile time.
 const char **_Jv_Compiler_Properties = NULL;
@@ -104,7 +104,8 @@
 
 // Debugging options
 static bool remoteDebug = false;
-static char *jdwpOptions = "";
+static char defaultJdwpOptions[] = "";
+static char *jdwpOptions = defaultJdwpOptions;
 
 // Argument support.
 int
Index: include/x86_64-signal.h
===================================================================
--- include/x86_64-signal.h	(revision 120638)
+++ include/x86_64-signal.h	(working copy)
@@ -29,9 +29,8 @@
 do									\
 {									\
 struct ucontext *_uc = (struct ucontext *)_p;				\
- volatile struct sigcontext *_sc = (struct sigcontext *) &_uc->uc_mcontext; \
-									\
- register unsigned char *_rip = (unsigned char *)_sc->rip;		\
+ gregset_t &_gregs = _uc->uc_mcontext.gregs;				\
+ unsigned char *_rip = (unsigned char *)_gregs[REG_RIP];		\
 									\
 /* According to the JVM spec, "if the dividend is the negative	\
 * integer of largest possible magnitude for the type and the		\
@@ -64,15 +63,17 @@
 if (((_modrm >> 3) & 7) == 7)					\
 	{								\
 	 if (_is_64_bit)						\
-	 _min_value_dividend = (_sc->rax == 0x8000000000000000L);	\
+	 _min_value_dividend =					\
+	 _gregs[REG_RAX] == (greg_t)0x8000000000000000UL;		\
 	 else								\
-	 _min_value_dividend = ((_sc->rax & 0xffffffff) == 0x80000000); \
+	 _min_value_dividend =					\
+	 (_gregs[REG_RAX] & 0xffffffff) == (greg_t)0x80000000UL;	\
 	}								\
 									\
 if (_min_value_dividend)						\
 	{								\
 	 unsigned char _rm = _modrm & 7;				\
-	 _sc->rdx = 0; /* the remainder is zero */			\
+	 _gregs[REG_RDX] = 0; /* the remainder is zero */		\
 	 switch (_modrm >> 6)						\
 	 {								\
 	 case 0: /* register indirect */				\
@@ -95,7 +96,7 @@
 	 break;							\
 	 }								\
 	 _rip += 2;							\
-	 _sc->rip = (unsigned long)_rip;				\
+	 _gregs[REG_RIP] = (greg_t)_rip;				\
 	 return;							\
 	}								\
 }									\


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /