diff --git a/libjava/ChangeLog b/libjava/ChangeLog index a7bed7fc5ad0fee1098272e1de383afba5ce4c70..23ec9f58c930479f78c975e09a9f754a9bc5171d 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,10 @@ +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. + 2007-01-10 Tom Tromey <tromey@redhat.com> * gnu/gcj/xlib/*.h: New files. diff --git a/libjava/include/x86_64-signal.h b/libjava/include/x86_64-signal.h index 479be3ff898b1f05605ae3f1cb708dad464a4891..ede92a482f4938544d3ee6747ce5d2f6258e07f7 100644 --- a/libjava/include/x86_64-signal.h +++ b/libjava/include/x86_64-signal.h @@ -29,9 +29,8 @@ static void _Jv_##_name (int, siginfo_t *, \ 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 @@ do \ 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 @@ do \ break; \ } \ _rip += 2; \ - _sc->rip = (unsigned long)_rip; \ + _gregs[REG_RIP] = (greg_t)_rip; \ return; \ } \ } \ diff --git a/libjava/prims.cc b/libjava/prims.cc index 3f88fb7db764222c544f721bf2859853e9003004..00d547017f46ae35466c715261ec49dc7eea6393 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -87,7 +87,7 @@ static java::lang::OutOfMemoryError *no_memory; // 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 @@ int _Jv_argc; // Debugging options static bool remoteDebug = false; -static char *jdwpOptions = ""; +static char defaultJdwpOptions[] = ""; +static char *jdwpOptions = defaultJdwpOptions; // Argument support. int