re PR libgcj/21692 (unexpected java.lang.NoClassDefFoundError)
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Sat, 20 Aug 2005 20:26:26 +0000 (20:26 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Sat, 20 Aug 2005 20:26:26 +0000 (20:26 +0000)
PR libgcj/21692
* sysdep/pa/descriptor.h: New file.
* configure.host: Use sysdep/pa/descriptor.h on hppa*-*.

From-SVN: r103306

libjava/ChangeLog
libjava/configure.host
libjava/sysdep/pa/descriptor.h [new file with mode: 0644]

index 97b128474fca8d9a02107fade088c62a42937cf9..e3c9a6d1959687b036bddef53b69bd3581f6b86c 100644 (file)
@@ -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
index 7f57cb0841bbdb262fce39a19ccc5ced071627bc..d84757f7928c8bd17c263767c1f4db04cad8facb 100644 (file)
@@ -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 (file)
index 0000000..d988851
--- /dev/null
@@ -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))