Add (EXPERIMENTAL) in prompts of those options that depend on EXPERIMENTAL.
1 From http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/alpha/dl-machine.h.diff?r1=1.56&r2=1.57&cvsroot=glibc
3 Lets glibc-2.2.5 compile with gcc-3.3
5 ===================================================================
6 RCS file: /cvs/glibc/libc/sysdeps/alpha/dl-machine.h,v
7 retrieving revision 1.56
8 retrieving revision 1.57
10 --- libc/sysdeps/alpha/dl-machine.h 2001/12/12 00:10:27 1.56
11 +++ libc/sysdeps/alpha/dl-machine.h 2001/12/31 17:33:59 1.57
12 @@ -156,125 +157,126 @@
13 #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name, IMB) \
14 extern void tramp_name (void); \
16 - .globl " #tramp_name "
17 - .ent " #tramp_name "
20 - .frame $sp, 44*8, $26
21 - /* Preserve all integer registers that C normally doesn't. */
66 - .mask 0x27ff01ff, -44*8
67 - .fmask 0xfffffc03, -(44-21)*8
68 - /* Set up our $gp */
72 - /* Set up the arguments for fixup: */
73 - /* $16 = link_map out of plt0 */
74 - /* $17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24 */
75 - /* $18 = return address */
82 - bsr $26, " ASM_ALPHA_NG_SYMBOL_PREFIX #fixup_name "..ng
83 - /* Move the destination address into position. */
85 - /* Restore program registers. */
109 - ldt $f10, 23*8($sp)
110 - ldt $f11, 24*8($sp)
111 - ldt $f12, 25*8($sp)
112 - ldt $f13, 26*8($sp)
113 - ldt $f14, 27*8($sp)
114 - ldt $f15, 28*8($sp)
115 - ldt $f16, 29*8($sp)
116 - ldt $f17, 30*8($sp)
117 - ldt $f18, 31*8($sp)
118 - ldt $f19, 32*8($sp)
119 - ldt $f20, 33*8($sp)
120 - ldt $f21, 34*8($sp)
121 - ldt $f22, 35*8($sp)
122 - ldt $f23, 36*8($sp)
123 - ldt $f24, 37*8($sp)
124 - ldt $f25, 38*8($sp)
125 - ldt $f26, 39*8($sp)
126 - ldt $f27, 40*8($sp)
127 - ldt $f28, 41*8($sp)
128 - ldt $f29, 42*8($sp)
129 - ldt $f30, 43*8($sp)
130 - /* Flush the Icache after having modified the .plt code. */
132 - /* Clean up and turn control to the destination */
135 + .globl " #tramp_name " \n\
136 + .ent " #tramp_name " \n\
137 +" #tramp_name ": \n\
138 + lda $sp, -44*8($sp) \n\
139 + .frame $sp, 44*8, $26 \n\
140 + /* Preserve all integer registers that C normally \n\
142 + stq $26, 0*8($sp) \n\
143 + stq $0, 1*8($sp) \n\
144 + stq $1, 2*8($sp) \n\
145 + stq $2, 3*8($sp) \n\
146 + stq $3, 4*8($sp) \n\
147 + stq $4, 5*8($sp) \n\
148 + stq $5, 6*8($sp) \n\
149 + stq $6, 7*8($sp) \n\
150 + stq $7, 8*8($sp) \n\
151 + stq $8, 9*8($sp) \n\
152 + stq $16, 10*8($sp) \n\
153 + stq $17, 11*8($sp) \n\
154 + stq $18, 12*8($sp) \n\
155 + stq $19, 13*8($sp) \n\
156 + stq $20, 14*8($sp) \n\
157 + stq $21, 15*8($sp) \n\
158 + stq $22, 16*8($sp) \n\
159 + stq $23, 17*8($sp) \n\
160 + stq $24, 18*8($sp) \n\
161 + stq $25, 19*8($sp) \n\
162 + stq $29, 20*8($sp) \n\
163 + stt $f0, 21*8($sp) \n\
164 + stt $f1, 22*8($sp) \n\
165 + stt $f10, 23*8($sp) \n\
166 + stt $f11, 24*8($sp) \n\
167 + stt $f12, 25*8($sp) \n\
168 + stt $f13, 26*8($sp) \n\
169 + stt $f14, 27*8($sp) \n\
170 + stt $f15, 28*8($sp) \n\
171 + stt $f16, 29*8($sp) \n\
172 + stt $f17, 30*8($sp) \n\
173 + stt $f18, 31*8($sp) \n\
174 + stt $f19, 32*8($sp) \n\
175 + stt $f20, 33*8($sp) \n\
176 + stt $f21, 34*8($sp) \n\
177 + stt $f22, 35*8($sp) \n\
178 + stt $f23, 36*8($sp) \n\
179 + stt $f24, 37*8($sp) \n\
180 + stt $f25, 38*8($sp) \n\
181 + stt $f26, 39*8($sp) \n\
182 + stt $f27, 40*8($sp) \n\
183 + stt $f28, 41*8($sp) \n\
184 + stt $f29, 42*8($sp) \n\
185 + stt $f30, 43*8($sp) \n\
186 + .mask 0x27ff01ff, -44*8 \n\
187 + .fmask 0xfffffc03, -(44-21)*8 \n\
188 + /* Set up our $gp */ \n\
190 + ldgp $gp, 0($gp) \n\
192 + /* Set up the arguments for fixup: */ \n\
193 + /* $16 = link_map out of plt0 */ \n\
194 + /* $17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24 */\n\
195 + /* $18 = return address */ \n\
196 + subq $28, $27, $17 \n\
197 + ldq $16, 8($27) \n\
198 + subq $17, 20, $17 \n\
200 + addq $17, $17, $17 \n\
201 + /* Do the fixup */ \n\
202 + bsr $26, " ASM_ALPHA_NG_SYMBOL_PREFIX #fixup_name "..ng\n\
203 + /* Move the destination address into position. */ \n\
205 + /* Restore program registers. */ \n\
206 + ldq $26, 0*8($sp) \n\
207 + ldq $0, 1*8($sp) \n\
208 + ldq $1, 2*8($sp) \n\
209 + ldq $2, 3*8($sp) \n\
210 + ldq $3, 4*8($sp) \n\
211 + ldq $4, 5*8($sp) \n\
212 + ldq $5, 6*8($sp) \n\
213 + ldq $6, 7*8($sp) \n\
214 + ldq $7, 8*8($sp) \n\
215 + ldq $8, 9*8($sp) \n\
216 + ldq $16, 10*8($sp) \n\
217 + ldq $17, 11*8($sp) \n\
218 + ldq $18, 12*8($sp) \n\
219 + ldq $19, 13*8($sp) \n\
220 + ldq $20, 14*8($sp) \n\
221 + ldq $21, 15*8($sp) \n\
222 + ldq $22, 16*8($sp) \n\
223 + ldq $23, 17*8($sp) \n\
224 + ldq $24, 18*8($sp) \n\
225 + ldq $25, 19*8($sp) \n\
226 + ldq $29, 20*8($sp) \n\
227 + ldt $f0, 21*8($sp) \n\
228 + ldt $f1, 22*8($sp) \n\
229 + ldt $f10, 23*8($sp) \n\
230 + ldt $f11, 24*8($sp) \n\
231 + ldt $f12, 25*8($sp) \n\
232 + ldt $f13, 26*8($sp) \n\
233 + ldt $f14, 27*8($sp) \n\
234 + ldt $f15, 28*8($sp) \n\
235 + ldt $f16, 29*8($sp) \n\
236 + ldt $f17, 30*8($sp) \n\
237 + ldt $f18, 31*8($sp) \n\
238 + ldt $f19, 32*8($sp) \n\
239 + ldt $f20, 33*8($sp) \n\
240 + ldt $f21, 34*8($sp) \n\
241 + ldt $f22, 35*8($sp) \n\
242 + ldt $f23, 36*8($sp) \n\
243 + ldt $f24, 37*8($sp) \n\
244 + ldt $f25, 38*8($sp) \n\
245 + ldt $f26, 39*8($sp) \n\
246 + ldt $f27, 40*8($sp) \n\
247 + ldt $f28, 41*8($sp) \n\
248 + ldt $f29, 42*8($sp) \n\
249 + ldt $f30, 43*8($sp) \n\
250 + /* Flush the Icache after having modified the .plt code. */\n\
252 + /* Clean up and turn control to the destination */ \n\
253 + lda $sp, 44*8($sp) \n\
258 @@ -292,85 +294,87 @@
259 its return value is the user program's entry point. */
261 #define RTLD_START asm ("\
270 - /* Pass pointer to argument block to _dl_start. */
272 - bsr $26, "ASM_ALPHA_NG_SYMBOL_PREFIX"_dl_start..ng
275 - .globl _dl_start_user
276 - .ent _dl_start_user
280 - /* Save the user entry point address in s0. */
282 - /* Store the highest stack address. */
283 - stq $30, __libc_stack_end
284 - /* See if we were run as a command with the executable file
285 - name as an extra leading argument. */
286 - ldl $1, _dl_skip_args
287 - bne $1, $fixup_stack
289 - /* The special initializer gets called with the stack just
290 - as the application's entry point will see it; it can
291 - switch stacks if it moves these contents over. */
292 -" RTLD_START_SPECIAL_INIT "
293 - /* Call _dl_init(_dl_loaded, argc, argv, envp) to run initializers. */
294 - ldq $16, _dl_loaded
300 - /* Pass our finalizer function to the user in $0. */
302 - /* Jump to the user's entry point. */
306 - /* Adjust the stack pointer to skip _dl_skip_args words. This
307 - involves copying everything down, since the stack pointer must
308 - always be 16-byte aligned. */
318 - /* Copy down argv. */
324 - /* Copy down envp. */
330 - /* Copy down auxiliary table. */
338 - br $fixup_stack_ret
339 - .end _dl_start_user
347 +0: ldgp $gp, 0($gp) \n\
349 + /* Pass pointer to argument block to _dl_start. */ \n\
351 + bsr $26, "ASM_ALPHA_NG_SYMBOL_PREFIX"_dl_start..ng \n\
354 + .globl _dl_start_user \n\
355 + .ent _dl_start_user \n\
357 + .frame $30,0,$31,0 \n\
359 + /* Save the user entry point address in s0. */ \n\
361 + /* Store the highest stack address. */ \n\
362 + stq $30, __libc_stack_end \n\
363 + /* See if we were run as a command with the executable \n\
364 + file name as an extra leading argument. */ \n\
365 + ldl $1, _dl_skip_args \n\
366 + bne $1, $fixup_stack \n\
367 +$fixup_stack_ret: \n\
368 + /* The special initializer gets called with the stack \n\
369 + just as the application's entry point will see it; \n\
370 + it can switch stacks if it moves these contents \n\
372 +" RTLD_START_SPECIAL_INIT " \n\
373 + /* Call _dl_init(_dl_loaded, argc, argv, envp) to run \n\
374 + initializers. */ \n\
375 + ldq $16, _dl_loaded \n\
376 + ldq $17, 0($sp) \n\
377 + lda $18, 8($sp) \n\
378 + s8addq $17, 8, $19 \n\
379 + addq $19, $18, $19 \n\
380 + jsr $26, _dl_init \n\
381 + /* Pass our finalizer function to the user in $0. */ \n\
382 + lda $0, _dl_fini \n\
383 + /* Jump to the user's entry point. */ \n\
387 + /* Adjust the stack pointer to skip _dl_skip_args words.\n\
388 + This involves copying everything down, since the \n\
389 + stack pointer must always be 16-byte aligned. */ \n\
391 + ldq $5, _dl_argv \n\
392 + subq $31, $1, $6 \n\
393 + subq $2, $1, $2 \n\
394 + s8addq $6, $5, $5 \n\
396 + s8addq $1, $sp, $3 \n\
398 + stq $5, _dl_argv \n\
399 + /* Copy down argv. */ \n\
400 +0: ldq $5, 8($3) \n\
405 + /* Copy down envp. */ \n\
406 +1: ldq $5, 8($3) \n\
411 + /* Copy down auxiliary table. */ \n\
412 +2: ldq $5, 8($3) \n\
414 + addq $4, 16, $4 \n\
415 + addq $3, 16, $3 \n\
419 + br $fixup_stack_ret \n\
420 + .end _dl_start_user \n\
424 #ifndef RTLD_START_SPECIAL_INIT