6681796: hotspot build failure on gcc 4.2.x (ubuntu 8.04) w/ openjdk 6
Fixed the cast from char* to const char* and tried to use const char* as much as possible Reviewed-by: never, kamg
This commit is contained in:
parent
98b9988c29
commit
cb8502a58c
@ -132,7 +132,7 @@ JVM_END
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
struct siglabel {
|
struct siglabel {
|
||||||
char *name;
|
const char *name;
|
||||||
int number;
|
int number;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -75,8 +75,8 @@ int os::Linux::_page_size = -1;
|
|||||||
bool os::Linux::_is_floating_stack = false;
|
bool os::Linux::_is_floating_stack = false;
|
||||||
bool os::Linux::_is_NPTL = false;
|
bool os::Linux::_is_NPTL = false;
|
||||||
bool os::Linux::_supports_fast_thread_cpu_time = false;
|
bool os::Linux::_supports_fast_thread_cpu_time = false;
|
||||||
char * os::Linux::_glibc_version = NULL;
|
const char * os::Linux::_glibc_version = NULL;
|
||||||
char * os::Linux::_libpthread_version = NULL;
|
const char * os::Linux::_libpthread_version = NULL;
|
||||||
|
|
||||||
static jlong initial_time_count=0;
|
static jlong initial_time_count=0;
|
||||||
|
|
||||||
@ -213,9 +213,9 @@ pid_t os::Linux::gettid() {
|
|||||||
// the system call returns 1. This causes the VM to act as if it is
|
// the system call returns 1. This causes the VM to act as if it is
|
||||||
// a single processor and elide locking (see is_MP() call).
|
// a single processor and elide locking (see is_MP() call).
|
||||||
static bool unsafe_chroot_detected = false;
|
static bool unsafe_chroot_detected = false;
|
||||||
static char *unstable_chroot_error = "/proc file system not found.\n"
|
static const char *unstable_chroot_error = "/proc file system not found.\n"
|
||||||
"Java may be unstable running multithreaded in a chroot "
|
"Java may be unstable running multithreaded in a chroot "
|
||||||
"environment on Linux when /proc filesystem is not mounted.";
|
"environment on Linux when /proc filesystem is not mounted.";
|
||||||
|
|
||||||
void os::Linux::initialize_system_info() {
|
void os::Linux::initialize_system_info() {
|
||||||
_processor_count = sysconf(_SC_NPROCESSORS_CONF);
|
_processor_count = sysconf(_SC_NPROCESSORS_CONF);
|
||||||
@ -544,26 +544,23 @@ void os::Linux::libpthread_init() {
|
|||||||
if (n > 0) {
|
if (n > 0) {
|
||||||
char *str = (char *)malloc(n);
|
char *str = (char *)malloc(n);
|
||||||
confstr(_CS_GNU_LIBPTHREAD_VERSION, str, n);
|
confstr(_CS_GNU_LIBPTHREAD_VERSION, str, n);
|
||||||
|
|
||||||
// Vanilla RH-9 (glibc 2.3.2) has a bug that confstr() always tells
|
// Vanilla RH-9 (glibc 2.3.2) has a bug that confstr() always tells
|
||||||
// us "NPTL-0.29" even we are running with LinuxThreads. Check if this
|
// us "NPTL-0.29" even we are running with LinuxThreads. Check if this
|
||||||
// is the case:
|
// is the case. LinuxThreads has a hard limit on max number of threads.
|
||||||
|
// So sysconf(_SC_THREAD_THREADS_MAX) will return a positive value.
|
||||||
|
// On the other hand, NPTL does not have such a limit, sysconf()
|
||||||
|
// will return -1 and errno is not changed. Check if it is really NPTL.
|
||||||
if (strcmp(os::Linux::glibc_version(), "glibc 2.3.2") == 0 &&
|
if (strcmp(os::Linux::glibc_version(), "glibc 2.3.2") == 0 &&
|
||||||
strstr(str, "NPTL")) {
|
strstr(str, "NPTL") &&
|
||||||
// LinuxThreads has a hard limit on max number of threads. So
|
sysconf(_SC_THREAD_THREADS_MAX) > 0) {
|
||||||
// sysconf(_SC_THREAD_THREADS_MAX) will return a positive value.
|
free(str);
|
||||||
// On the other hand, NPTL does not have such a limit, sysconf()
|
os::Linux::set_libpthread_version("linuxthreads");
|
||||||
// will return -1 and errno is not changed. Check if it is really
|
} else {
|
||||||
// NPTL:
|
os::Linux::set_libpthread_version(str);
|
||||||
if (sysconf(_SC_THREAD_THREADS_MAX) > 0) {
|
|
||||||
free(str);
|
|
||||||
str = "linuxthreads";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
os::Linux::set_libpthread_version(str);
|
|
||||||
} else {
|
} else {
|
||||||
// glibc before 2.3.2 only has LinuxThreads.
|
// glibc before 2.3.2 only has LinuxThreads.
|
||||||
os::Linux::set_libpthread_version("linuxthreads");
|
os::Linux::set_libpthread_version("linuxthreads");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strstr(libpthread_version(), "NPTL")) {
|
if (strstr(libpthread_version(), "NPTL")) {
|
||||||
@ -4632,11 +4629,7 @@ extern char** environ;
|
|||||||
// Unlike system(), this function can be called from signal handler. It
|
// Unlike system(), this function can be called from signal handler. It
|
||||||
// doesn't block SIGINT et al.
|
// doesn't block SIGINT et al.
|
||||||
int os::fork_and_exec(char* cmd) {
|
int os::fork_and_exec(char* cmd) {
|
||||||
char * argv[4];
|
const char * argv[4] = {"sh", "-c", cmd, NULL};
|
||||||
argv[0] = "sh";
|
|
||||||
argv[1] = "-c";
|
|
||||||
argv[2] = cmd;
|
|
||||||
argv[3] = NULL;
|
|
||||||
|
|
||||||
// fork() in LinuxThreads/NPTL is not async-safe. It needs to run
|
// fork() in LinuxThreads/NPTL is not async-safe. It needs to run
|
||||||
// pthread_atfork handlers and reset pthread library. All we need is a
|
// pthread_atfork handlers and reset pthread library. All we need is a
|
||||||
@ -4661,7 +4654,7 @@ int os::fork_and_exec(char* cmd) {
|
|||||||
// IA64 should use normal execve() from glibc to match the glibc fork()
|
// IA64 should use normal execve() from glibc to match the glibc fork()
|
||||||
// above.
|
// above.
|
||||||
NOT_IA64(syscall(__NR_execve, "/bin/sh", argv, environ);)
|
NOT_IA64(syscall(__NR_execve, "/bin/sh", argv, environ);)
|
||||||
IA64_ONLY(execve("/bin/sh", argv, environ);)
|
IA64_ONLY(execve("/bin/sh", (char* const*)argv, environ);)
|
||||||
|
|
||||||
// execve failed
|
// execve failed
|
||||||
_exit(-1);
|
_exit(-1);
|
||||||
|
@ -52,8 +52,8 @@ class Linux {
|
|||||||
static address _initial_thread_stack_bottom;
|
static address _initial_thread_stack_bottom;
|
||||||
static uintptr_t _initial_thread_stack_size;
|
static uintptr_t _initial_thread_stack_size;
|
||||||
|
|
||||||
static char *_glibc_version;
|
static const char *_glibc_version;
|
||||||
static char *_libpthread_version;
|
static const char *_libpthread_version;
|
||||||
|
|
||||||
static bool _is_floating_stack;
|
static bool _is_floating_stack;
|
||||||
static bool _is_NPTL;
|
static bool _is_NPTL;
|
||||||
@ -72,8 +72,8 @@ class Linux {
|
|||||||
static julong physical_memory() { return _physical_memory; }
|
static julong physical_memory() { return _physical_memory; }
|
||||||
static void initialize_system_info();
|
static void initialize_system_info();
|
||||||
|
|
||||||
static void set_glibc_version(char *s) { _glibc_version = s; }
|
static void set_glibc_version(const char *s) { _glibc_version = s; }
|
||||||
static void set_libpthread_version(char *s) { _libpthread_version = s; }
|
static void set_libpthread_version(const char *s) { _libpthread_version = s; }
|
||||||
|
|
||||||
static bool supports_variable_stack_size();
|
static bool supports_variable_stack_size();
|
||||||
|
|
||||||
@ -134,8 +134,8 @@ class Linux {
|
|||||||
static bool chained_handler(int sig, siginfo_t* siginfo, void* context);
|
static bool chained_handler(int sig, siginfo_t* siginfo, void* context);
|
||||||
|
|
||||||
// GNU libc and libpthread version strings
|
// GNU libc and libpthread version strings
|
||||||
static char *glibc_version() { return _glibc_version; }
|
static const char *glibc_version() { return _glibc_version; }
|
||||||
static char *libpthread_version() { return _libpthread_version; }
|
static const char *libpthread_version() { return _libpthread_version; }
|
||||||
|
|
||||||
// NPTL or LinuxThreads?
|
// NPTL or LinuxThreads?
|
||||||
static bool is_LinuxThreads() { return !_is_NPTL; }
|
static bool is_LinuxThreads() { return !_is_NPTL; }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user