| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,25 +1,23 @@ | ||
| # RUN: llvm-mc -triple=i386-unknown-linux-gnu -filetype=obj -o %t.o %s | ||
| # 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, 0x90 | ||
| .type main,@function | ||
| main: | ||
| retl | ||
| .size main, .-main | ||
|
|
||
| # jitlink-check: decode_operand(foo, 0) = external_data | ||
| .globl foo | ||
| .p2align 4, 0x90 | ||
| .type foo,@function | ||
| foo: | ||
| movl external_data, %eax | ||
| .size foo, .-foo |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,31 +1,49 @@ | ||
| # RUN: llvm-mc -triple=i386-unknown-linux-gnu -filetype=obj -o %t.o %s | ||
| # RUN: llvm-jitlink -noexec \ | ||
| # RUN: -check %s %t.o | ||
| # | ||
| # Test ELF 32 bit pc relative relocations | ||
|
|
||
| .text | ||
|
|
||
| .globl main | ||
| .p2align 4 | ||
| .type main,@function | ||
| main: | ||
| retl | ||
| .size main, .-main | ||
|
|
||
|
|
||
| # 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: | ||
| retl | ||
| .size foo, .-foo | ||
|
|
||
|
|
||
| # 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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,68 @@ | ||
| # RUN: rm -rf %t && mkdir -p %t | ||
| # RUN: llvm-mc -triple=i386-unknown-linux-gnu -position-independent \ | ||
| # RUN: -filetype=obj -o %t/elf_sm_pic_reloc.o %s | ||
| # RUN: llvm-jitlink -noexec \ | ||
| # RUN: -slab-allocate 100Kb -slab-address 0xfff00000 -slab-page-size 4096 \ | ||
| # RUN: -check %s %t/elf_sm_pic_reloc.o | ||
| # | ||
| # Test ELF small/PIC relocations. | ||
|
|
||
| .text | ||
| .globl main | ||
| .p2align 4, 0x90 | ||
| .type main,@function | ||
| main: | ||
| ret | ||
| .size main, .-main | ||
|
|
||
|
|
||
| # Test GOT32 handling. | ||
| # | ||
| # We want to check both the offset to the GOT entry and its contents. | ||
| # jitlink-check: decode_operand(test_got, 4) = got_addr(elf_sm_pic_reloc.o, named_data1) - _GLOBAL_OFFSET_TABLE_ | ||
| # jitlink-check: *{4}(got_addr(elf_sm_pic_reloc.o, named_data1)) = named_data1 | ||
| # | ||
| # jitlink-check: decode_operand(test_got+6, 4) = got_addr(elf_sm_pic_reloc.o, named_data2) - _GLOBAL_OFFSET_TABLE_ | ||
| # jitlink-check: *{4}(got_addr(elf_sm_pic_reloc.o, named_data2)) = named_data2 | ||
|
|
||
| .globl test_got | ||
| .p2align 4, 0x90 | ||
| .type test_got,@function | ||
| test_got: | ||
| leal named_data1@GOT, %eax | ||
| leal named_data2@GOT, %eax | ||
| .size test_got, .-test_got | ||
|
|
||
|
|
||
|
|
||
| # Test GOTOFF64 handling. | ||
| # jitlink-check: decode_operand(test_gotoff, 1) = named_func - _GLOBAL_OFFSET_TABLE_ | ||
| .globl test_gotoff | ||
| .p2align 4, 0x90 | ||
| .type test_gotoff,@function | ||
| test_gotoff: | ||
| mov $named_func@GOTOFF, %eax | ||
| .size test_gotoff, .-test_gotoff | ||
|
|
||
|
|
||
| .globl named_func | ||
| .p2align 4, 0x90 | ||
| .type named_func,@function | ||
| named_func: | ||
| xor %eax, %eax | ||
| .size named_func, .-named_func | ||
|
|
||
|
|
||
| .data | ||
|
|
||
| .type named_data1,@object | ||
| .p2align 3 | ||
| named_data1: | ||
| .quad 42 | ||
| .size named_data1, 8 | ||
|
|
||
| .type named_data2,@object | ||
| .p2align 3 | ||
| named_data2: | ||
| .quad 42 | ||
| .size named_data2, 8 |