diff options
author | Dan Albert <danalbert@google.com> | 2014-08-06 21:36:46 -0700 |
---|---|---|
committer | Dan Albert <danalbert@google.com> | 2014-08-07 09:59:56 -0700 |
commit | bae21bb7f6ca917e0954c970f0bfd2bfa3dcc0a9 (patch) | |
tree | 9b52a08a0ec49d15b5839386804bf75cbfec360f /runtime | |
parent | 8b62dc0f993d0445401655fc274e5225498fa81c (diff) | |
download | art-bae21bb7f6ca917e0954c970f0bfd2bfa3dcc0a9.tar.gz art-bae21bb7f6ca917e0954c970f0bfd2bfa3dcc0a9.tar.bz2 art-bae21bb7f6ca917e0954c970f0bfd2bfa3dcc0a9.zip |
Fix build without -Bsymbolic.
For ARM: Gold is unable to create PLT based relocations for conditional
branches.
For x86: Some uses of SYMBOL() should have been PLT_SYMBOL().
Bug: 16853291
Change-Id: Id70488b077256a70137c4417f21be2c2d1d4341c
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/arch/arm/quick_entrypoints_arm.S | 6 | ||||
-rw-r--r-- | runtime/arch/x86/quick_entrypoints_x86.S | 10 |
2 files changed, 9 insertions, 7 deletions
diff --git a/runtime/arch/arm/quick_entrypoints_arm.S b/runtime/arch/arm/quick_entrypoints_arm.S index 86cb16aab5..c4f8782c23 100644 --- a/runtime/arch/arm/quick_entrypoints_arm.S +++ b/runtime/arch/arm/quick_entrypoints_arm.S @@ -502,20 +502,22 @@ END art_quick_check_cast */ ENTRY art_quick_aput_obj_with_null_and_bound_check tst r0, r0 - bne art_quick_aput_obj_with_bound_check + bne art_quick_aput_obj_with_bound_check_local b art_quick_throw_null_pointer_exception END art_quick_aput_obj_with_null_and_bound_check ENTRY art_quick_aput_obj_with_bound_check +art_quick_aput_obj_with_bound_check_local: ldr r3, [r0, #ARRAY_LENGTH_OFFSET] cmp r3, r1 - bhi art_quick_aput_obj + bhi art_quick_aput_obj_local mov r0, r1 mov r1, r3 b art_quick_throw_array_bounds END art_quick_aput_obj_with_bound_check ENTRY art_quick_aput_obj +art_quick_aput_obj_local: cbz r2, .Ldo_aput_null ldr r3, [r0, #CLASS_OFFSET] ldr ip, [r2, #CLASS_OFFSET] diff --git a/runtime/arch/x86/quick_entrypoints_x86.S b/runtime/arch/x86/quick_entrypoints_x86.S index 6d74b837d1..9a2b96966f 100644 --- a/runtime/arch/x86/quick_entrypoints_x86.S +++ b/runtime/arch/x86/quick_entrypoints_x86.S @@ -668,17 +668,17 @@ END_FUNCTION art_quick_check_cast */ DEFINE_FUNCTION art_quick_aput_obj_with_null_and_bound_check testl %eax, %eax - jnz SYMBOL(art_quick_aput_obj_with_bound_check) - jmp SYMBOL(art_quick_throw_null_pointer_exception) + jnz PLT_SYMBOL(art_quick_aput_obj_with_bound_check) + jmp PLT_SYMBOL(art_quick_throw_null_pointer_exception) END_FUNCTION art_quick_aput_obj_with_null_and_bound_check DEFINE_FUNCTION art_quick_aput_obj_with_bound_check movl ARRAY_LENGTH_OFFSET(%eax), %ebx cmpl %ebx, %ecx - jb SYMBOL(art_quick_aput_obj) + jb PLT_SYMBOL(art_quick_aput_obj) mov %ecx, %eax mov %ebx, %ecx - jmp SYMBOL(art_quick_throw_array_bounds) + jmp PLT_SYMBOL(art_quick_throw_array_bounds) END_FUNCTION art_quick_aput_obj_with_bound_check DEFINE_FUNCTION art_quick_aput_obj @@ -1108,7 +1108,7 @@ DEFINE_FUNCTION art_quick_imt_conflict_trampoline movd %xmm0, %ecx // get target method index stored in xmm0 movl OBJECT_ARRAY_DATA_OFFSET(%eax, %ecx, 4), %eax // load the target method POP ecx - jmp SYMBOL(art_quick_invoke_interface_trampoline) + jmp PLT_SYMBOL(art_quick_invoke_interface_trampoline) END_FUNCTION art_quick_imt_conflict_trampoline DEFINE_FUNCTION art_quick_resolution_trampoline |