@ Check that non-local branches with and without mode switching @ produce the right relocations with appropriate in-place addends. .syntax unified .text .arm .global arm_glob_sym1 .global arm_glob_sym2 .global thumb_glob_sym1 .global thumb_glob_sym2 nop .type arm_glob_sym1, %function arm_glob_sym1: bl thumb_glob_sym1 bl thumb_glob_sym2 bl thumb_sym1 bl arm_glob_sym1 bl arm_glob_sym2 bl arm_sym1 blx thumb_glob_sym1 blx thumb_glob_sym2 blx thumb_sym1 blx arm_glob_sym1 blx arm_glob_sym2 blx arm_sym1 nop bx lr .type arm_sym1, %function arm_sym1: nop bx lr .thumb .thumb_func .type thumb_sym1, %function thumb_sym1: bx lr .type thumb_glob_sym1, %function .thumb_func .thumb thumb_glob_sym1: bx lr .section foo,"ax" @ Add some space to avoid confusing objdump output: as we are @ producing a relocatable file, objdump may match an address to @ the wrong symbol (as symbols in different sections may have the same @ address in the object file). .space 0x100 .type thumb_glob_sym2, %function .thumb_func .thumb thumb_glob_sym2: bl arm_glob_sym1 bl arm_glob_sym2 bl arm_sym2 bl thumb_glob_sym1 bl thumb_glob_sym2 bl thumb_sym2 blx arm_glob_sym1 blx arm_glob_sym2 blx arm_sym2 blx thumb_glob_sym1 blx thumb_glob_sym2 blx thumb_sym2 nop bx lr .type thumb_sym2, %function thumb_sym2: nop bx lr .arm .type arm_sym2, %function arm_sym2: bx lr .global arm_glob_sym2 .type arm_glob_sym2, %function arm_glob_sym2: bx lr