1 .syntax unified 2 .thumb 3 .file "foo.c" 4 .text 5 6.macro decltype name, type 7.ifc \type,object 8 .data 9.else 10 .thumb 11 .thumb_func 12.endif 13 .type \name, %\type 14.endm 15 16 17.macro entry name, type, vis, typespc, visspc, entry_fct 18 .align 2 19.ifb \visspc 20 .\vis __acle_se_\name 21.else 22 .\visspc __acle_se_\name 23.endif 24 .\vis \name 25 .thumb 26 .thumb_func 27.ifb \typespc 28 decltype __acle_se_\name, \type 29.else 30 decltype __acle_se_\name, \typespc 31.endif 32 decltype \name, \type 33__acle_se_\name: 34 \entry_fct 35\name: 36.ifc \type,object 37 .word 42 38.else 39 nop 40.endif 41 .size \name, .-\name 42 .size __acle_se_\name, .-__acle_se_\name 43.endm 44 45 46.ifndef CHECK_ERRORS 47 @ Valid setups for veneer generation 48 entry glob_entry_veneer1, function, global 49 entry weak_entry_veneer1, function, weak 50 entry glob_entry_veneer2, function, global, visspc=weak 51 entry weak_entry_veneer2, function, weak, visspc=global 52 53 @ Valid setup for entry function without SG veneer 54 entry glob_entry_fct, function, global, entry_fct=nop 55 56 @ Valid setup for entry function with absolute address 57 .align 2 58 .global __acle_se_abs_entry_fct 59 .global abs_entry_fct 60 .type __acle_se_abs_entry_fct, %function 61 .type abs_entry_fct, %function 62__acle_se_abs_entry_fct = 0x10000 63abs_entry_fct = 0x10004 64 .size abs_entry_fct, 0 65 .size __acle_se_abs_entry_fct, 0 66.else 67 @ Invalid setups for veneer generation (visibility) 68 entry loc_entry_veneer1, function, local 69 entry loc_entry_veneer2, function, global, visspc=local 70 entry loc_entry_veneer3, function, local, visspc=global 71 entry loc_entry_veneer4, function, weak, visspc=local 72 entry loc_entry_veneer5, function, local, visspc=weak 73 74 @ Invalid setups for veneer generation (absent standard symbol) 75 .align 2 76 .global __acle_se_fake_entry_veneer1 77 .thumb 78 .thumb_func 79 .type __acle_se_fake_entry_veneer1, %function 80__acle_se_fake_entry_veneer1: 81 nop 82 .size __acle_se_fake_entry_veneer1, .-__acle_se_fake_entry_veneer1 83 84 @ Invalid setups for veneer generation (type) 85 entry obj_entry_veneer1, object, global, typespc=function 86 entry obj_entry_veneer2, function, global, typespc=object 87 88 @ Invalid setup for veneer generation (sections) 89 .section .text.sub1 90 .align 2 91 .thumb 92 .thumb_func 93 .global __acle_se_fake_entry_veneer2 94 .type __acle_se_fake_entry_veneer2, %function 95__acle_se_fake_entry_veneer2: 96 nop 97 .size __acle_se_fake_entry_veneer2, .-__acle_se_fake_entry_veneer2 98 .section .text.sub2 99 .align 2 100 .thumb 101 .thumb_func 102 .global fake_entry_veneer2 103 .type fake_entry_veneer2, %function 104fake_entry_veneer2: 105 nop 106 .size fake_entry_veneer2, .-fake_entry_veneer2 107.endif 108