summaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog7
-rw-r--r--libjava/include/jni_md.h23
2 files changed, 20 insertions, 10 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 5189d15f2ba..c6db9fb9413 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,10 @@
+2007-06-28 Jan Nijtmans <nijtmans@users.sourceforge.net>
+
+ PR libgcj/30999:
+ * jni_md.h: Add the possibility to compile jni code with.
+ -fvisibility=hidden. This causes all symbols to be hidden
+ except the JNI functions which need to be exported.
+
2007-06-28 Andreas Tobler <a.tobler@schweiz.org>
* testsuite/libjava.jvmti/jvmti-interp.exp (gij_jvmti_test_one): Pass
diff --git a/libjava/include/jni_md.h b/libjava/include/jni_md.h
index 6ea90ab4c36..f806bac5179 100644
--- a/libjava/include/jni_md.h
+++ b/libjava/include/jni_md.h
@@ -124,6 +124,19 @@ typedef uint16_t jchar;
#define JNICALL __stdcall
+#else /* !( _WIN32 || __WIN32__ || WIN32) */
+
+#define JNIIMPORT
+#if defined(__GNUC__) && __GNUC__ > 3
+#define JNIEXPORT __attribute__ ((visibility("default")))
+#else
+#define JNIEXPORT
+#endif
+
+#define JNICALL
+
+#endif /* !( _WIN32 || __WIN32__ || WIN32) */
+
/* These defines apply to symbols in libgcj */
#ifdef __GCJ_DLL__
# ifdef __GCJ_JNI_IMPL__
@@ -135,14 +148,4 @@ typedef uint16_t jchar;
# define _CLASSPATH_JNIIMPEXP
#endif /* __GCJ_DLL__ */
-#else /* !( _WIN32 || __WIN32__ || WIN32) */
-
-#define JNIIMPORT
-#define JNIEXPORT
-#define JNICALL
-#define _CLASSPATH_JNIIMPEXP
-
-#endif /* !( _WIN32 || __WIN32__ || WIN32) */
-
-
#endif /* __GCJ_JNI_MD_H__ */