summaryrefslogtreecommitdiffstats
path: root/libjava/include
diff options
context:
space:
mode:
authorrmathew <rmathew@138bc75d-0d04-0410-961f-82ee72b054a4>2006-06-29 14:57:39 +0000
committerrmathew <rmathew@138bc75d-0d04-0410-961f-82ee72b054a4>2006-06-29 14:57:39 +0000
commit795a5d4021e6db957b3f2e18e1468bd7064fda28 (patch)
treec184ad263e2312d7a38fbced2682933d1ad843bc /libjava/include
parenta589f7967ccc42f329a1627c541db03478c59eeb (diff)
downloadppe42-gcc-795a5d4021e6db957b3f2e18e1468bd7064fda28.tar.gz
ppe42-gcc-795a5d4021e6db957b3f2e18e1468bd7064fda28.zip
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115069 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/include')
-rw-r--r--libjava/include/java-stack.h33
-rw-r--r--libjava/include/posix.h7
-rw-r--r--libjava/include/win32.h11
3 files changed, 46 insertions, 5 deletions
diff --git a/libjava/include/java-stack.h b/libjava/include/java-stack.h
index 7bf4d7b39d0..eb1ddcce4c7 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 5b74eb7da77..15795ddfdaf 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 3e2beabe5d3..26c307c1d47 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__ */
OpenPOWER on IntegriCloud