aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>2005-08-20 20:26:26 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2005-08-20 20:26:26 +0000
commitc348be20ae22608c1b61cc377ae58125b5583c97 (patch)
tree9f84797e3c6a84b09f4cb63db02114be51b19a3a /libjava
parent3c0764fc1e874d271f1f79bc771fc6d8df0875e8 (diff)
downloadgcc-c348be20ae22608c1b61cc377ae58125b5583c97.zip
gcc-c348be20ae22608c1b61cc377ae58125b5583c97.tar.gz
gcc-c348be20ae22608c1b61cc377ae58125b5583c97.tar.bz2
re PR libgcj/21692 (unexpected java.lang.NoClassDefFoundError)
PR libgcj/21692 * sysdep/pa/descriptor.h: New file. * configure.host: Use sysdep/pa/descriptor.h on hppa*-*. From-SVN: r103306
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog6
-rw-r--r--libjava/configure.host6
-rw-r--r--libjava/sysdep/pa/descriptor.h7
3 files changed, 18 insertions, 1 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 97b1284..e3c9a6d 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,9 @@
+2005-08-20 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR libgcj/21692
+ * sysdep/pa/descriptor.h: New file.
+ * configure.host: Use sysdep/pa/descriptor.h on hppa*-*.
+
2005-08-19 Andrew Pinski <pinskia@physics.uc.edu>
* Makefile.am (extra_ldflags_libjava): New variable to
diff --git a/libjava/configure.host b/libjava/configure.host
index 7f57cb0..d84757f 100644
--- a/libjava/configure.host
+++ b/libjava/configure.host
@@ -278,10 +278,14 @@ case "${host}" in
esac
case "${host}" in
- ia64-* | hppa*-*)
+ ia64-*)
descriptor_h=sysdep/descriptor-y.h
;;
+ hppa*-*)
+ descriptor_h=sysdep/pa/descriptor.h
+ ;;
+
rs6000-* | powerpc*-*)
descriptor_h=sysdep/powerpc/descriptor.h
;;
diff --git a/libjava/sysdep/pa/descriptor.h b/libjava/sysdep/pa/descriptor.h
new file mode 100644
index 0000000..d988851
--- /dev/null
+++ b/libjava/sysdep/pa/descriptor.h
@@ -0,0 +1,7 @@
+// Given a function pointer, return the code address.
+// If the plabel bit is set, mask it off and return the code from the
+// first word of the function descriptor. Otherwise, the function
+// pointer is the code address.
+
+#define UNWRAP_FUNCTION_DESCRIPTOR(X) \
+ (((unsigned int)(X)) & 2 ? *(void **)(((unsigned int)(X)) & ~3) : (X))