diff options
author | John David Anglin <dave.anglin@nrc-cnrc.gc.ca> | 2005-08-20 20:26:26 +0000 |
---|---|---|
committer | John David Anglin <danglin@gcc.gnu.org> | 2005-08-20 20:26:26 +0000 |
commit | c348be20ae22608c1b61cc377ae58125b5583c97 (patch) | |
tree | 9f84797e3c6a84b09f4cb63db02114be51b19a3a /libjava | |
parent | 3c0764fc1e874d271f1f79bc771fc6d8df0875e8 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | libjava/configure.host | 6 | ||||
-rw-r--r-- | libjava/sysdep/pa/descriptor.h | 7 |
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)) |