For PR libgcj/5103:
* include/jvm.h (__GCJ_JNI_IMPL__): Define. * include/config.h.in: Rebuilt. * configure: Rebuilt. * configure.in: Define JV_HAVE_INTTYPES_H if inttypes.h found. Added comment for HAVE_DLOPEN to avoid autoheader error. * gcj/libgcj-config.h.in (JV_HAVE_INTTYPES_H): Added. * include/jni.h: Include <gcj/libgcj-config.h>. Don't include CNI-specific headers if we are compiling ordinary JNI code with a C++ compiler. Include <inttypes.h> and JNIWeakRef.h when appropriate. * jni.cc: Don't include JNIWeakRef.h. From-SVN: r48082
This commit is contained in:
parent
68940f3f3c
commit
04942eac9b
8 changed files with 493 additions and 316 deletions
|
@ -1,5 +1,19 @@
|
||||||
2001-12-16 Tom Tromey <tromey@redhat.com>
|
2001-12-16 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
|
For PR libgcj/5103:
|
||||||
|
* include/jvm.h (__GCJ_JNI_IMPL__): Define.
|
||||||
|
* include/config.h.in: Rebuilt.
|
||||||
|
* configure: Rebuilt.
|
||||||
|
* configure.in: Define JV_HAVE_INTTYPES_H if inttypes.h found.
|
||||||
|
Added comment for HAVE_DLOPEN to avoid autoheader error.
|
||||||
|
* gcj/libgcj-config.h.in (JV_HAVE_INTTYPES_H): Added.
|
||||||
|
* include/jni.h: Include <gcj/libgcj-config.h>. Don't include
|
||||||
|
CNI-specific headers if we are compiling ordinary JNI code with a
|
||||||
|
C++ compiler. Include <inttypes.h> and JNIWeakRef.h when
|
||||||
|
appropriate.
|
||||||
|
* jni.cc: Don't include JNIWeakRef.h.
|
||||||
|
(__GCJ_JNI_IMPL__): Don't define.
|
||||||
|
|
||||||
For PR java/5088:
|
For PR java/5088:
|
||||||
* java/lang/natClassLoader.cc (_Jv_InitNewClassFields): New
|
* java/lang/natClassLoader.cc (_Jv_InitNewClassFields): New
|
||||||
function.
|
function.
|
||||||
|
|
651
libjava/configure
vendored
651
libjava/configure
vendored
File diff suppressed because it is too large
Load diff
|
@ -567,7 +567,8 @@ else
|
||||||
AC_MSG_ERROR([memcpy is required])
|
AC_MSG_ERROR([memcpy is required])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_CHECK_LIB(dl, dlopen, [AC_DEFINE(HAVE_DLOPEN)])
|
AC_CHECK_LIB(dl, dlopen, [
|
||||||
|
AC_DEFINE(HAVE_DLOPEN, 1, [Define if dlopen is available])])
|
||||||
|
|
||||||
# Some library-finding code we stole from Tcl.
|
# Some library-finding code we stole from Tcl.
|
||||||
#--------------------------------------------------------------------
|
#--------------------------------------------------------------------
|
||||||
|
@ -727,10 +728,14 @@ CFLAGS="$save_CFLAGS"
|
||||||
dnl We check for sys/filio.h because Solaris 2.5 defines FIONREAD there.
|
dnl We check for sys/filio.h because Solaris 2.5 defines FIONREAD there.
|
||||||
dnl On that system, sys/ioctl.h will not include sys/filio.h unless
|
dnl On that system, sys/ioctl.h will not include sys/filio.h unless
|
||||||
dnl BSD_COMP is defined; just including sys/filio.h is simpler.
|
dnl BSD_COMP is defined; just including sys/filio.h is simpler.
|
||||||
AC_CHECK_HEADERS(unistd.h bstring.h sys/time.h sys/types.h fcntl.h sys/ioctl.h sys/filio.h sys/stat.h sys/select.h sys/socket.h netinet/in.h arpa/inet.h netdb.h pwd.h sys/config.h inttypes.h stdint.h langinfo.h locale.h)
|
AC_CHECK_HEADERS(unistd.h bstring.h sys/time.h sys/types.h fcntl.h sys/ioctl.h sys/filio.h sys/stat.h sys/select.h sys/socket.h netinet/in.h arpa/inet.h netdb.h pwd.h sys/config.h stdint.h langinfo.h locale.h)
|
||||||
dnl We avoid AC_HEADER_DIRENT since we really only care about dirent.h
|
dnl We avoid AC_HEADER_DIRENT since we really only care about dirent.h
|
||||||
dnl for now. If you change this, you also must update natFile.cc.
|
dnl for now. If you change this, you also must update natFile.cc.
|
||||||
AC_CHECK_HEADERS(dirent.h)
|
AC_CHECK_HEADERS(dirent.h)
|
||||||
|
AC_CHECK_HEADERS(inttypes.h, [
|
||||||
|
AC_DEFINE(HAVE_INTTYPES_H, 1, [Define if <inttypes.h> is available])
|
||||||
|
AC_DEFINE(JV_HAVE_INTTYPES_H, 1, [Define if <inttypes.h> is available])
|
||||||
|
])
|
||||||
|
|
||||||
AC_CHECK_TYPE([ssize_t], [int])
|
AC_CHECK_TYPE([ssize_t], [int])
|
||||||
|
|
||||||
|
|
|
@ -3,3 +3,6 @@
|
||||||
|
|
||||||
/* Define if hash synchronization is in use. */
|
/* Define if hash synchronization is in use. */
|
||||||
#undef JV_HASH_SYNCHRONIZATION
|
#undef JV_HASH_SYNCHRONIZATION
|
||||||
|
|
||||||
|
/* Define if <inttypes.h> is available. */
|
||||||
|
#undef JV_HAVE_INTTYPES_H
|
||||||
|
|
|
@ -148,8 +148,6 @@
|
||||||
/* Define if you have dladdr() */
|
/* Define if you have dladdr() */
|
||||||
#undef HAVE_DLADDR
|
#undef HAVE_DLADDR
|
||||||
|
|
||||||
/* Define if yo have dlopen(). */
|
|
||||||
#undef HAVE_DLOPEN
|
|
||||||
|
|
||||||
/* Define if getuid() and friends are missing. */
|
/* Define if getuid() and friends are missing. */
|
||||||
#undef NO_GETUID
|
#undef NO_GETUID
|
||||||
|
@ -394,3 +392,12 @@
|
||||||
/* Define if struct hostent_data is defined in netdb.h */
|
/* Define if struct hostent_data is defined in netdb.h */
|
||||||
#undef HAVE_STRUCT_HOSTENT_DATA
|
#undef HAVE_STRUCT_HOSTENT_DATA
|
||||||
|
|
||||||
|
/* Define if dlopen is available */
|
||||||
|
#undef HAVE_DLOPEN
|
||||||
|
|
||||||
|
/* Define if <inttypes.h> is available */
|
||||||
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
/* Define if <inttypes.h> is available */
|
||||||
|
#undef JV_HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
|
|
@ -14,14 +14,21 @@ details. */
|
||||||
#ifndef __GCJ_JNI_H__
|
#ifndef __GCJ_JNI_H__
|
||||||
#define __GCJ_JNI_H__
|
#define __GCJ_JNI_H__
|
||||||
|
|
||||||
|
#include <gcj/libgcj-config.h>
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#define _Jv_va_list va_list
|
#define _Jv_va_list va_list
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __GCJ_JNI_IMPL__
|
||||||
|
|
||||||
/* This is wrong, because it pollutes the name-space too much! */
|
/* If __GCJ_JNI_IMPL__ is defined, then we assume that we're building
|
||||||
|
libgcj itself, and we include headers which taint the namespace
|
||||||
|
more than is acceptable for the ordinary JNI user. */
|
||||||
#include <gcj/javaprims.h>
|
#include <gcj/javaprims.h>
|
||||||
#include <gcj/array.h>
|
#include <gcj/array.h>
|
||||||
|
#include <gnu/gcj/runtime/JNIWeakRef.h>
|
||||||
|
|
||||||
|
typedef gnu::gcj::runtime::JNIWeakRef *jweak;
|
||||||
|
|
||||||
typedef struct _Jv_JNIEnv JNIEnv;
|
typedef struct _Jv_JNIEnv JNIEnv;
|
||||||
typedef struct _Jv_JavaVM JavaVM;
|
typedef struct _Jv_JavaVM JavaVM;
|
||||||
|
@ -29,8 +36,12 @@ typedef struct _Jv_JavaVM JavaVM;
|
||||||
#define JNI_TRUE true
|
#define JNI_TRUE true
|
||||||
#define JNI_FALSE false
|
#define JNI_FALSE false
|
||||||
|
|
||||||
#else /* __cplusplus */
|
#else /* __GCJ_JNI_IMPL__ */
|
||||||
|
|
||||||
|
# ifdef __GNUC__
|
||||||
|
|
||||||
|
/* If we're using gcc, we can use a platform-independent scheme to get
|
||||||
|
the right integer types. */
|
||||||
typedef int jbyte __attribute__((__mode__(__QI__)));
|
typedef int jbyte __attribute__((__mode__(__QI__)));
|
||||||
typedef int jshort __attribute__((__mode__(__HI__)));
|
typedef int jshort __attribute__((__mode__(__HI__)));
|
||||||
typedef int jint __attribute__((__mode__(__SI__)));
|
typedef int jint __attribute__((__mode__(__SI__)));
|
||||||
|
@ -41,11 +52,85 @@ typedef float jfloat;
|
||||||
typedef double jdouble;
|
typedef double jdouble;
|
||||||
typedef jint jsize;
|
typedef jint jsize;
|
||||||
|
|
||||||
|
# else /* __GNUC__ */
|
||||||
|
|
||||||
|
# ifdef JV_HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
/* If <inttypes.h> is available, we use it. */
|
||||||
|
|
||||||
|
# include <inttypes.h>
|
||||||
|
|
||||||
|
typedef int8_t jbyte;
|
||||||
|
typedef int16_t jshort;
|
||||||
|
typedef int32_t jint;
|
||||||
|
typedef int64_t jlong;
|
||||||
|
typedef float jfloat;
|
||||||
|
typedef double jdouble;
|
||||||
|
typedef jint jsize;
|
||||||
|
typedef int8_t jboolean;
|
||||||
|
typedef uint16_t jchar;
|
||||||
|
|
||||||
|
# else /* JV_HAVE_INTTYPES_H */
|
||||||
|
|
||||||
|
/* For now, we require either gcc or <inttypes.h>. If we did more
|
||||||
|
work at configure time we could get around this, but right now it
|
||||||
|
doesn't seem worth it. */
|
||||||
|
# error jni.h not ported to this platform
|
||||||
|
|
||||||
|
# endif /* JV_HAVE_INTTYPES_H */
|
||||||
|
|
||||||
|
# endif /* __GNUC__ */
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
|
||||||
|
/* Define dummy classes and then define the JNI types as pointers. */
|
||||||
|
struct __jobject {};
|
||||||
|
struct __jclass : __jobject {};
|
||||||
|
struct __jstring : __jobject {};
|
||||||
|
struct __jthrowable : __jobject {};
|
||||||
|
struct __jweak : __jobject {};
|
||||||
|
struct __jarray : __jobject {};
|
||||||
|
struct __jobjectArray : __jarray {};
|
||||||
|
struct __jbyteArray : __jarray {};
|
||||||
|
struct __jshortArray : __jarray {};
|
||||||
|
struct __jintArray : __jarray {};
|
||||||
|
struct __jlongArray : __jarray {};
|
||||||
|
struct __jbooleanArray : __jarray {};
|
||||||
|
struct __jcharArray : __jarray {};
|
||||||
|
struct __jfloatArray : __jarray {};
|
||||||
|
struct __jdoubleArray : __jarray {};
|
||||||
|
|
||||||
|
typedef __jobject *jobject;
|
||||||
|
typedef __jclass *jclass;
|
||||||
|
typedef __jstring *jstring;
|
||||||
|
typedef __jthrowable *jthrowable;
|
||||||
|
typedef __jweak *jweak;
|
||||||
|
typedef __jarray *jarray;
|
||||||
|
typedef __jobjectArray *jobjectArray;
|
||||||
|
typedef __jbyteArray *jbyteArray;
|
||||||
|
typedef __jshortArray *jshortArray;
|
||||||
|
typedef __jintArray *jintArray;
|
||||||
|
typedef __jlongArray *jlongArray;
|
||||||
|
typedef __jbooleanArray *jbooleanArray;
|
||||||
|
typedef __jcharArray *jcharArray;
|
||||||
|
typedef __jfloatArray *jfloatArray;
|
||||||
|
typedef __jdoubleArray *jdoubleArray;
|
||||||
|
|
||||||
|
#define JNI_TRUE true
|
||||||
|
#define JNI_FALSE false
|
||||||
|
|
||||||
|
typedef struct _Jv_JNIEnv JNIEnv;
|
||||||
|
typedef struct _Jv_JavaVM JavaVM;
|
||||||
|
|
||||||
|
# else /* __cplusplus */
|
||||||
|
|
||||||
|
/* For C, simply define the class types as generic pointers. */
|
||||||
typedef void *jobject;
|
typedef void *jobject;
|
||||||
typedef jobject jclass;
|
typedef jobject jclass;
|
||||||
typedef jobject jstring;
|
typedef jobject jstring;
|
||||||
typedef jobject jarray;
|
|
||||||
typedef jobject jthrowable;
|
typedef jobject jthrowable;
|
||||||
|
typedef jobject jweak;
|
||||||
|
typedef jobject jarray;
|
||||||
typedef jobject jobjectArray;
|
typedef jobject jobjectArray;
|
||||||
typedef jobject jbyteArray;
|
typedef jobject jbyteArray;
|
||||||
typedef jobject jshortArray;
|
typedef jobject jshortArray;
|
||||||
|
@ -56,20 +141,19 @@ typedef jobject jcharArray;
|
||||||
typedef jobject jfloatArray;
|
typedef jobject jfloatArray;
|
||||||
typedef jobject jdoubleArray;
|
typedef jobject jdoubleArray;
|
||||||
|
|
||||||
/* Dummy defines. */
|
#define JNI_TRUE 1
|
||||||
typedef void *jfieldID;
|
#define JNI_FALSE 0
|
||||||
typedef void *jmethodID;
|
|
||||||
|
|
||||||
typedef const struct JNINativeInterface *JNIEnv;
|
typedef const struct JNINativeInterface *JNIEnv;
|
||||||
typedef const struct JNIInvokeInterface *JavaVM;
|
typedef const struct JNIInvokeInterface *JavaVM;
|
||||||
|
|
||||||
#define JNI_TRUE 1
|
# endif /* __cplusplus */
|
||||||
#define JNI_FALSE 0
|
|
||||||
|
|
||||||
#endif /* __cplusplus */
|
/* Dummy defines. */
|
||||||
|
typedef void *jfieldID;
|
||||||
|
typedef void *jmethodID;
|
||||||
|
|
||||||
/* FIXME: this is wrong. */
|
#endif /* __GCJ_JNI_IMPL__ */
|
||||||
typedef jobject jweak;
|
|
||||||
|
|
||||||
/* Version numbers. */
|
/* Version numbers. */
|
||||||
#define JNI_VERSION_1_1 0x00010001
|
#define JNI_VERSION_1_1 0x00010001
|
||||||
|
@ -558,7 +642,7 @@ public:
|
||||||
/* The method table. */
|
/* The method table. */
|
||||||
struct JNINativeInterface *p;
|
struct JNINativeInterface *p;
|
||||||
|
|
||||||
/* FIXME: this is really ugly. */
|
/* This is ugly, but we must live with it. */
|
||||||
#ifndef __GCJ_JNI_IMPL__
|
#ifndef __GCJ_JNI_IMPL__
|
||||||
private:
|
private:
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -11,6 +11,12 @@ details. */
|
||||||
#ifndef __JAVA_JVM_H__
|
#ifndef __JAVA_JVM_H__
|
||||||
#define __JAVA_JVM_H__
|
#define __JAVA_JVM_H__
|
||||||
|
|
||||||
|
// Define this before including jni.h.
|
||||||
|
// jni.h is included by jvmpi.h, which might be included. We define
|
||||||
|
// this unconditionally because it is convenient and it lets other
|
||||||
|
// files include jni.h without difficulty.
|
||||||
|
#define __GCJ_JNI_IMPL__
|
||||||
|
|
||||||
#include <gcj/javaprims.h>
|
#include <gcj/javaprims.h>
|
||||||
|
|
||||||
#include <java-assert.h>
|
#include <java-assert.h>
|
||||||
|
@ -358,6 +364,7 @@ bool _Jv_VerifyIdentifier (_Jv_Utf8Const *);
|
||||||
bool _Jv_ClassNameSamePackage (_Jv_Utf8Const *name1, _Jv_Utf8Const *name2);
|
bool _Jv_ClassNameSamePackage (_Jv_Utf8Const *name1, _Jv_Utf8Const *name2);
|
||||||
|
|
||||||
#ifdef ENABLE_JVMPI
|
#ifdef ENABLE_JVMPI
|
||||||
|
|
||||||
#include "jvmpi.h"
|
#include "jvmpi.h"
|
||||||
|
|
||||||
extern void (*_Jv_JVMPI_Notify_OBJECT_ALLOC) (JVMPI_Event *event);
|
extern void (*_Jv_JVMPI_Notify_OBJECT_ALLOC) (JVMPI_Event *event);
|
||||||
|
|
|
@ -13,9 +13,6 @@ details. */
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
// Define this before including jni.h.
|
|
||||||
#define __GCJ_JNI_IMPL__
|
|
||||||
|
|
||||||
#include <gcj/cni.h>
|
#include <gcj/cni.h>
|
||||||
#include <jvm.h>
|
#include <jvm.h>
|
||||||
#include <java-assert.h>
|
#include <java-assert.h>
|
||||||
|
@ -41,7 +38,6 @@ details. */
|
||||||
#include <java/lang/Integer.h>
|
#include <java/lang/Integer.h>
|
||||||
#include <java/lang/ThreadGroup.h>
|
#include <java/lang/ThreadGroup.h>
|
||||||
#include <java/lang/Thread.h>
|
#include <java/lang/Thread.h>
|
||||||
#include <gnu/gcj/runtime/JNIWeakRef.h>
|
|
||||||
|
|
||||||
#include <gcj/method.h>
|
#include <gcj/method.h>
|
||||||
#include <gcj/field.h>
|
#include <gcj/field.h>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue