--- /dev/null
+# RUN: llvm-mc -triple=i386-unknown-linux-gnu -filetype=obj --show-encoding --show-inst -o %t.o %s
+# RUN: llvm-jitlink -noexec \
+# RUN: -slab-allocate 1Kb -slab-address 0x1 -slab-page-size 4096 \
+# RUN: -abs external_data=0x32 \
+# RUN: -check %s %t.o
+#
+# Test ELF 16 bit absolute relocations
+
+ .text
+ .code16
+
+ .globl main
+ .align 2, 0x90
+ .type main,@function
+main:
+ ret
+ .size main, .-main
+
+# jitlink-check: decode_operand(bar, 0) = external_data
+ .globl bar
+ .align 2, 0x90
+ .type bar,@function
+bar:
+ retw $external_data
+ .size bar, .-bar
\ No newline at end of file
# RUN: llvm-mc -triple=i386-unknown-linux-gnu -filetype=obj -o %t.o %s
-# RUN: llvm-jitlink -noexec %t.o
+# RUN: llvm-jitlink -noexec \
+# RUN: -slab-allocate 100Kb -slab-address 0xfff00000 -slab-page-size 4096 \
+# RUN: -abs external_data=0x100 \
+# RUN: -check %s %t.o
+
+# Test ELF 32 bit absolute relocations
.text
- .globl main
- .p2align 4
+ .globl main
+ .p2align 4, 0x90
.type main,@function
-main:
- pushl %ebp
- movl %esp, %ebp
- pushl %eax
- movl $0, -4(%ebp)
- movl a, %eax
- addl $4, %esp
- popl %ebp
- retl
-
+main:
+ retl
.size main, .-main
- .data
- .p2align 2
- .type a,@object
-a:
- .long 42
- .size a, 4
\ No newline at end of file
+# jitlink-check: decode_operand(foo, 0) = external_data
+ .globl foo
+ .p2align 4, 0x90
+ .type foo,@function
+foo:
+ movl external_data, %eax
+ .size foo, .-foo
\ No newline at end of file
# RUN: llvm-mc -triple=i386-unknown-linux-gnu -filetype=obj -o %t.o %s
-# RUN: llvm-jitlink -noexec %t.o
+# RUN: llvm-jitlink -noexec \
+# RUN: -check %s %t.o
+#
+# Test ELF 32 bit pc relative relocations
.text
- .section .text.main
+
.globl main
.p2align 4
.type main,@function
main:
- pushl %ebp
- movl %esp, %ebp
- subl $8, %esp
- movl $0, -4(%ebp)
- calll foo
- addl $8, %esp
- popl %ebp
retl
-
.size main, .-main
- .section .text.foo
+
+# Tests PC relative relocation for positive offset from PC
+# jitlink-check: decode_operand(bar, 0) = foo - next_pc(bar)
+
+ .globl bar
+ .p2align 4
+ .type bar,@function
+bar:
+ calll foo
+ .size bar, .-bar
+
+ .globl foo
.p2align 4
.type foo,@function
foo:
- pushl %ebp
- movl %esp, %ebp
- movl $42, %eax
- popl %ebp
retl
+ .size foo, .-foo
- .size foo, .-foo
\ No newline at end of file
+
+# Tests PC relative relocation for negative offset from PC
+# jitlink-check: decode_operand(baz, 0) = fooz - next_pc(baz)
+ .globl fooz
+ .p2align 4
+ .type fooz,@function
+fooz:
+ retl
+ .size fooz, .-fooz
+
+ .globl baz
+ .p2align 4
+ .type baz,@function
+baz:
+ calll fooz
+ .size baz, .-baz
\ No newline at end of file