| # RUN: rm -rf %t && mkdir -p %t |
| # RUN: llvm-mc -triple=i386-apple-macosx10.4 -filetype=obj -o %t/test_i386.o %s |
| # RUN: llvm-rtdyld -triple=i386-apple-macosx10.4 -verify -check=%s %t/test_i386.o |
| |
| // Put the section used in the test at a non zero address. |
| .long 4 |
| |
| .section __TEXT,__text2,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 + 8 |
| inst1: |
| movl (x$non_lazy_ptr-tmp0$pb)+8(%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 |