OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This is the Android-specific Chromium linker, a tiny shared library | 5 // This is the Android-specific Chromium linker, a tiny shared library |
6 // implementing a custom dynamic linker that can be used to load the | 6 // implementing a custom dynamic linker that can be used to load the |
7 // real Chromium libraries (e.g. libcontentshell.so). | 7 // real Chromium libraries (e.g. libcontentshell.so). |
8 | 8 |
9 // The main point of this linker is to be able to share the RELRO | 9 // The main point of this linker is to be able to share the RELRO |
10 // section of libcontentshell.so (or equivalent) between the browser and | 10 // section of libcontentshell.so (or equivalent) between the browser and |
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
657 jstring library_name) { | 657 jstring library_name) { |
658 String apkfile_name_str(env, apkfile_name); | 658 String apkfile_name_str(env, apkfile_name); |
659 const char* apkfile_name_c_str = apkfile_name_str.c_str(); | 659 const char* apkfile_name_c_str = apkfile_name_str.c_str(); |
660 String library_name_str(env, library_name); | 660 String library_name_str(env, library_name); |
661 const char* library_name_c_str = library_name_str.c_str(); | 661 const char* library_name_c_str = library_name_str.c_str(); |
662 | 662 |
663 LOG_INFO("%s: Checking if %s is page-aligned and uncompressed in %s\n", | 663 LOG_INFO("%s: Checking if %s is page-aligned and uncompressed in %s\n", |
664 __FUNCTION__, library_name_c_str, apkfile_name_c_str); | 664 __FUNCTION__, library_name_c_str, apkfile_name_c_str); |
665 jboolean mappable = crazy_linker_check_library_is_mappable_in_zip_file( | 665 jboolean mappable = crazy_linker_check_library_is_mappable_in_zip_file( |
666 apkfile_name_c_str, library_name_c_str) == CRAZY_STATUS_SUCCESS; | 666 apkfile_name_c_str, library_name_c_str) == CRAZY_STATUS_SUCCESS; |
667 LOG_INFO("%s: %s\n", __FUNCTION__, aligned ? "Aligned" : "NOT aligned"); | 667 LOG_INFO("%s: %s\n", __FUNCTION__, mappable ? "Mappable" : "NOT mappable"); |
668 | 668 |
669 return mappable; | 669 return mappable; |
670 } | 670 } |
671 | 671 |
672 const JNINativeMethod kNativeMethods[] = { | 672 const JNINativeMethod kNativeMethods[] = { |
673 {"nativeLoadLibrary", | 673 {"nativeLoadLibrary", |
674 "(" | 674 "(" |
675 "Ljava/lang/String;" | 675 "Ljava/lang/String;" |
676 "J" | 676 "J" |
677 "Lorg/chromium/base/library_loader/Linker$LibInfo;" | 677 "Lorg/chromium/base/library_loader/Linker$LibInfo;" |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
786 crazy_context_t* context = GetCrazyContext(); | 786 crazy_context_t* context = GetCrazyContext(); |
787 crazy_context_set_java_vm(context, vm, JNI_VERSION_1_4); | 787 crazy_context_set_java_vm(context, vm, JNI_VERSION_1_4); |
788 | 788 |
789 // Register the function that the crazy linker can call to post code | 789 // Register the function that the crazy linker can call to post code |
790 // for later execution. | 790 // for later execution. |
791 crazy_context_set_callback_poster(context, &PostForLaterExecution, NULL); | 791 crazy_context_set_callback_poster(context, &PostForLaterExecution, NULL); |
792 | 792 |
793 LOG_INFO("%s: Done", __FUNCTION__); | 793 LOG_INFO("%s: Done", __FUNCTION__); |
794 return JNI_VERSION_1_4; | 794 return JNI_VERSION_1_4; |
795 } | 795 } |
OLD | NEW |