* elf32-m32c.c (m32c_offset_for_reloc): Fix local symbol
[binutils.git] / ld / testsuite / ld-m68hc11 / relax-group.s
blob41c55f5118a9b8624470e74a37f381cc033950ac
1 ;;; Test 68HC11 linker relaxation (group relax)
2 ;;;
3 .sect .text
4 .globl _start
5 _start:
6 ;;;
7 ;;; The following group of instructions are adjusted.
8 ;;;
9 .relax L1x
10 ldx #table
11 bset 0,x #4
12 L1x:
13 .relax L1y
14 ldy #table
15 bset 0,y #4
16 L1y:
17 .relax L2x
18 ldx #table+3
19 bset 0,x #4
20 bset 1,x #8
21 L2x:
22 .relax L2y
23 ldy #table+3
24 bset 0,y #4
25 bset 1,y #8
26 L2y:
27 .relax L3x
28 ldx #table+6
29 bset 0,x #4
30 bset 1,x #8
31 bset 2,x #12
32 bset 3,x #12
33 bset 4,x #12
34 bset 5,x #12
35 L3x:
36 .relax L3y
37 ldy #table+6
38 bset 0,y #4
39 bset 1,y #8
40 bset 2,y #12
41 bset 3,y #12
42 bset 4,y #12
43 bset 5,y #12
44 L3y:
45 ;; Next branch is always relative. It must be adjusted while
46 ;; above instructions are relaxed.
47 bra _start
48 ;;;
49 ;;; This group has the first two bset insn relaxable while the
50 ;;; others are not. The ldx/ldy must not be removed.
51 ;;;
52 .relax L4x
53 ldx #table+0xfe
54 bset 0,x #4
55 bset 1,x #8
56 bset 2,x #12
57 bset 3,x #12
58 bset 4,x #12
59 bset 5,x #12
60 L4x:
61 .relax L4y
62 ldy #table+0xfe
63 bset 0,y #4
64 bset 1,y #8
65 bset 2,y #12
66 bset 3,y #12
67 bset 4,y #12
68 bset 5,y #12
69 L4y:
70 ;;;
71 ;;; Relax group for bclr
72 ;;;
73 .relax L5x
74 ldx #table+10
75 bclr 0,x #4
76 bclr 1,x #8
77 L5x:
78 .relax L5y
79 ldy #table+16
80 bclr 10,y #4
81 bclr 11,y #8
82 L5y:
83 ;;;
84 ;;; Relax group for brset (with backward branch)
85 ;;;
86 .relax L6x
87 ldx #table+8
88 brset 0,x #4 L5y
89 L6x:
90 .relax L7x
91 ldy #table+8
92 brset 0,y #4 L6x
93 L7x:
94 ;;;
95 ;;; Relax group for brset (with forward branch)
96 ;;;
97 .relax L8x
98 ldx #table+8
99 brset 0,x #4 brend
100 L8x:
101 .relax L8y
102 ldy #table+8
103 brset 0,y #4 brend
104 L8y:
106 ;;; Relax group for brclr (with backward branch)
107 ;;;
108 .relax L9x
109 ldx #table+8
110 brclr 0,x #4 L8y
111 L9x:
112 .relax L9y
113 ldy #table+8
114 brclr 0,y #4 L9x
115 L9y:
117 ;;; Relax group for brclr (with forward branch)
118 ;;;
119 .relax L10x
120 ldx #table+8
121 brclr 0,x #4 brend
122 L10x:
123 .relax L10y
124 ldy #table+8
125 brclr 0,y #4 brend
126 L10y:
128 brend:
130 ;;; The following are wrong use of .relax groups.
132 .relax w1
134 .relax w2
135 bset 0,x #4
137 .relax w3
138 ldx #table
140 .relax w4
141 ldy #table+8
143 .relax w5
147 ;;; Next insn is not in a .relax group
148 ldx #table
149 bset 0,x #5
150 bra _start
153 .sect .page0
154 .globl table
155 table: .long 0
156 table4: .long 0
157 table8: .long 0
158 .skip 10
159 end_table:
160 .long 0