# RUN: rm -rf %t && mkdir -p %t # RUN: llvm-mc -triple=x86_64-apple-macosx10.9 -filetype=obj \ # RUN: -o %t/file_to_test.o %S/Inputs/MachO_test_harness_test.s # RUN: llvm-mc -triple=x86_64-apple-macosx10.9 -filetype=obj \ # RUN: -o %t/test_harness.o %s # RUN: not llvm-jitlink -noexec -check %s %t/file_to_test.o \ # RUN: -harness %t/test_harness.o # RUN: llvm-jitlink -noexec -phony-externals -check %s %t/file_to_test.o \ # RUN: -harness %t/test_harness.o # # Check that we # (1) Can call global symbols in the test object. # (2) Can call private symbols in the test object. # (3) Can interpose global symbols in the test object. # (4) Can interpose private symbols in the test object. # (5) Don't need to resolve unused externals in the test object. .section __TEXT,__text,regular,pure_instructions .globl _public_func_to_interpose .p2align 4, 0x90 _public_func_to_interpose: retq .globl _private_func_to_interpose .p2align 4, 0x90 _private_func_to_interpose: retq .globl _main .p2align 4, 0x90 _main: callq _public_func_to_test callq _private_func_to_test xorl %eax, %eax retq .section __DATA,__data # Check that the harness and test file agree on the address of the addresses # of the interposes: # jitlink-check: *{8}_public_func_to_interpose_as_seen_by_harness = \ # jitlink-check: *{8}_public_func_to_interpose_as_seen_by_test # jitlink-check: *{8}_private_func_to_interpose_as_seen_by_harness = \ # jitlink-check: *{8}_private_func_to_interpose_as_seen_by_test .globl _public_func_to_interpose_as_seen_by_harness .p2align 3 _public_func_to_interpose_as_seen_by_harness: .quad _public_func_to_interpose .globl _private_func_to_interpose_as_seen_by_harness .p2align 3 _private_func_to_interpose_as_seen_by_harness: .quad _private_func_to_interpose # We need to reference the *_as_seen_by_test pointers used above to ensure # that they're not dead-stripped as unused. .globl _anchor_test_case_pointers .p2align 3 _anchor_test_case_pointers: .quad _public_func_to_interpose_as_seen_by_test .quad _private_func_to_interpose_as_seen_by_test .subsections_via_symbols