diff options
author | Ranjit Mathew <rmathew@gcc.gnu.org> | 2006-06-29 14:57:39 +0000 |
---|---|---|
committer | Ranjit Mathew <rmathew@gcc.gnu.org> | 2006-06-29 14:57:39 +0000 |
commit | 33792684238fe1f68be7f6f953c9198b9d200f52 (patch) | |
tree | c184ad263e2312d7a38fbced2682933d1ad843bc /libjava/include | |
parent | 6150b6026194c4ed9003f788ced0c16b18c5c567 (diff) | |
download | gcc-33792684238fe1f68be7f6f953c9198b9d200f52.zip gcc-33792684238fe1f68be7f6f953c9198b9d200f52.tar.gz gcc-33792684238fe1f68be7f6f953c9198b9d200f52.tar.bz2 |
javaprims.h (_Jv_uintptr_t): New typedef similar to uintptr_t in C99.
* gcj/javaprims.h (_Jv_uintptr_t): New typedef similar to uintptr_t in
C99.
* include/java-stack.h: Include stdlib.h.
(_Jv_AddrInfo): New structure to hold address information.
* include/posix.h (_Jv_platform_dladdr): Declare.
* include/win32.h (_Jv_platform_dladdr): Declare.
(backtrace): Remove declaration.
* posix.cc: Include dlfcn.h if available. Include java-stack.h.
(_Jv_platform_dladdr): Define.
* win32.cc: Include string.h. Include java-stack.h.
(backtrace): Remove.
(_Jv_platform_dladdr): Define.
* sysdep/i386/backtrace.h (fallback_backtrace): Check that a potential
frame pointer value is 32-bit word-aligned. Use operand of the CALL
instruction calling the current function to find its starting address.
* stacktrace.cc: Do not include dlfcn.h. Include platform.h.
(_Jv_StackTrace::getLineNumberForFrame): Use _Jv_platform_dladdr()
instead of dladdr().
(_Jv_StackTrace::GetStackTraceElements): Use nCodeMap even for Windows.
(_Jv_StackTrace::GetClassContext): Use fallback_backtrace() for
targets with SJLJ exceptions instead of using _Unwind_Backtrace().
(_Jv_StackTrace::GetFirstNonSystemClassLoader): Likewise.
From-SVN: r115069
Diffstat (limited to 'libjava/include')
-rw-r--r-- | libjava/include/java-stack.h | 33 | ||||
-rw-r--r-- | libjava/include/posix.h | 7 | ||||
-rw-r--r-- | libjava/include/win32.h | 11 |
3 files changed, 46 insertions, 5 deletions
diff --git a/libjava/include/java-stack.h b/libjava/include/java-stack.h index 7bf4d7b..eb1ddcc 100644 --- a/libjava/include/java-stack.h +++ b/libjava/include/java-stack.h @@ -1,6 +1,6 @@ // java-stack.h - Definitions for unwinding & inspecting the call stack. -/* Copyright (C) 2005 Free Software Foundation +/* Copyright (C) 2005, 2006 Free Software Foundation This file is part of libgcj. @@ -11,6 +11,7 @@ details. */ #ifndef __JV_STACKTRACE_H__ #define __JV_STACKTRACE_H__ +#include <stdlib.h> #include <unwind.h> #include <gcj/cni.h> @@ -126,5 +127,35 @@ public: }; +// Information about a given address. +struct _Jv_AddrInfo +{ + // File name of the defining module. + const char *file_name; + + // Base address of the loaded module. + void *base; + + // Name of the nearest symbol. + const char *sym_name; + + // Address of the nearest symbol. + void *sym_addr; + + ~_Jv_AddrInfo (void) + { + // On systems with a real dladdr(), the file and symbol names given by + // _Jv_platform_dladdr() are not dynamically allocated. On Windows, + // they are. + +#ifdef WIN32 + if (file_name) + free ((void *)file_name); + + if (sym_name) + free ((void *)sym_name); +#endif /* WIN32 */ + } +}; #endif /* __JV_STACKTRACE_H__ */ diff --git a/libjava/include/posix.h b/libjava/include/posix.h index 5b74eb7..15795dd 100644 --- a/libjava/include/posix.h +++ b/libjava/include/posix.h @@ -194,4 +194,11 @@ _Jv_pipe (int filedes[2]) return ::pipe (filedes); } +// Forward declaration. See java-stack.h for definition. +struct _Jv_AddrInfo; + +// Given an address, determine the executable or shared object that defines +// it and the nearest named symbol. +extern int _Jv_platform_dladdr (const void *addr, _Jv_AddrInfo *info); + #endif /* __JV_POSIX_H__ */ diff --git a/libjava/include/win32.h b/libjava/include/win32.h index 3e2beab..26c307c 100644 --- a/libjava/include/win32.h +++ b/libjava/include/win32.h @@ -11,7 +11,7 @@ details. */ #ifndef __JV_WIN32_H__ #define __JV_WIN32_H__ -// Enable UNICODE Support.? +// Enable UNICODE support? #ifdef MINGW_LIBGCJ_UNICODE #define UNICODE @@ -175,8 +175,11 @@ _Jv_platform_usleep (unsigned long usecs) } #endif /* JV_HASH_SYNCHRONIZATION */ -/* Store up to SIZE return address of the current program state in - ARRAY and return the exact number of values stored. */ -extern int backtrace (void **__array, int __size); +// Forward declaration. See java-stack.h for definition. +struct _Jv_AddrInfo; + +// Given an address, determine the executable or shared object that defines +// it and the nearest named symbol. +extern int _Jv_platform_dladdr (const void *addr, _Jv_AddrInfo *info); #endif /* __JV_WIN32_H__ */ |