summaryrefslogtreecommitdiffstats
path: root/base/android
diff options
context:
space:
mode:
authortorne <torne@chromium.org>2015-02-24 04:55:02 -0800
committerCommit bot <commit-bot@chromium.org>2015-02-24 12:55:37 +0000
commitcab875835ac9e39183ba0ac4fe30e96d1bdfec45 (patch)
treec8427bf36027a17f3c51614506b51e55afe7ea3d /base/android
parenta755ee0ae677fe872fc83b52752a7c11f0a70cde (diff)
downloadchromium_src-cab875835ac9e39183ba0ac4fe30e96d1bdfec45.zip
chromium_src-cab875835ac9e39183ba0ac4fe30e96d1bdfec45.tar.gz
chromium_src-cab875835ac9e39183ba0ac4fe30e96d1bdfec45.tar.bz2
Make combined native/manual JNI registration work for clang.
Since clang has trouble with aliases for static functions, go back to using a trivial wrapper function instead of an alias. Since there is only one caller of the wrapped, static function, and its address is no longer taken to generate the manual JNI registration table (the wrapper's address is already being taken instead), there's no actual benefit to using an alias anyway, since the compiler will simply inline the static function into the wrapper. BUG=442327,460857 TBR=cjhopman@chromium.org Review URL: https://codereview.chromium.org/953523003 Cr-Commit-Position: refs/heads/master@{#317787}
Diffstat (limited to 'base/android')
-rwxr-xr-xbase/android/jni_generator/jni_generator.py6
-rw-r--r--base/android/jni_generator/testNativeExportsOption.golden12
-rw-r--r--base/android/jni_generator/testNativeExportsOptionalOption.golden12
3 files changed, 20 insertions, 10 deletions
diff --git a/base/android/jni_generator/jni_generator.py b/base/android/jni_generator/jni_generator.py
index 54fea6b..3182036 100755
--- a/base/android/jni_generator/jni_generator.py
+++ b/base/android/jni_generator/jni_generator.py
@@ -1073,8 +1073,10 @@ static ${RETURN} ${NAME}(JNIEnv* env, ${PARAMS});
"""
if self.options.native_exports:
template_str += """
-__attribute__((visibility("default"), alias("${NAME}")))
-${RETURN} ${STUB_NAME}(JNIEnv* env, ${PARAMS});
+__attribute__((visibility("default")))
+${RETURN} ${STUB_NAME}(JNIEnv* env, ${PARAMS}) {
+ return ${NAME}(${PARAMS_IN_CALL});
+}
"""
template = Template(template_str)
params_in_call = []
diff --git a/base/android/jni_generator/testNativeExportsOption.golden b/base/android/jni_generator/testNativeExportsOption.golden
index a4953cc..bfed0e3 100644
--- a/base/android/jni_generator/testNativeExportsOption.golden
+++ b/base/android/jni_generator/testNativeExportsOption.golden
@@ -30,17 +30,21 @@ extern "C" {
static jint Init(JNIEnv* env, jobject jcaller);
-__attribute__((visibility("default"), alias("Init")))
+__attribute__((visibility("default")))
jint
Java_org_chromium_example_jni_1generator_SampleForTests_00024MyInnerClass_nativeInit(JNIEnv*
- env, jobject jcaller);
+ env, jobject jcaller) {
+ return Init(env, jcaller);
+}
static jint Init(JNIEnv* env, jobject jcaller);
-__attribute__((visibility("default"), alias("Init")))
+__attribute__((visibility("default")))
jint
Java_org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass_nativeInit(JNIEnv*
- env, jobject jcaller);
+ env, jobject jcaller) {
+ return Init(env, jcaller);
+}
}; // extern "C"
diff --git a/base/android/jni_generator/testNativeExportsOptionalOption.golden b/base/android/jni_generator/testNativeExportsOptionalOption.golden
index 2a3b172..ae2d799 100644
--- a/base/android/jni_generator/testNativeExportsOptionalOption.golden
+++ b/base/android/jni_generator/testNativeExportsOptionalOption.golden
@@ -30,17 +30,21 @@ extern "C" {
static jint Init(JNIEnv* env, jobject jcaller);
-__attribute__((visibility("default"), alias("Init")))
+__attribute__((visibility("default")))
jint
Java_org_chromium_example_jni_1generator_SampleForTests_00024MyInnerClass_nativeInit(JNIEnv*
- env, jobject jcaller);
+ env, jobject jcaller) {
+ return Init(env, jcaller);
+}
static jint Init(JNIEnv* env, jobject jcaller);
-__attribute__((visibility("default"), alias("Init")))
+__attribute__((visibility("default")))
jint
Java_org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass_nativeInit(JNIEnv*
- env, jobject jcaller);
+ env, jobject jcaller) {
+ return Init(env, jcaller);
+}
}; // extern "C"