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