1 2 # RUN: llvm-mc -triple powerpc64-unknown-unknown -filetype=obj %s | \ 3 # RUN: llvm-readobj -h -r -symbols | FileCheck %s 4 # RUN: llvm-mc -triple powerpc64le-unknown-unknown -filetype=obj %s | \ 5 # RUN: llvm-readobj -h -r -symbols | FileCheck %s 6 7 .type callee1, @function 8 callee1: 9 nop 10 nop 11 .localentry callee1, .-callee1 12 nop 13 nop 14 .size callee1, .-callee1 15 16 .type callee2, @function 17 callee2: 18 nop 19 nop 20 .size callee2, .-callee2 21 22 .type caller, @function 23 caller: 24 bl callee1 25 nop 26 bl callee2 27 nop 28 .size caller, .-caller 29 30 .section .text.other 31 caller_other: 32 bl callee1 33 nop 34 bl callee2 35 nop 36 .size caller_other, .-caller_other 37 38 copy1 = callee1 39 copy2 = callee2 40 41 # Verify that use of .localentry implies ABI version 2 42 # CHECK: ElfHeader { 43 # CHECK: Flags [ (0x2) 44 45 # Verify that fixups to local function symbols are performed only 46 # if the target symbol does not use .localentry 47 # CHECK: Relocations [ 48 # CHECK: Section ({{[0-9]*}}) .rela.text { 49 # CHECK-NEXT: R_PPC64_REL24 callee1 50 # CHECK-NEXT: } 51 # CHECK-NOT: R_PPC64_REL24 callee2 52 # CHECK: Section ({{[0-9]*}}) .rela.text.other { 53 # CHECK-NEXT: R_PPC64_REL24 callee1 54 # CHECK-NEXT: R_PPC64_REL24 .text 55 # CHECK-NEXT: } 56 57 # Verify that .localentry is encoded in the Other field. 58 # CHECK: Symbols [ 59 # CHECK: Name: callee1 60 # CHECK-NEXT: Value: 61 # CHECK-NEXT: Size: 16 62 # CHECK-NEXT: Binding: Local 63 # CHECK-NEXT: Type: Function 64 # CHECK-NEXT: Other [ (0x60) 65 # CHECK-NEXT: ] 66 # CHECK-NEXT: Section: .text 67 # CHECK: Name: callee2 68 # CHECK-NEXT: Value: 69 # CHECK-NEXT: Size: 8 70 # CHECK-NEXT: Binding: Local 71 # CHECK-NEXT: Type: Function 72 # CHECK-NEXT: Other: 0 73 # CHECK-NEXT: Section: .text 74 75 # Verify that symbol assignment copies the Other bits. 76 # CHECK: Name: copy1 77 # CHECK-NEXT: Value: 78 # CHECK-NEXT: Size: 16 79 # CHECK-NEXT: Binding: Local 80 # CHECK-NEXT: Type: Function 81 # CHECK-NEXT: Other [ (0x60) 82 # CHECK-NEXT: ] 83 # CHECK-NEXT: Section: .text 84 # CHECK: Name: copy2 85 # CHECK-NEXT: Value: 86 # CHECK-NEXT: Size: 8 87 # CHECK-NEXT: Binding: Local 88 # CHECK-NEXT: Type: Function 89 # CHECK-NEXT: Other: 0 90 # CHECK-NEXT: Section: .text 91 92