2016-08-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
[binutils-gdb.git] / ld / testsuite / ld-arm / cmse-veneers.s
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 .else
57 @ Invalid setups for veneer generation (visibility)
58 entry loc_entry_veneer1, function, local
59 entry loc_entry_veneer2, function, global, visspc=local
60 entry loc_entry_veneer3, function, local, visspc=global
61 entry loc_entry_veneer4, function, weak, visspc=local
62 entry loc_entry_veneer5, function, local, visspc=weak
63
64 @ Invalid setups for veneer generation (absent standard symbol)
65 .align 2
66 .global __acle_se_fake_entry_veneer1
67 .thumb
68 .thumb_func
69 .type __acle_se_fake_entry_veneer1, %function
70 __acle_se_fake_entry_veneer1:
71 nop
72 .size __acle_se_fake_entry_veneer1, .-__acle_se_fake_entry_veneer1
73
74 @ Invalid setups for veneer generation (type)
75 entry obj_entry_veneer1, object, global, typespc=function
76 entry obj_entry_veneer2, function, global, typespc=object
77
78 @ Invalid setup for veneer generation (sections)
79 .section .text.sub1
80 .align 2
81 .thumb
82 .thumb_func
83 .global __acle_se_fake_entry_veneer2
84 .type __acle_se_fake_entry_veneer2, %function
85 __acle_se_fake_entry_veneer2:
86 nop
87 .size __acle_se_fake_entry_veneer2, .-__acle_se_fake_entry_veneer2
88 .section .text.sub2
89 .align 2
90 .thumb
91 .thumb_func
92 .global fake_entry_veneer2
93 .type fake_entry_veneer2, %function
94 fake_entry_veneer2:
95 nop
96 .size fake_entry_veneer2, .-fake_entry_veneer2
97 .endif