diff options
Diffstat (limited to 'test/ExecutionEngine')
27 files changed, 245 insertions, 24 deletions
diff --git a/test/ExecutionEngine/MCJIT/cross-module-sm-pic-a.ll b/test/ExecutionEngine/MCJIT/cross-module-sm-pic-a.ll index eb414249bdc3..04331990db33 100644 --- a/test/ExecutionEngine/MCJIT/cross-module-sm-pic-a.ll +++ b/test/ExecutionEngine/MCJIT/cross-module-sm-pic-a.ll @@ -1,5 +1,5 @@ ; RUN: %lli -extra-module=%p/Inputs/cross-module-b.ll -relocation-model=pic -code-model=small %s > /dev/null -; XFAIL: mips, i686, i386 +; XFAIL: mips-, mipsel-, i686, i386 declare i32 @FB() diff --git a/test/ExecutionEngine/MCJIT/eh-lg-pic.ll b/test/ExecutionEngine/MCJIT/eh-lg-pic.ll index 9277ec4a8cae..222196f81c4b 100644 --- a/test/ExecutionEngine/MCJIT/eh-lg-pic.ll +++ b/test/ExecutionEngine/MCJIT/eh-lg-pic.ll @@ -1,5 +1,5 @@ ; RUN: %lli -relocation-model=pic -code-model=large %s -; XFAIL: cygwin, win32, mingw, mips, i686, i386, aarch64, arm, asan, msan +; XFAIL: cygwin, win32, mingw, mips-, mipsel-, i686, i386, aarch64, arm, asan, msan declare i8* @__cxa_allocate_exception(i64) declare void @__cxa_throw(i8*, i8*, i8*) declare i32 @__gxx_personality_v0(...) diff --git a/test/ExecutionEngine/MCJIT/eh-sm-pic.ll b/test/ExecutionEngine/MCJIT/eh-sm-pic.ll index 37fb628cf0a2..c73dcca5ee1c 100644 --- a/test/ExecutionEngine/MCJIT/eh-sm-pic.ll +++ b/test/ExecutionEngine/MCJIT/eh-sm-pic.ll @@ -1,5 +1,5 @@ ; RUN: %lli -relocation-model=pic -code-model=small %s -; XFAIL: cygwin, win32, mingw, mips, i686, i386, darwin, aarch64, arm, asan, msan +; XFAIL: cygwin, win32, mingw, mips-, mipsel-, i686, i386, darwin, aarch64, arm, asan, msan declare i8* @__cxa_allocate_exception(i64) declare void @__cxa_throw(i8*, i8*, i8*) declare i32 @__gxx_personality_v0(...) diff --git a/test/ExecutionEngine/MCJIT/multi-module-sm-pic-a.ll b/test/ExecutionEngine/MCJIT/multi-module-sm-pic-a.ll index 01faecc6495b..7e5710dbf9c9 100644 --- a/test/ExecutionEngine/MCJIT/multi-module-sm-pic-a.ll +++ b/test/ExecutionEngine/MCJIT/multi-module-sm-pic-a.ll @@ -1,5 +1,5 @@ ; RUN: %lli -extra-module=%p/Inputs/multi-module-b.ll -extra-module=%p/Inputs/multi-module-c.ll -relocation-model=pic -code-model=small %s > /dev/null -; XFAIL: mips, i686, i386 +; XFAIL: mips-, mipsel-, i686, i386 declare i32 @FB() diff --git a/test/ExecutionEngine/MCJIT/remote/cross-module-sm-pic-a.ll b/test/ExecutionEngine/MCJIT/remote/cross-module-sm-pic-a.ll index d47fc6cffbb2..415fd25409d6 100644 --- a/test/ExecutionEngine/MCJIT/remote/cross-module-sm-pic-a.ll +++ b/test/ExecutionEngine/MCJIT/remote/cross-module-sm-pic-a.ll @@ -1,5 +1,5 @@ ; RUN: %lli -extra-module=%p/Inputs/cross-module-b.ll -disable-lazy-compilation=true -remote-mcjit -mcjit-remote-process=lli-child-target%exeext -relocation-model=pic -code-model=small %s > /dev/null -; XFAIL: mips, i686, i386, arm +; XFAIL: mips-, mipsel-, i686, i386, arm declare i32 @FB() diff --git a/test/ExecutionEngine/MCJIT/remote/multi-module-sm-pic-a.ll b/test/ExecutionEngine/MCJIT/remote/multi-module-sm-pic-a.ll index d248c4b2a94a..3e020dc853a6 100644 --- a/test/ExecutionEngine/MCJIT/remote/multi-module-sm-pic-a.ll +++ b/test/ExecutionEngine/MCJIT/remote/multi-module-sm-pic-a.ll @@ -1,5 +1,5 @@ ; RUN: %lli -extra-module=%p/Inputs/multi-module-b.ll -extra-module=%p/Inputs/multi-module-c.ll -disable-lazy-compilation=true -remote-mcjit -mcjit-remote-process=lli-child-target%exeext -relocation-model=pic -code-model=small %s > /dev/null -; XFAIL: mips, i686, i386, arm +; XFAIL: mips-, mipsel-, i686, i386, arm declare i32 @FB() diff --git a/test/ExecutionEngine/MCJIT/remote/test-global-init-nonzero-sm-pic.ll b/test/ExecutionEngine/MCJIT/remote/test-global-init-nonzero-sm-pic.ll index f9184b4077bb..e350b85a8bce 100644 --- a/test/ExecutionEngine/MCJIT/remote/test-global-init-nonzero-sm-pic.ll +++ b/test/ExecutionEngine/MCJIT/remote/test-global-init-nonzero-sm-pic.ll @@ -1,5 +1,5 @@ ; RUN: %lli -remote-mcjit -relocation-model=pic -code-model=small %s > /dev/null -; XFAIL: mips, aarch64, arm, i686, i386 +; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386 @count = global i32 1, align 4 diff --git a/test/ExecutionEngine/MCJIT/remote/test-ptr-reloc-sm-pic.ll b/test/ExecutionEngine/MCJIT/remote/test-ptr-reloc-sm-pic.ll index d9a4faa8e6bd..7162e927de0a 100644 --- a/test/ExecutionEngine/MCJIT/remote/test-ptr-reloc-sm-pic.ll +++ b/test/ExecutionEngine/MCJIT/remote/test-ptr-reloc-sm-pic.ll @@ -1,5 +1,5 @@ ; RUN: %lli -remote-mcjit -O0 -relocation-model=pic -code-model=small %s -; XFAIL: mips, aarch64, arm, i686, i386 +; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386 @.str = private unnamed_addr constant [6 x i8] c"data1\00", align 1 @ptr = global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0), align 4 diff --git a/test/ExecutionEngine/MCJIT/stubs-sm-pic.ll b/test/ExecutionEngine/MCJIT/stubs-sm-pic.ll index 6eebe44e3ff3..46545ce53423 100644 --- a/test/ExecutionEngine/MCJIT/stubs-sm-pic.ll +++ b/test/ExecutionEngine/MCJIT/stubs-sm-pic.ll @@ -1,5 +1,5 @@ ; RUN: %lli -disable-lazy-compilation=false -relocation-model=pic -code-model=small %s -; XFAIL: mips, i686, i386, aarch64, arm +; XFAIL: mips-, mipsel-, i686, i386, aarch64, arm define i32 @main() nounwind { entry: diff --git a/test/ExecutionEngine/MCJIT/test-global-init-nonzero-sm-pic.ll b/test/ExecutionEngine/MCJIT/test-global-init-nonzero-sm-pic.ll index 8ae496d0fab0..e54135fc7cbc 100644 --- a/test/ExecutionEngine/MCJIT/test-global-init-nonzero-sm-pic.ll +++ b/test/ExecutionEngine/MCJIT/test-global-init-nonzero-sm-pic.ll @@ -1,5 +1,5 @@ ; RUN: %lli -relocation-model=pic -code-model=small %s > /dev/null -; XFAIL: mips, aarch64, arm, i686, i386 +; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386 @count = global i32 1, align 4 diff --git a/test/ExecutionEngine/MCJIT/test-ptr-reloc-sm-pic.ll b/test/ExecutionEngine/MCJIT/test-ptr-reloc-sm-pic.ll index d50ba9dd5a0a..eea6fde2e2ca 100644 --- a/test/ExecutionEngine/MCJIT/test-ptr-reloc-sm-pic.ll +++ b/test/ExecutionEngine/MCJIT/test-ptr-reloc-sm-pic.ll @@ -1,5 +1,5 @@ ; RUN: %lli -O0 -relocation-model=pic -code-model=small %s -; XFAIL: mips, aarch64, arm, i686, i386 +; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386 @.str = private unnamed_addr constant [6 x i8] c"data1\00", align 1 @ptr = global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0), align 4 diff --git a/test/ExecutionEngine/OrcMCJIT/cross-module-sm-pic-a.ll b/test/ExecutionEngine/OrcMCJIT/cross-module-sm-pic-a.ll index 4f5afd0ed475..9af82e7486fb 100644 --- a/test/ExecutionEngine/OrcMCJIT/cross-module-sm-pic-a.ll +++ b/test/ExecutionEngine/OrcMCJIT/cross-module-sm-pic-a.ll @@ -1,5 +1,5 @@ ; RUN: %lli -jit-kind=orc-mcjit -extra-module=%p/Inputs/cross-module-b.ll -relocation-model=pic -code-model=small %s > /dev/null -; XFAIL: mips, i686, i386 +; XFAIL: mips-, mipsel-, i686, i386 declare i32 @FB() diff --git a/test/ExecutionEngine/OrcMCJIT/eh-lg-pic.ll b/test/ExecutionEngine/OrcMCJIT/eh-lg-pic.ll index 32b53c4847bc..47674dd9cdc3 100644 --- a/test/ExecutionEngine/OrcMCJIT/eh-lg-pic.ll +++ b/test/ExecutionEngine/OrcMCJIT/eh-lg-pic.ll @@ -1,5 +1,5 @@ ; RUN: %lli -jit-kind=orc-mcjit -relocation-model=pic -code-model=large %s -; XFAIL: cygwin, win32, mingw, mips, i686, i386, aarch64, arm, asan, msan +; XFAIL: cygwin, win32, mingw, mips-, mipsel-, i686, i386, aarch64, arm, asan, msan declare i8* @__cxa_allocate_exception(i64) declare void @__cxa_throw(i8*, i8*, i8*) declare i32 @__gxx_personality_v0(...) diff --git a/test/ExecutionEngine/OrcMCJIT/eh-sm-pic.ll b/test/ExecutionEngine/OrcMCJIT/eh-sm-pic.ll index a54795ead56d..c279720cdb03 100644 --- a/test/ExecutionEngine/OrcMCJIT/eh-sm-pic.ll +++ b/test/ExecutionEngine/OrcMCJIT/eh-sm-pic.ll @@ -1,5 +1,5 @@ ; RUN: %lli -jit-kind=orc-mcjit -relocation-model=pic -code-model=small %s -; XFAIL: cygwin, win32, mingw, mips, i686, i386, darwin, aarch64, arm, asan, msan +; XFAIL: cygwin, win32, mingw, mips-, mipsel-, i686, i386, darwin, aarch64, arm, asan, msan declare i8* @__cxa_allocate_exception(i64) declare void @__cxa_throw(i8*, i8*, i8*) declare i32 @__gxx_personality_v0(...) diff --git a/test/ExecutionEngine/OrcMCJIT/multi-module-sm-pic-a.ll b/test/ExecutionEngine/OrcMCJIT/multi-module-sm-pic-a.ll index 80b8e163d5d6..0052c0126529 100644 --- a/test/ExecutionEngine/OrcMCJIT/multi-module-sm-pic-a.ll +++ b/test/ExecutionEngine/OrcMCJIT/multi-module-sm-pic-a.ll @@ -1,5 +1,5 @@ ; RUN: %lli -jit-kind=orc-mcjit -extra-module=%p/Inputs/multi-module-b.ll -extra-module=%p/Inputs/multi-module-c.ll -relocation-model=pic -code-model=small %s > /dev/null -; XFAIL: mips, i686, i386 +; XFAIL: mips-, mipsel-, i686, i386 declare i32 @FB() diff --git a/test/ExecutionEngine/OrcMCJIT/remote/cross-module-sm-pic-a.ll b/test/ExecutionEngine/OrcMCJIT/remote/cross-module-sm-pic-a.ll index c8979043857e..4326fc1e526b 100644 --- a/test/ExecutionEngine/OrcMCJIT/remote/cross-module-sm-pic-a.ll +++ b/test/ExecutionEngine/OrcMCJIT/remote/cross-module-sm-pic-a.ll @@ -1,5 +1,5 @@ ; RUN: %lli -jit-kind=orc-mcjit -extra-module=%p/Inputs/cross-module-b.ll -disable-lazy-compilation=true -remote-mcjit -mcjit-remote-process=lli-child-target%exeext -relocation-model=pic -code-model=small %s > /dev/null -; XFAIL: mips, i686, i386, arm +; XFAIL: mips-, mipsel-, i686, i386, arm declare i32 @FB() diff --git a/test/ExecutionEngine/OrcMCJIT/remote/multi-module-sm-pic-a.ll b/test/ExecutionEngine/OrcMCJIT/remote/multi-module-sm-pic-a.ll index 41812d25169c..18a2d7e87d09 100644 --- a/test/ExecutionEngine/OrcMCJIT/remote/multi-module-sm-pic-a.ll +++ b/test/ExecutionEngine/OrcMCJIT/remote/multi-module-sm-pic-a.ll @@ -1,5 +1,5 @@ ; RUN: %lli -jit-kind=orc-mcjit -extra-module=%p/Inputs/multi-module-b.ll -extra-module=%p/Inputs/multi-module-c.ll -disable-lazy-compilation=true -remote-mcjit -mcjit-remote-process=lli-child-target%exeext -relocation-model=pic -code-model=small %s > /dev/null -; XFAIL: mips, i686, i386, arm +; XFAIL: mips-, mipsel-, i686, i386, arm declare i32 @FB() diff --git a/test/ExecutionEngine/OrcMCJIT/remote/test-global-init-nonzero-sm-pic.ll b/test/ExecutionEngine/OrcMCJIT/remote/test-global-init-nonzero-sm-pic.ll index ec9e1ae1a03c..f1e93133b226 100644 --- a/test/ExecutionEngine/OrcMCJIT/remote/test-global-init-nonzero-sm-pic.ll +++ b/test/ExecutionEngine/OrcMCJIT/remote/test-global-init-nonzero-sm-pic.ll @@ -1,5 +1,5 @@ ; RUN: %lli -jit-kind=orc-mcjit -remote-mcjit -relocation-model=pic -code-model=small %s > /dev/null -; XFAIL: mips, aarch64, arm, i686, i386 +; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386 @count = global i32 1, align 4 diff --git a/test/ExecutionEngine/OrcMCJIT/remote/test-ptr-reloc-sm-pic.ll b/test/ExecutionEngine/OrcMCJIT/remote/test-ptr-reloc-sm-pic.ll index 61321ac1b947..cac800ef5e76 100644 --- a/test/ExecutionEngine/OrcMCJIT/remote/test-ptr-reloc-sm-pic.ll +++ b/test/ExecutionEngine/OrcMCJIT/remote/test-ptr-reloc-sm-pic.ll @@ -1,5 +1,5 @@ ; RUN: %lli -jit-kind=orc-mcjit -remote-mcjit -O0 -relocation-model=pic -code-model=small %s -; XFAIL: mips, aarch64, arm, i686, i386 +; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386 @.str = private unnamed_addr constant [6 x i8] c"data1\00", align 1 @ptr = global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0), align 4 diff --git a/test/ExecutionEngine/OrcMCJIT/stubs-sm-pic.ll b/test/ExecutionEngine/OrcMCJIT/stubs-sm-pic.ll index f354a0de0935..ec4183bc724d 100644 --- a/test/ExecutionEngine/OrcMCJIT/stubs-sm-pic.ll +++ b/test/ExecutionEngine/OrcMCJIT/stubs-sm-pic.ll @@ -1,5 +1,5 @@ ; RUN: %lli -jit-kind=orc-mcjit -disable-lazy-compilation=false -relocation-model=pic -code-model=small %s -; XFAIL: mips, i686, i386, aarch64, arm +; XFAIL: mips-, mipsel-, i686, i386, aarch64, arm define i32 @main() nounwind { entry: diff --git a/test/ExecutionEngine/OrcMCJIT/test-global-init-nonzero-sm-pic.ll b/test/ExecutionEngine/OrcMCJIT/test-global-init-nonzero-sm-pic.ll index 7f66aec77078..c9b6cf755b7c 100644 --- a/test/ExecutionEngine/OrcMCJIT/test-global-init-nonzero-sm-pic.ll +++ b/test/ExecutionEngine/OrcMCJIT/test-global-init-nonzero-sm-pic.ll @@ -1,5 +1,5 @@ ; RUN: %lli -jit-kind=orc-mcjit -relocation-model=pic -code-model=small %s > /dev/null -; XFAIL: mips, aarch64, arm, i686, i386 +; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386 @count = global i32 1, align 4 diff --git a/test/ExecutionEngine/OrcMCJIT/test-ptr-reloc-sm-pic.ll b/test/ExecutionEngine/OrcMCJIT/test-ptr-reloc-sm-pic.ll index 6e0a425623b7..d0bb070110c1 100644 --- a/test/ExecutionEngine/OrcMCJIT/test-ptr-reloc-sm-pic.ll +++ b/test/ExecutionEngine/OrcMCJIT/test-ptr-reloc-sm-pic.ll @@ -1,5 +1,5 @@ ; RUN: %lli -jit-kind=orc-mcjit -O0 -relocation-model=pic -code-model=small %s -; XFAIL: mips, aarch64, arm, i686, i386 +; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386 @.str = private unnamed_addr constant [6 x i8] c"data1\00", align 1 @ptr = global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0), align 4 diff --git a/test/ExecutionEngine/RuntimeDyld/Mips/ELF_Mips64r2N64_PIC_relocations.s b/test/ExecutionEngine/RuntimeDyld/Mips/ELF_Mips64r2N64_PIC_relocations.s new file mode 100644 index 000000000000..1d8d293a26a4 --- /dev/null +++ b/test/ExecutionEngine/RuntimeDyld/Mips/ELF_Mips64r2N64_PIC_relocations.s @@ -0,0 +1,164 @@ +# RUN: llvm-mc -triple=mips64el-unknown-linux -relocation-model=pic -code-model=small -filetype=obj -o %T/test_ELF_Mips64N64.o %s +# RUN: llc -mtriple=mips64el-unknown-linux -relocation-model=pic -filetype=obj -o %T/test_ELF_ExternalFunction_Mips64N64.o %S/Inputs/ExternalFunction.ll +# RUN: llvm-rtdyld -triple=mips64el-unknown-linux -verify -map-section test_ELF_Mips64N64.o,.text=0x1000 -map-section test_ELF_ExternalFunction_Mips64N64.o,.text=0x10000 -check=%s %/T/test_ELF_Mips64N64.o %T/test_ELF_ExternalFunction_Mips64N64.o + + .data +# Test R_MIPS_PC32 relocation. +# rtdyld-check: *{4}(R_MIPS_PC32) = (foo - R_MIPS_PC32)[31:0] +R_MIPS_PC32: + .word foo-. +# rtdyld-check: *{4}(R_MIPS_PC32 + 4) = (foo - tmp1)[31:0] +tmp1: + .4byte foo-tmp1 + + .text + .abicalls + .section .mdebug.abi64,"",@progbits + .nan legacy + .file "ELF_Mips64N64_PIC_relocations.ll" + .text + .globl bar + .align 3 + .type bar,@function + .set nomicromips + .set nomips16 + .ent bar +bar: + .frame $fp,40,$ra + .mask 0x00000000,0 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + .set noat + daddiu $sp, $sp, -40 + sd $ra, 32($sp) + sd $fp, 24($sp) + move $fp, $sp + sd $4, 16($fp) + lb $2, 0($4) + sd $4, 8($fp) + +# Test R_MIPS_26 relocation. +# rtdyld-check: decode_operand(insn1, 0)[25:0] = foo +insn1: + jal foo + nop + +# Test R_MIPS_PC16 relocation. +# rtdyld-check: decode_operand(insn2, 1)[15:0] = foo - insn2 +insn2: + bal foo + nop + + move $sp, $fp + ld $ra, 32($sp) + ld $fp, 24($sp) + daddiu $sp, $sp, 32 + jr $ra + nop + .set at + .set macro + .set reorder + .end bar +$func_end0: + .size bar, ($func_end0)-bar + + .globl main + .align 3 + .type main,@function + .set nomicromips + .set nomips16 + .ent main +main: + .frame $fp,32,$ra + .mask 0x00000000,0 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + .set noat + daddiu $sp, $sp, -32 + sd $ra, 24($sp) + sd $fp, 16($sp) + sd $gp, 8($sp) + move $fp, $sp + +# Check upper 16-bits of offset between the address of main function +# and the global offset table. +# rtdyld-check: decode_operand(insn3, 1)[15:0] = ((section_addr(test_ELF_Mips64N64.o, .got) + 0x7ff0) - main + 0x8000)[31:16] +insn3: + lui $1, %hi(%neg(%gp_rel(main))) + daddu $1, $1, $25 + +# Check lower 16-bits of offset between the address of main function +# and the global offset table. +# rtdyld-check: decode_operand(insn4, 2)[15:0] = ((section_addr(test_ELF_Mips64N64.o, .got) + 0x7ff0) - main)[15:0] +insn4: + daddiu $1, $1, %lo(%neg(%gp_rel(main))) + sw $zero, 4($fp) + +# $gp register contains address of the .got section + 0x7FF0. 0x7FF0 is +# the offset of $gp from the beginning of the .got section. Check that we are +# loading address of the page pointer from correct offset. In this case +# the page pointer is the first entry in the .got section, so offset will be +# 0 - 0x7FF0. +# rtdyld-check: decode_operand(insn5, 2)[15:0] = 0x8010 +# +# Check that the global offset table contains the page pointer. +# rtdyld-check: *{8}(section_addr(test_ELF_Mips64N64.o, .got)) = (_str + 0x8000) & 0xffffffffffff0000 +insn5: + ld $25, %got_page(_str)($1) + +# Check the offset of _str from the page pointer. +# rtdyld-check: decode_operand(insn6, 2)[15:0] = _str[15:0] +insn6: + daddiu $25, $25, %got_ofst(_str) + +# Check that we are loading address of var from correct offset. In this case +# var is the second entry in the .got section, so offset will be 8 - 0x7FF0. +# rtdyld-check: decode_operand(insn7, 2)[15:0] = 0x8018 +# +# Check that the global offset table contains the address of the var. +# rtdyld-check: *{8}(section_addr(test_ELF_Mips64N64.o, .got) + 8) = var +insn7: + ld $2, %got_disp(var)($1) + sd $25, 0($2) + +# Check that we are loading address of bar from correct offset. In this case +# bar is the third entry in the .got section, so offset will be 16 - 0x7FF0. +# rtdyld-check: decode_operand(insn8, 2)[15:0] = 0x8020 +# +# Check that the global offset table contains the address of the bar. +# rtdyld-check: *{8}(section_addr(test_ELF_Mips64N64.o, .got) + 16) = bar +insn8: + ld $2, %call16(bar)($1) + + move $4, $25 + move $gp, $1 + move $25, $2 + jalr $25 + nop + move $sp, $fp + ld $gp, 8($sp) + ld $fp, 16($sp) + ld $ra, 24($sp) + daddiu $sp, $sp, 32 + jr $ra + nop + .set at + .set macro + .set reorder + .end main +$func_end1: + .size main, ($func_end1)-main + + .type _str,@object + .section .rodata.str1.1,"aMS",@progbits,1 +_str: + .asciz "test" + .size _str, 5 + + .type var,@object + .comm var,8,8 + + .section ".note.GNU-stack","",@progbits + .text diff --git a/test/ExecutionEngine/RuntimeDyld/Mips/ELF_O32_PIC_relocations.s b/test/ExecutionEngine/RuntimeDyld/Mips/ELF_O32_PIC_relocations.s new file mode 100644 index 000000000000..a4b145ab5172 --- /dev/null +++ b/test/ExecutionEngine/RuntimeDyld/Mips/ELF_O32_PIC_relocations.s @@ -0,0 +1,50 @@ +# RUN: llvm-mc -triple=mipsel-unknown-linux -relocation-model=pic -code-model=small -filetype=obj -o %T/test_ELF_O32.o %s +# RUN: llc -mtriple=mipsel-unknown-linux -relocation-model=pic -filetype=obj -o %T/test_ELF_ExternalFunction_O32.o %S/Inputs/ExternalFunction.ll +# RUN: llvm-rtdyld -triple=mipsel-unknown-linux -verify -map-section test_ELF_O32.o,.text=0x1000 -map-section test_ELF_ExternalFunction_O32.o,.text=0x10000 -check=%s %T/test_ELF_O32.o %T/test_ELF_ExternalFunction_O32.o + +# RUN: llvm-mc -triple=mips-unknown-linux -relocation-model=pic -code-model=small -filetype=obj -o %T/test_ELF_O32.o %s +# RUN: llc -mtriple=mips-unknown-linux -relocation-model=pic -filetype=obj -o %/T/test_ELF_ExternalFunction_O32.o %S/Inputs/ExternalFunction.ll +# RUN: llvm-rtdyld -triple=mips-unknown-linux -verify -map-section test_ELF_O32.o,.text=0x1000 -map-section test_ELF_ExternalFunction_O32.o,.text=0x10000 -check=%s %T/test_ELF_O32.o %T/test_ELF_ExternalFunction_O32.o + + .data +# rtdyld-check: *{4}R_MIPS_32 = foo[31:0] +R_MIPS_32: + .word foo +# rtdyld-check: *{4}(R_MIPS_32+4) = foo[31:0] + .4byte foo +# rtdyld-check: *{4}(R_MIPS_PC32) = (foo - R_MIPS_PC32)[31:0] +R_MIPS_PC32: + .word foo-. +# rtdyld-check: *{4}(R_MIPS_PC32 + 4) = (foo - tmp1)[31:0] +tmp1: + .4byte foo-tmp1 + + .text + .abicalls + .nan legacy + .text + .set nomicromips + .set nomips16 + .set noreorder + .set nomacro + .set noat + + .align 3 + .globl bar + .type bar,@function +bar: +# rtdyld-check: decode_operand(R_MIPS_26, 0)[27:0] = stub_addr(test_ELF_O32.o, .text, foo)[27:0] +# rtdyld-check: decode_operand(R_MIPS_26, 0)[1:0] = 0 +R_MIPS_26: + j foo + nop + +# rtdyld-check: decode_operand(R_MIPS_HI16, 1)[15:0] = foo[31:16] +R_MIPS_HI16: + lui $1, %hi(foo) + +# rtdyld-check: decode_operand(R_MIPS_LO16, 1)[15:0] = foo[15:0] +R_MIPS_LO16: + lui $1, %lo(foo) + + .size bar, .-bar diff --git a/test/ExecutionEngine/RuntimeDyld/Mips/Inputs/ExternalFunction.ll b/test/ExecutionEngine/RuntimeDyld/Mips/Inputs/ExternalFunction.ll new file mode 100644 index 000000000000..a59d68c1e186 --- /dev/null +++ b/test/ExecutionEngine/RuntimeDyld/Mips/Inputs/ExternalFunction.ll @@ -0,0 +1,4 @@ +define void @foo() { +entry: + ret void +} diff --git a/test/ExecutionEngine/RuntimeDyld/Mips/lit.local.cfg b/test/ExecutionEngine/RuntimeDyld/Mips/lit.local.cfg new file mode 100644 index 000000000000..a3183a25afaa --- /dev/null +++ b/test/ExecutionEngine/RuntimeDyld/Mips/lit.local.cfg @@ -0,0 +1,3 @@ +if not 'Mips' in config.root.targets: + config.unsupported = True + diff --git a/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s b/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s index f427b985b58c..6b2fe9532c2f 100644 --- a/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s +++ b/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s @@ -9,9 +9,9 @@ bar: tmp0$pb: popl %eax # Test section difference relocation to non-lazy ptr section. -# rtdyld-check: decode_operand(inst1, 4) = x$non_lazy_ptr - tmp0$pb +# rtdyld-check: decode_operand(inst1, 4) = x$non_lazy_ptr - tmp0$pb + 8 inst1: - movl x$non_lazy_ptr-tmp0$pb(%eax), %eax + movl (x$non_lazy_ptr-tmp0$pb)+8(%eax), %eax movl (%eax), %ebx # Test VANILLA relocation to jump table. |