| # test for little endian |
| # RUN: rm -rf %t && mkdir -p %t |
| # RUN: llvm-mc -triple=powerpc64le-unknown-linux-gnu -filetype=obj -o %t/ppc64_reloc.o %s |
| # RUN: llvm-mc -triple=powerpc64le-unknown-linux-gnu -filetype=obj -o %t/ppc64_elf_module_b.o %S/Inputs/ppc64_elf_module_b.s |
| # RUN: llvm-rtdyld -triple=powerpc64le-unknown-linux-gnu -verify -check=%s %t/ppc64_reloc.o %t/ppc64_elf_module_b.o |
| # test for big endian |
| # RUN: rm -rf %t && mkdir -p %t |
| # RUN: llvm-mc -triple=powerpc64-unknown-linux-gnu -filetype=obj -o %t/ppc64_reloc.o %s |
| # RUN: llvm-mc -triple=powerpc64-unknown-linux-gnu -filetype=obj -o %t/ppc64_elf_module_b.o %S/Inputs/ppc64_elf_module_b.s |
| # RUN: llvm-rtdyld -triple=powerpc64-unknown-linux-gnu -verify -check=%s %t/ppc64_reloc.o %t/ppc64_elf_module_b.o |
| |
| .text |
| .abiversion 2 |
| .file "test.c" |
| .globl func |
| .p2align 4 |
| .type func,@function |
| func: # @func |
| .Lfunc_begin0: |
| .Lfunc_gep0: |
| addis 2, 12, .TOC.-.Lfunc_gep0@ha |
| addi 2, 2, .TOC.-.Lfunc_gep0@l |
| .Lfunc_lep0: |
| .localentry func, .Lfunc_lep0-.Lfunc_gep0 |
| mflr 0 |
| std 31, -8(1) |
| std 0, 16(1) |
| stdu 1, -112(1) |
| mr 31, 1 |
| # confirm that LK flag is set for bl |
| # rtdyld-check: (*{4}call_bl) & 1 = 1 |
| call_bl: |
| bl foo |
| nop |
| |
| li 3, 0 |
| addi 1, 1, 112 |
| ld 0, 16(1) |
| ld 31, -8(1) |
| mtlr 0 |
| # confirm that LK flag is not set for b |
| # rtdyld-check: (*{4}call_b) & 1 = 0 |
| call_b: |
| b foo |
| .long 0 |
| .quad 0 |
| .Lfunc_end0: |
| .size func, .Lfunc_end0-.Lfunc_begin0 |