1*9880d681SAndroid Build Coastguard Worker@ RUN: not llvm-mc -triple armv7-linux-eabi -filetype asm -o /dev/null %s 2>&1 \ 2*9880d681SAndroid Build Coastguard Worker@ RUN: | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker .syntax unified 5*9880d681SAndroid Build Coastguard Worker .thumb 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker .global function 8*9880d681SAndroid Build Coastguard Worker .type function,%function 9*9880d681SAndroid Build Coastguard Worker .thumb_func 10*9880d681SAndroid Build Coastguard Workerfunction: 11*9880d681SAndroid Build Coastguard Worker .personalityindex 0 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker@ CHECK: error: .fnstart must precede .personalityindex directive 14*9880d681SAndroid Build Coastguard Worker@ CHECK: .personalityindex 0 15*9880d681SAndroid Build Coastguard Worker@ CHECK: ^ 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker .global ununwindable 18*9880d681SAndroid Build Coastguard Worker .type ununwindable,%function 19*9880d681SAndroid Build Coastguard Worker .thumb_func 20*9880d681SAndroid Build Coastguard Workerununwindable: 21*9880d681SAndroid Build Coastguard Worker .fnstart 22*9880d681SAndroid Build Coastguard Worker .cantunwind 23*9880d681SAndroid Build Coastguard Worker .personalityindex 0 24*9880d681SAndroid Build Coastguard Worker .fnend 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker@ CHECK: error: .personalityindex cannot be used with .cantunwind 27*9880d681SAndroid Build Coastguard Worker@ CHECK: .personalityindex 0 28*9880d681SAndroid Build Coastguard Worker@ CHECK: ^ 29*9880d681SAndroid Build Coastguard Worker@ CHECK: note: .cantunwind was specified here 30*9880d681SAndroid Build Coastguard Worker@ CHECK: .cantunwind 31*9880d681SAndroid Build Coastguard Worker@ CHECK: ^ 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker .global nodata 34*9880d681SAndroid Build Coastguard Worker .type nodata,%function 35*9880d681SAndroid Build Coastguard Worker .thumb_func 36*9880d681SAndroid Build Coastguard Workernodata: 37*9880d681SAndroid Build Coastguard Worker .fnstart 38*9880d681SAndroid Build Coastguard Worker .handlerdata 39*9880d681SAndroid Build Coastguard Worker .personalityindex 0 40*9880d681SAndroid Build Coastguard Worker .fnend 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker@ CHECK: error: .personalityindex must precede .handlerdata directive 43*9880d681SAndroid Build Coastguard Worker@ CHECK: .personalityindex 0 44*9880d681SAndroid Build Coastguard Worker@ CHECK: ^ 45*9880d681SAndroid Build Coastguard Worker@ CHECK: note: .handlerdata was specified here 46*9880d681SAndroid Build Coastguard Worker@ CHECK: .handlerdata 47*9880d681SAndroid Build Coastguard Worker@ CHECK: ^ 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker .global multiple_personality 50*9880d681SAndroid Build Coastguard Worker .type multiple_personality,%function 51*9880d681SAndroid Build Coastguard Worker .thumb_func 52*9880d681SAndroid Build Coastguard Workermultiple_personality: 53*9880d681SAndroid Build Coastguard Worker .fnstart 54*9880d681SAndroid Build Coastguard Worker .personality __aeabi_personality_pr0 55*9880d681SAndroid Build Coastguard Worker .personalityindex 0 56*9880d681SAndroid Build Coastguard Worker .fnend 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker@ CHECK: error: multiple personality directives 59*9880d681SAndroid Build Coastguard Worker@ CHECK: .personalityindex 0 60*9880d681SAndroid Build Coastguard Worker@ CHECK: ^ 61*9880d681SAndroid Build Coastguard Worker@ CHECK: note: .personality was specified here 62*9880d681SAndroid Build Coastguard Worker@ CHECK: .personality __aeabi_personality_pr0 63*9880d681SAndroid Build Coastguard Worker@ CHECK: ^ 64*9880d681SAndroid Build Coastguard Worker@ CHECK: note: .personalityindex was specified here 65*9880d681SAndroid Build Coastguard Worker@ CHECK: .personalityindex 0 66*9880d681SAndroid Build Coastguard Worker@ CHECK: ^ 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker .global multiple_personality_indicies 69*9880d681SAndroid Build Coastguard Worker .type multiple_personality_indicies,%function 70*9880d681SAndroid Build Coastguard Worker .thumb_func 71*9880d681SAndroid Build Coastguard Workermultiple_personality_indicies: 72*9880d681SAndroid Build Coastguard Worker .fnstart 73*9880d681SAndroid Build Coastguard Worker .personalityindex 0 74*9880d681SAndroid Build Coastguard Worker .personalityindex 1 75*9880d681SAndroid Build Coastguard Worker .fnend 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Worker@ CHECK: error: multiple personality directives 78*9880d681SAndroid Build Coastguard Worker@ CHECK: .personalityindex 1 79*9880d681SAndroid Build Coastguard Worker@ CHECK: ^ 80*9880d681SAndroid Build Coastguard Worker@ CHECK: note: .personalityindex was specified here 81*9880d681SAndroid Build Coastguard Worker@ CHECK: .personalityindex 0 82*9880d681SAndroid Build Coastguard Worker@ CHECK: ^ 83*9880d681SAndroid Build Coastguard Worker@ CHECK: note: .personalityindex was specified here 84*9880d681SAndroid Build Coastguard Worker@ CHECK: .personalityindex 1 85*9880d681SAndroid Build Coastguard Worker@ CHECK: ^ 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Worker .global invalid_expression 88*9880d681SAndroid Build Coastguard Worker .type invalid_expression,%function 89*9880d681SAndroid Build Coastguard Worker .thumb_func 90*9880d681SAndroid Build Coastguard Workerinvalid_expression: 91*9880d681SAndroid Build Coastguard Worker .fnstart 92*9880d681SAndroid Build Coastguard Worker .personalityindex <expression> 93*9880d681SAndroid Build Coastguard Worker .fnend 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Worker@ CHECK: error: unknown token in expression 96*9880d681SAndroid Build Coastguard Worker@ CHECK: .personalityindex <expression> 97*9880d681SAndroid Build Coastguard Worker@ CHECK: ^ 98*9880d681SAndroid Build Coastguard Worker 99*9880d681SAndroid Build Coastguard Worker .global nonconstant_expression 100*9880d681SAndroid Build Coastguard Worker .type nonconstant_expression,%function 101*9880d681SAndroid Build Coastguard Worker .thumb_func 102*9880d681SAndroid Build Coastguard Workernonconstant_expression: 103*9880d681SAndroid Build Coastguard Worker .fnstart 104*9880d681SAndroid Build Coastguard Worker .personalityindex nonconstant_expression 105*9880d681SAndroid Build Coastguard Worker .fnend 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Worker@ CHECK: error: index must be a constant number 108*9880d681SAndroid Build Coastguard Worker@ CHECK: .personalityindex nonconstant_expression 109*9880d681SAndroid Build Coastguard Worker@ CHECK: ^ 110*9880d681SAndroid Build Coastguard Worker 111*9880d681SAndroid Build Coastguard Worker .global bad_index 112*9880d681SAndroid Build Coastguard Worker .type bad_index,%function 113*9880d681SAndroid Build Coastguard Worker .thumb_func 114*9880d681SAndroid Build Coastguard Workerbad_index: 115*9880d681SAndroid Build Coastguard Worker .fnstart 116*9880d681SAndroid Build Coastguard Worker .personalityindex 42 117*9880d681SAndroid Build Coastguard Worker .fnend 118*9880d681SAndroid Build Coastguard Worker 119*9880d681SAndroid Build Coastguard Worker@ CHECK: error: personality routine index should be in range [0-3] 120*9880d681SAndroid Build Coastguard Worker@ CHECK: .personalityindex 42 121*9880d681SAndroid Build Coastguard Worker@ CHECK: ^ 122*9880d681SAndroid Build Coastguard Worker 123