1@ Check that non-local branches with and without mode switching 2@ produce the right relocations with appropriate in-place addends. 3 4 .syntax unified 5 6 .text 7 .arm 8 .global arm_glob_sym1 9 .global arm_glob_sym2 10 .global thumb_glob_sym1 11 .global thumb_glob_sym2 12 nop 13 .type arm_glob_sym1, %function 14arm_glob_sym1: 15 bl thumb_glob_sym1 16 bl thumb_glob_sym2 17 bl thumb_sym1 18 bl arm_glob_sym1 19 bl arm_glob_sym2 20 bl arm_sym1 21 blx thumb_glob_sym1 22 blx thumb_glob_sym2 23 blx thumb_sym1 24 blx arm_glob_sym1 25 blx arm_glob_sym2 26 blx arm_sym1 27 nop 28 bx lr 29 30 .type arm_sym1, %function 31arm_sym1: 32 nop 33 bx lr 34 35 .thumb 36 .thumb_func 37 .type thumb_sym1, %function 38thumb_sym1: 39 bx lr 40 41 .type thumb_glob_sym1, %function 42 .thumb_func 43 .thumb 44thumb_glob_sym1: 45 bx lr 46 47 .section foo,"ax" 48 49@ Add some space to avoid confusing objdump output: as we are 50@ producing a relocatable file, objdump may match an address to 51@ the wrong symbol (as symbols in different sections may have the same 52@ address in the object file). 53 .space 0x100 54 55 .type thumb_glob_sym2, %function 56 .thumb_func 57 .thumb 58thumb_glob_sym2: 59 bl arm_glob_sym1 60 bl arm_glob_sym2 61 bl arm_sym2 62 bl thumb_glob_sym1 63 bl thumb_glob_sym2 64 bl thumb_sym2 65 blx arm_glob_sym1 66 blx arm_glob_sym2 67 blx arm_sym2 68 blx thumb_glob_sym1 69 blx thumb_glob_sym2 70 blx thumb_sym2 71 nop 72 bx lr 73 74 .type thumb_sym2, %function 75thumb_sym2: 76 nop 77 bx lr 78 79 .arm 80 .type arm_sym2, %function 81arm_sym2: 82 bx lr 83 84 .global arm_glob_sym2 85 .type arm_glob_sym2, %function 86arm_glob_sym2: 87 bx lr 88