yann@1
|
1 |
Fixes error:
|
yann@1
|
2 |
In file included from dynamic-link.h:21,
|
yann@1
|
3 |
from dl-load.c:32:
|
yann@1
|
4 |
../sysdeps/arm/dl-machine.h:124:25: missing terminating " character
|
yann@1
|
5 |
...
|
yann@1
|
6 |
make[2]: *** [/crosstool-0.22/build/arm-unknown-linux-gnu/gcc-3.3-glibc-2.2.5/build-glibc/elf/dl-load.o] Error 1
|
yann@1
|
7 |
|
yann@1
|
8 |
The first two hunks of
|
yann@1
|
9 |
http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/arm/dl-machine.h.diff?r1=1.39&r2=1.40&cvsroot=glibc
|
yann@1
|
10 |
applied cleanly, but the third hunk didn't, so I just added the \n\'s by hand for that section.
|
yann@1
|
11 |
|
yann@1
|
12 |
--- glibc-2.2.5/sysdeps/arm/dl-machine.h.orig Sat Sep 8 14:31:40 2001
|
yann@1
|
13 |
+++ glibc-2.2.5/sysdeps/arm/dl-machine.h Wed Aug 27 10:55:26 2003
|
yann@1
|
14 |
@@ -121,14 +121,15 @@
|
yann@1
|
15 |
and then redirect to the address it returns. */
|
yann@1
|
16 |
// macro for handling PIC situation....
|
yann@1
|
17 |
#ifdef PIC
|
yann@1
|
18 |
-#define CALL_ROUTINE(x) " ldr sl,0f
|
yann@1
|
19 |
- add sl, pc, sl
|
yann@1
|
20 |
-1: ldr r2, 2f
|
yann@1
|
21 |
- mov lr, pc
|
yann@1
|
22 |
- add pc, sl, r2
|
yann@1
|
23 |
- b 3f
|
yann@1
|
24 |
-0: .word _GLOBAL_OFFSET_TABLE_ - 1b - 4
|
yann@1
|
25 |
-2: .word " #x "(GOTOFF)
|
yann@1
|
26 |
+#define CALL_ROUTINE(x) "\
|
yann@1
|
27 |
+ ldr sl,0f\n\
|
yann@1
|
28 |
+ add sl, pc, sl\n\
|
yann@1
|
29 |
+1: ldr r2, 2f\n\
|
yann@1
|
30 |
+ mov lr, pc\n\
|
yann@1
|
31 |
+ add pc, sl, r2\n\
|
yann@1
|
32 |
+ b 3f\n\
|
yann@1
|
33 |
+0: .word _GLOBAL_OFFSET_TABLE_ - 1b - 4\n\
|
yann@1
|
34 |
+2: .word " #x "(GOTOFF)\n\
|
yann@1
|
35 |
3: "
|
yann@1
|
36 |
#else
|
yann@1
|
37 |
#define CALL_ROUTINE(x) " bl " #x
|
yann@1
|
38 |
@@ -136,114 +137,114 @@
|
yann@1
|
39 |
|
yann@1
|
40 |
#ifndef PROF
|
yann@1
|
41 |
# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\
|
yann@1
|
42 |
- .text
|
yann@1
|
43 |
- .globl _dl_runtime_resolve
|
yann@1
|
44 |
- .type _dl_runtime_resolve, #function
|
yann@1
|
45 |
- .align 2
|
yann@1
|
46 |
-_dl_runtime_resolve:
|
yann@1
|
47 |
- @ we get called with
|
yann@1
|
48 |
- @ stack[0] contains the return address from this call
|
yann@1
|
49 |
- @ ip contains &GOT[n+3] (pointer to function)
|
yann@1
|
50 |
- @ lr points to &GOT[2]
|
yann@1
|
51 |
-
|
yann@1
|
52 |
- @ save almost everything; lr is already on the stack
|
yann@1
|
53 |
- stmdb sp!,{r0-r3,sl,fp}
|
yann@1
|
54 |
-
|
yann@1
|
55 |
- @ prepare to call fixup()
|
yann@1
|
56 |
- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each
|
yann@1
|
57 |
- sub r1, ip, lr
|
yann@1
|
58 |
- sub r1, r1, #4
|
yann@1
|
59 |
- add r1, r1, r1
|
yann@1
|
60 |
-
|
yann@1
|
61 |
- @ get pointer to linker struct
|
yann@1
|
62 |
- ldr r0, [lr, #-4]
|
yann@1
|
63 |
-
|
yann@1
|
64 |
- @ call fixup routine
|
yann@1
|
65 |
- " CALL_ROUTINE(fixup) "
|
yann@1
|
66 |
-
|
yann@1
|
67 |
- @ save the return
|
yann@1
|
68 |
- mov ip, r0
|
yann@1
|
69 |
-
|
yann@1
|
70 |
- @ restore the stack
|
yann@1
|
71 |
- ldmia sp!,{r0-r3,sl,fp,lr}
|
yann@1
|
72 |
-
|
yann@1
|
73 |
- @ jump to the newly found address
|
yann@1
|
74 |
- mov pc, ip
|
yann@1
|
75 |
-
|
yann@1
|
76 |
- .size _dl_runtime_resolve, .-_dl_runtime_resolve
|
yann@1
|
77 |
-
|
yann@1
|
78 |
- .globl _dl_runtime_profile
|
yann@1
|
79 |
- .type _dl_runtime_profile, #function
|
yann@1
|
80 |
- .align 2
|
yann@1
|
81 |
-_dl_runtime_profile:
|
yann@1
|
82 |
- @ save almost everything; lr is already on the stack
|
yann@1
|
83 |
- stmdb sp!,{r0-r3,sl,fp}
|
yann@1
|
84 |
-
|
yann@1
|
85 |
- @ prepare to call fixup()
|
yann@1
|
86 |
- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each
|
yann@1
|
87 |
- sub r1, ip, lr
|
yann@1
|
88 |
- sub r1, r1, #4
|
yann@1
|
89 |
- add r1, r1, r1
|
yann@1
|
90 |
-
|
yann@1
|
91 |
- @ get pointer to linker struct
|
yann@1
|
92 |
- ldr r0, [lr, #-4]
|
yann@1
|
93 |
-
|
yann@1
|
94 |
- @ call profiling fixup routine
|
yann@1
|
95 |
- " CALL_ROUTINE(profile_fixup) "
|
yann@1
|
96 |
-
|
yann@1
|
97 |
- @ save the return
|
yann@1
|
98 |
- mov ip, r0
|
yann@1
|
99 |
-
|
yann@1
|
100 |
- @ restore the stack
|
yann@1
|
101 |
- ldmia sp!,{r0-r3,sl,fp,lr}
|
yann@1
|
102 |
-
|
yann@1
|
103 |
- @ jump to the newly found address
|
yann@1
|
104 |
- mov pc, ip
|
yann@1
|
105 |
-
|
yann@1
|
106 |
- .size _dl_runtime_resolve, .-_dl_runtime_resolve
|
yann@1
|
107 |
- .previous
|
yann@1
|
108 |
+ .text\n\
|
yann@1
|
109 |
+ .globl _dl_runtime_resolve\n\
|
yann@1
|
110 |
+ .type _dl_runtime_resolve, #function\n\
|
yann@1
|
111 |
+ .align 2\n\
|
yann@1
|
112 |
+_dl_runtime_resolve:\n\
|
yann@1
|
113 |
+ @ we get called with\n\
|
yann@1
|
114 |
+ @ stack[0] contains the return address from this call\n\
|
yann@1
|
115 |
+ @ ip contains &GOT[n+3] (pointer to function)\n\
|
yann@1
|
116 |
+ @ lr points to &GOT[2]\n\
|
yann@1
|
117 |
+\n\
|
yann@1
|
118 |
+ @ save almost everything; lr is already on the stack\n\
|
yann@1
|
119 |
+ stmdb sp!,{r0-r3,sl,fp}\n\
|
yann@1
|
120 |
+\n\
|
yann@1
|
121 |
+ @ prepare to call fixup()\n\
|
yann@1
|
122 |
+ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
|
yann@1
|
123 |
+ sub r1, ip, lr\n\
|
yann@1
|
124 |
+ sub r1, r1, #4\n\
|
yann@1
|
125 |
+ add r1, r1, r1\n\
|
yann@1
|
126 |
+\n\
|
yann@1
|
127 |
+ @ get pointer to linker struct\n\
|
yann@1
|
128 |
+ ldr r0, [lr, #-4]\n\
|
yann@1
|
129 |
+\n\
|
yann@1
|
130 |
+ @ call fixup routine\n\
|
yann@1
|
131 |
+ " CALL_ROUTINE(fixup) "\n\
|
yann@1
|
132 |
+\n\
|
yann@1
|
133 |
+ @ save the return\n\
|
yann@1
|
134 |
+ mov ip, r0\n\
|
yann@1
|
135 |
+\n\
|
yann@1
|
136 |
+ @ restore the stack\n\
|
yann@1
|
137 |
+ ldmia sp!,{r0-r3,sl,fp,lr}\n\
|
yann@1
|
138 |
+\n\
|
yann@1
|
139 |
+ @ jump to the newly found address\n\
|
yann@1
|
140 |
+ mov pc, ip\n\
|
yann@1
|
141 |
+\n\
|
yann@1
|
142 |
+ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
|
yann@1
|
143 |
+\n\
|
yann@1
|
144 |
+ .globl _dl_runtime_profile\n\
|
yann@1
|
145 |
+ .type _dl_runtime_profile, #function\n\
|
yann@1
|
146 |
+ .align 2\n\
|
yann@1
|
147 |
+_dl_runtime_profile:\n\
|
yann@1
|
148 |
+ @ save almost everything; lr is already on the stack\n\
|
yann@1
|
149 |
+ stmdb sp!,{r0-r3,sl,fp}\n\
|
yann@1
|
150 |
+\n\
|
yann@1
|
151 |
+ @ prepare to call fixup()\n\
|
yann@1
|
152 |
+ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
|
yann@1
|
153 |
+ sub r1, ip, lr\n\
|
yann@1
|
154 |
+ sub r1, r1, #4\n\
|
yann@1
|
155 |
+ add r1, r1, r1\n\
|
yann@1
|
156 |
+\n\
|
yann@1
|
157 |
+ @ get pointer to linker struct\n\
|
yann@1
|
158 |
+ ldr r0, [lr, #-4]\n\
|
yann@1
|
159 |
+\n\
|
yann@1
|
160 |
+ @ call profiling fixup routine\n\
|
yann@1
|
161 |
+ " CALL_ROUTINE(profile_fixup) "\n\
|
yann@1
|
162 |
+\n\
|
yann@1
|
163 |
+ @ save the return\n\
|
yann@1
|
164 |
+ mov ip, r0\n\
|
yann@1
|
165 |
+\n\
|
yann@1
|
166 |
+ @ restore the stack\n\
|
yann@1
|
167 |
+ ldmia sp!,{r0-r3,sl,fp,lr}\n\
|
yann@1
|
168 |
+\n\
|
yann@1
|
169 |
+ @ jump to the newly found address\n\
|
yann@1
|
170 |
+ mov pc, ip\n\
|
yann@1
|
171 |
+\n\
|
yann@1
|
172 |
+ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
|
yann@1
|
173 |
+ .previous\n\
|
yann@1
|
174 |
");
|
yann@1
|
175 |
#else // PROF
|
yann@1
|
176 |
# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\
|
yann@1
|
177 |
- .text
|
yann@1
|
178 |
- .globl _dl_runtime_resolve
|
yann@1
|
179 |
- .globl _dl_runtime_profile
|
yann@1
|
180 |
- .type _dl_runtime_resolve, #function
|
yann@1
|
181 |
- .type _dl_runtime_profile, #function
|
yann@1
|
182 |
- .align 2
|
yann@1
|
183 |
-_dl_runtime_resolve:
|
yann@1
|
184 |
-_dl_runtime_profile:
|
yann@1
|
185 |
- @ we get called with
|
yann@1
|
186 |
- @ stack[0] contains the return address from this call
|
yann@1
|
187 |
- @ ip contains &GOT[n+3] (pointer to function)
|
yann@1
|
188 |
- @ lr points to &GOT[2]
|
yann@1
|
189 |
-
|
yann@1
|
190 |
- @ save almost everything; return add is already on the stack
|
yann@1
|
191 |
- stmdb sp!,{r0-r3,sl,fp}
|
yann@1
|
192 |
-
|
yann@1
|
193 |
- @ prepare to call fixup()
|
yann@1
|
194 |
- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each
|
yann@1
|
195 |
- sub r1, ip, lr
|
yann@1
|
196 |
- sub r1, r1, #4
|
yann@1
|
197 |
- add r1, r1, r1
|
yann@1
|
198 |
-
|
yann@1
|
199 |
- @ get pointer to linker struct
|
yann@1
|
200 |
- ldr r0, [lr, #-4]
|
yann@1
|
201 |
-
|
yann@1
|
202 |
- @ call profiling fixup routine
|
yann@1
|
203 |
- " CALL_ROUTINE(fixup) "
|
yann@1
|
204 |
-
|
yann@1
|
205 |
- @ save the return
|
yann@1
|
206 |
- mov ip, r0
|
yann@1
|
207 |
-
|
yann@1
|
208 |
- @ restore the stack
|
yann@1
|
209 |
- ldmia sp!,{r0-r3,sl,fp,lr}
|
yann@1
|
210 |
-
|
yann@1
|
211 |
- @ jump to the newly found address
|
yann@1
|
212 |
- mov pc, ip
|
yann@1
|
213 |
-
|
yann@1
|
214 |
- .size _dl_runtime_profile, .-_dl_runtime_profile
|
yann@1
|
215 |
- .previous
|
yann@1
|
216 |
+ .text\n\
|
yann@1
|
217 |
+ .globl _dl_runtime_resolve\n\
|
yann@1
|
218 |
+ .globl _dl_runtime_profile\n\
|
yann@1
|
219 |
+ .type _dl_runtime_resolve, #function\n\
|
yann@1
|
220 |
+ .type _dl_runtime_profile, #function\n\
|
yann@1
|
221 |
+ .align 2\n\
|
yann@1
|
222 |
+_dl_runtime_resolve:\n\
|
yann@1
|
223 |
+_dl_runtime_profile:\n\
|
yann@1
|
224 |
+ @ we get called with\n\
|
yann@1
|
225 |
+ @ stack[0] contains the return address from this call\n\
|
yann@1
|
226 |
+ @ ip contains &GOT[n+3] (pointer to function)\n\
|
yann@1
|
227 |
+ @ lr points to &GOT[2]\n\
|
yann@1
|
228 |
+\n\
|
yann@1
|
229 |
+ @ save almost everything; return add is already on the stack\n\
|
yann@1
|
230 |
+ stmdb sp!,{r0-r3,sl,fp}\n\
|
yann@1
|
231 |
+\n\
|
yann@1
|
232 |
+ @ prepare to call fixup()\n\
|
yann@1
|
233 |
+ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
|
yann@1
|
234 |
+ sub r1, ip, lr\n\
|
yann@1
|
235 |
+ sub r1, r1, #4\n\
|
yann@1
|
236 |
+ add r1, r1, r1\n\
|
yann@1
|
237 |
+\n\
|
yann@1
|
238 |
+ @ get pointer to linker struct\n\
|
yann@1
|
239 |
+ ldr r0, [lr, #-4]\n\
|
yann@1
|
240 |
+\n\
|
yann@1
|
241 |
+ @ call profiling fixup routine\n\
|
yann@1
|
242 |
+ " CALL_ROUTINE(fixup) "\n\
|
yann@1
|
243 |
+\n\
|
yann@1
|
244 |
+ @ save the return\n\
|
yann@1
|
245 |
+ mov ip, r0\n\
|
yann@1
|
246 |
+\n\
|
yann@1
|
247 |
+ @ restore the stack\n\
|
yann@1
|
248 |
+ ldmia sp!,{r0-r3,sl,fp,lr}\n\
|
yann@1
|
249 |
+\n\
|
yann@1
|
250 |
+ @ jump to the newly found address\n\
|
yann@1
|
251 |
+ mov pc, ip\n\
|
yann@1
|
252 |
+\n\
|
yann@1
|
253 |
+ .size _dl_runtime_profile, .-_dl_runtime_profile\n\
|
yann@1
|
254 |
+ .previous\n\
|
yann@1
|
255 |
");
|
yann@1
|
256 |
#endif //PROF
|
yann@1
|
257 |
|
yann@1
|
258 |
@@ -256,70 +257,70 @@
|
yann@1
|
259 |
its return value is the user program's entry point. */
|
yann@1
|
260 |
|
yann@1
|
261 |
#define RTLD_START asm ("\
|
yann@1
|
262 |
-.text
|
yann@1
|
263 |
-.globl _start
|
yann@1
|
264 |
-.globl _dl_start_user
|
yann@1
|
265 |
-_start:
|
yann@1
|
266 |
- @ at start time, all the args are on the stack
|
yann@1
|
267 |
- mov r0, sp
|
yann@1
|
268 |
- bl _dl_start
|
yann@1
|
269 |
- @ returns user entry point in r0
|
yann@1
|
270 |
-_dl_start_user:
|
yann@1
|
271 |
- mov r6, r0
|
yann@1
|
272 |
- @ we are PIC code, so get global offset table
|
yann@1
|
273 |
- ldr sl, .L_GET_GOT
|
yann@1
|
274 |
- add sl, pc, sl
|
yann@1
|
275 |
-.L_GOT_GOT:
|
yann@1
|
276 |
- @ Store the highest stack address
|
yann@1
|
277 |
- ldr r1, .L_STACK_END
|
yann@1
|
278 |
- ldr r1, [sl, r1]
|
yann@1
|
279 |
- str sp, [r1]
|
yann@1
|
280 |
- @ See if we were run as a command with the executable file
|
yann@1
|
281 |
- @ name as an extra leading argument.
|
yann@1
|
282 |
- ldr r4, .L_SKIP_ARGS
|
yann@1
|
283 |
- ldr r4, [sl, r4]
|
yann@1
|
284 |
- @ get the original arg count
|
yann@1
|
285 |
- ldr r1, [sp]
|
yann@1
|
286 |
- @ subtract _dl_skip_args from it
|
yann@1
|
287 |
- sub r1, r1, r4
|
yann@1
|
288 |
- @ adjust the stack pointer to skip them
|
yann@1
|
289 |
- add sp, sp, r4, lsl #2
|
yann@1
|
290 |
- @ get the argv address
|
yann@1
|
291 |
- add r2, sp, #4
|
yann@1
|
292 |
- @ store the new argc in the new stack location
|
yann@1
|
293 |
- str r1, [sp]
|
yann@1
|
294 |
- @ compute envp
|
yann@1
|
295 |
- add r3, r2, r1, lsl #2
|
yann@1
|
296 |
- add r3, r3, #4
|
yann@1
|
297 |
-
|
yann@1
|
298 |
- @ now we call _dl_init
|
yann@1
|
299 |
- ldr r0, .L_LOADED
|
yann@1
|
300 |
- ldr r0, [sl, r0]
|
yann@1
|
301 |
- ldr r0, [r0]
|
yann@1
|
302 |
- @ call _dl_init
|
yann@1
|
303 |
- bl _dl_init(PLT)
|
yann@1
|
304 |
- @ clear the startup flag
|
yann@1
|
305 |
- ldr r2, .L_STARTUP_FLAG
|
yann@1
|
306 |
- ldr r1, [sl, r2]
|
yann@1
|
307 |
- mov r0, #0
|
yann@1
|
308 |
- str r0, [r1]
|
yann@1
|
309 |
- @ load the finalizer function
|
yann@1
|
310 |
- ldr r0, .L_FINI_PROC
|
yann@1
|
311 |
- ldr r0, [sl, r0]
|
yann@1
|
312 |
- @ jump to the user_s entry point
|
yann@1
|
313 |
- mov pc, r6
|
yann@1
|
314 |
-.L_GET_GOT:
|
yann@1
|
315 |
+.text\n\
|
yann@1
|
316 |
+.globl _start\n\
|
yann@1
|
317 |
+.globl _dl_start_user\n\
|
yann@1
|
318 |
+_start:\n\
|
yann@1
|
319 |
+ @ at start time, all the args are on the stack\n\
|
yann@1
|
320 |
+ mov r0, sp\n\
|
yann@1
|
321 |
+ bl _dl_start\n\
|
yann@1
|
322 |
+ @ returns user entry point in r0\n\
|
yann@1
|
323 |
+_dl_start_user:\n\
|
yann@1
|
324 |
+ mov r6, r0\n\
|
yann@1
|
325 |
+ @ we are PIC code, so get global offset table\n\
|
yann@1
|
326 |
+ ldr sl, .L_GET_GOT\n\
|
yann@1
|
327 |
+ add sl, pc, sl\n\
|
yann@1
|
328 |
+.L_GOT_GOT:\n\
|
yann@1
|
329 |
+ @ Store the highest stack address\n\
|
yann@1
|
330 |
+ ldr r1, .L_STACK_END\n\
|
yann@1
|
331 |
+ ldr r1, [sl, r1]\n\
|
yann@1
|
332 |
+ str sp, [r1]\n\
|
yann@1
|
333 |
+ @ See if we were run as a command with the executable file\n\
|
yann@1
|
334 |
+ @ name as an extra leading argument.\n\
|
yann@1
|
335 |
+ ldr r4, .L_SKIP_ARGS\n\
|
yann@1
|
336 |
+ ldr r4, [sl, r4]\n\
|
yann@1
|
337 |
+ @ get the original arg count\n\
|
yann@1
|
338 |
+ ldr r1, [sp]\n\
|
yann@1
|
339 |
+ @ subtract _dl_skip_args from it\n\
|
yann@1
|
340 |
+ sub r1, r1, r4\n\
|
yann@1
|
341 |
+ @ adjust the stack pointer to skip them\n\
|
yann@1
|
342 |
+ add sp, sp, r4, lsl #2\n\
|
yann@1
|
343 |
+ @ get the argv address\n\
|
yann@1
|
344 |
+ add r2, sp, #4\n\
|
yann@1
|
345 |
+ @ store the new argc in the new stack location\n\
|
yann@1
|
346 |
+ str r1, [sp]\n\
|
yann@1
|
347 |
+ @ compute envp\n\
|
yann@1
|
348 |
+ add r3, r2, r1, lsl #2\n\
|
yann@1
|
349 |
+ add r3, r3, #4\n\
|
yann@1
|
350 |
+\n\
|
yann@1
|
351 |
+ @ now we call _dl_init\n\
|
yann@1
|
352 |
+ ldr r0, .L_LOADED\n\
|
yann@1
|
353 |
+ ldr r0, [sl, r0]\n\
|
yann@1
|
354 |
+ ldr r0, [r0]\n\
|
yann@1
|
355 |
+ @ call _dl_init\n\
|
yann@1
|
356 |
+ bl _dl_init(PLT)\n\
|
yann@1
|
357 |
+ @ clear the startup flag\n\
|
yann@1
|
358 |
+ ldr r2, .L_STARTUP_FLAG\n\
|
yann@1
|
359 |
+ ldr r1, [sl, r2]\n\
|
yann@1
|
360 |
+ mov r0, #0\n\
|
yann@1
|
361 |
+ str r0, [r1]\n\
|
yann@1
|
362 |
+ @ load the finalizer function\n\
|
yann@1
|
363 |
+ ldr r0, .L_FINI_PROC\n\
|
yann@1
|
364 |
+ ldr r0, [sl, r0]\n\
|
yann@1
|
365 |
+ @ jump to the user_s entry point\n\
|
yann@1
|
366 |
+ mov pc, r6\n\
|
yann@1
|
367 |
+.L_GET_GOT:\n\
|
yann@1
|
368 |
.word _GLOBAL_OFFSET_TABLE_ - .L_GOT_GOT - 4 \n\
|
yann@1
|
369 |
.L_SKIP_ARGS: \n\
|
yann@1
|
370 |
.word _dl_skip_args(GOTOFF) \n\
|
yann@1
|
371 |
-.L_STARTUP_FLAG:
|
yann@1
|
372 |
- .word _dl_starting_up(GOT)
|
yann@1
|
373 |
-.L_FINI_PROC:
|
yann@1
|
374 |
- .word _dl_fini(GOT)
|
yann@1
|
375 |
-.L_STACK_END:
|
yann@1
|
376 |
- .word __libc_stack_end(GOT)
|
yann@1
|
377 |
-.L_LOADED:
|
yann@1
|
378 |
- .word _dl_loaded(GOT)
|
yann@1
|
379 |
+.L_STARTUP_FLAG:\n\
|
yann@1
|
380 |
+ .word _dl_starting_up(GOT)\n\
|
yann@1
|
381 |
+.L_FINI_PROC:\n\
|
yann@1
|
382 |
+ .word _dl_fini(GOT)\n\
|
yann@1
|
383 |
+.L_STACK_END:\n\
|
yann@1
|
384 |
+ .word __libc_stack_end(GOT)\n\
|
yann@1
|
385 |
+.L_LOADED:\n\
|
yann@1
|
386 |
+ .word _dl_loaded(GOT)\n\
|
yann@1
|
387 |
.previous\n\
|
yann@1
|
388 |
");
|
yann@1
|
389 |
|