[MCJIT] Add an i386 RuntimeDyldMachO test case.

llvm-svn: 216024
This commit is contained in:
Lang Hames 2014-08-19 21:26:36 +00:00
parent 35de5b8ca1
commit df7be5105a
2 changed files with 49 additions and 4 deletions

View File

@ -0,0 +1,45 @@
# RUN: llvm-mc -triple=i386-apple-macosx10.4 -relocation-model=dynamic-no-pic -filetype=obj -o %T/test_i386.o %s
# RUN: llvm-rtdyld -triple=i386-apple-macosx10.4 -verify -check=%s %/T/test_i386.o
.section __TEXT,__text,regular,pure_instructions
.globl bar
.align 4, 0x90
bar:
calll tmp0$pb
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
inst1:
movl x$non_lazy_ptr-tmp0$pb(%eax), %eax
movl (%eax), %ebx
# Test VANILLA relocation to jump table.
# rtdyld-check: decode_operand(inst2, 0) = bling$stub - next_pc(inst2)
inst2:
calll bling$stub
addl %ebx, %eax
# Test scattered VANILLA relocations.
inst3:
movl y+4, %ecx
addl %ecx, %eax
retl
.section __IMPORT,__jump_table,symbol_stubs,pure_instructions+self_modifying_code,5
bling$stub:
.indirect_symbol bling
.ascii "\364\364\364\364\364"
.section __IMPORT,__pointers,non_lazy_symbol_pointers
x$non_lazy_ptr:
.indirect_symbol x
.long 0
.comm x,4,2
.comm bling,4,2
.globl y
.zerofill __DATA,__common,y,8,3
.subsections_via_symbols

View File

@ -1,5 +1,5 @@
# RUN: llvm-mc -triple=x86_64-apple-macosx10.9 -relocation-model=pic -filetype=obj -o %T/foo.o %s
# RUN: llvm-rtdyld -triple=x86_64-apple-macosx10.9 -verify -check=%s %/T/foo.o
# RUN: llvm-mc -triple=x86_64-apple-macosx10.9 -relocation-model=pic -filetype=obj -o %T/test_x86-64.o %s
# RUN: llvm-rtdyld -triple=x86_64-apple-macosx10.9 -verify -check=%s %/T/test_x86-64.o
# XFAIL: mips
.section __TEXT,__text,regular,pure_instructions
@ -24,8 +24,8 @@ insn2:
# Test PC-rel GOT relocation.
# Verify both the contents of the GOT entry for y, and that the movq instruction
# references the correct GOT entry address:
# rtdyld-check: *{8}(stub_addr(foo.o, __text, y)) = y
# rtdyld-check: decode_operand(insn3, 4) = stub_addr(foo.o, __text, y) - next_pc(insn3)
# rtdyld-check: *{8}(stub_addr(test_x86-64.o, __text, y)) = y
# rtdyld-check: decode_operand(insn3, 4) = stub_addr(test_x86-64.o, __text, y) - next_pc(insn3)
insn3:
movq y@GOTPCREL(%rip), %rax