xref: /llvm-project/lld/test/ELF/Inputs/arm-cmse-macros.s (revision 9acbab60e59183e04741060984cb684163a73460)
1/// Because the addresses of __acle_se_\sym_name and \sym_name are equal,
2/// the linker creates a secure gateway in ".gnu.sgstubs".
3.macro cmse_veneer sym_name, sym_type, sym_binding, acle_sym_type, acle_sym_binding
4.align  2
5.\sym_binding  \sym_name
6.\acle_sym_binding  __acle_se_\sym_name
7.type  \sym_name, %\sym_type
8.type  __acle_se_\sym_name, %\acle_sym_type
9\sym_name:
10__acle_se_\sym_name:
11  nop
12.size  \sym_name, .-\sym_name
13.size  __acle_se_\sym_name, .-__acle_se_\sym_name
14.endm
15
16/// Because the addresses of __acle_se_\sym_name and \sym_name are not equal,
17/// the linker considers that an inline secure gateway exists and does not
18/// create one.
19.macro cmse_no_veneer sym_name, sym_type, sym_binding, acle_sym_type, acle_sym_binding
20.align  2
21.\sym_binding  \sym_name
22.\acle_sym_binding  __acle_se_\sym_name
23.type  \sym_name, %\sym_type
24.type  __acle_se_\sym_name, %\acle_sym_type
25\sym_name:
26	sg
27  nop
28__acle_se_\sym_name:
29  nop
30.size  \sym_name, .-\sym_name
31.size  __acle_se_\sym_name, .-__acle_se_\sym_name
32.endm
33