1de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar# RUN: llvm-mc -triple=i386-apple-macosx10.4 -filetype=obj -o %T/test_i386.o %s
237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines# RUN: llvm-rtdyld -triple=i386-apple-macosx10.4 -verify -check=%s %/T/test_i386.o
337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines
4f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar// Put the section used in the test at a non zero address.
5f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar	.long 4
6f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar
7f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar	.section	__TEXT,__text2,regular,pure_instructions
837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines	.globl	bar
937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines	.align	4, 0x90
1037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesbar:
1137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines	calll	tmp0$pb
1237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinestmp0$pb:
1337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines	popl	%eax
1437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines# Test section difference relocation to non-lazy ptr section.
156948897e478cbd66626159776a8017b3c18579b9Pirama Arumuga Nainar# rtdyld-check: decode_operand(inst1, 4) = x$non_lazy_ptr - tmp0$pb + 8
1637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesinst1:
176948897e478cbd66626159776a8017b3c18579b9Pirama Arumuga Nainar	movl	(x$non_lazy_ptr-tmp0$pb)+8(%eax), %eax
1837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines        movl    (%eax), %ebx
1937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines
2037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines# Test VANILLA relocation to jump table.
2137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines# rtdyld-check: decode_operand(inst2, 0) = bling$stub - next_pc(inst2)
2237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesinst2:
2337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines        calll	bling$stub
2437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines        addl    %ebx, %eax
2537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines
2637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines# Test scattered VANILLA relocations.
2737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesinst3:
2837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines        movl    y+4, %ecx
2937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines        addl    %ecx, %eax
3037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines	retl
3137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines
3237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines	.section	__IMPORT,__jump_table,symbol_stubs,pure_instructions+self_modifying_code,5
3337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesbling$stub:
3437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines	.indirect_symbol	bling
3537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines	.ascii	"\364\364\364\364\364"
3637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines
3737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines	.section	__IMPORT,__pointers,non_lazy_symbol_pointers
3837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesx$non_lazy_ptr:
3937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines	.indirect_symbol	x
4037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines	.long	0
4137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines
4237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines        .comm   x,4,2
4337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines        .comm   bling,4,2
4437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines
4537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines        .globl	y
4637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.zerofill __DATA,__common,y,8,3
4737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines
4837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.subsections_via_symbols
49