ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CMSDIST/libunwind-optimise.patch
Revision: 1.6
Committed: Sat Aug 21 09:34:18 2010 UTC (14 years, 8 months ago) by lat
Branch: MAIN
CVS Tags: HEAD
Changes since 1.5: +0 -0 lines
State: FILE REMOVED
Error occurred while calculating annotation data.
Log Message:
Preliminary still non-working version of libatomic_ops/libunwind/igprof chain as externals.

File Contents

# Content
1 --- include/libunwind_i.h.orig 2009-05-08 18:34:10.000000000 +0200
2 +++ include/libunwind_i.h 2009-05-19 15:41:30.000000000 +0200
3 @@ -183,13 +183,13 @@ extern intrmask_t unwi_full_mask;
4 #define lock_init(l) mutex_init (l)
5 #define lock_acquire(l,m) \
6 do { \
7 - sigprocmask (SIG_SETMASK, &unwi_full_mask, &(m)); \
8 + /* sigprocmask (SIG_SETMASK, &unwi_full_mask, &(m));*/\
9 mutex_lock (l); \
10 } while (0)
11 #define lock_release(l,m) \
12 do { \
13 mutex_unlock (l); \
14 - sigprocmask (SIG_SETMASK, &(m), NULL); \
15 + /* sigprocmask (SIG_SETMASK, &(m), NULL); */ \
16 } while (0)
17
18 #define SOS_MEMORY_SIZE 16384 /* see src/mi/mempool.c */
19 --- src/arm/Gglobal.c.orig 2009-05-08 18:34:10.000000000 +0200
20 +++ src/arm/Gglobal.c 2009-05-19 15:41:30.000000000 +0200
21 @@ -44,7 +44,7 @@ tdep_init (void)
22
23 sigfillset (&unwi_full_mask);
24
25 - sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask);
26 + /* sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask); */
27 mutex_lock (&arm_lock);
28 {
29 if (!tdep_needs_initialization)
30 @@ -62,5 +62,5 @@ tdep_init (void)
31 }
32 out:
33 mutex_unlock (&arm_lock);
34 - sigprocmask (SIG_SETMASK, &saved_mask, NULL);
35 + /* sigprocmask (SIG_SETMASK, &saved_mask, NULL); */
36 }
37 --- src/dwarf/Gparser.c.orig 2009-05-19 15:55:12.000000000 +0200
38 +++ src/dwarf/Gparser.c 2009-05-19 16:18:26.000000000 +0200
39 @@ -490,7 +490,7 @@ get_rs_cache (unw_addr_space_t as, intrm
40 if (AO_test_and_set (&cache->busy) == AO_TS_SET)
41 return NULL;
42 # else
43 - sigprocmask (SIG_SETMASK, &unwi_full_mask, saved_maskp);
44 + /* sigprocmask (SIG_SETMASK, &unwi_full_mask, saved_maskp); */
45 if (likely (caching == UNW_CACHE_GLOBAL))
46 {
47 Debug (16, "%s: acquiring lock\n", __FUNCTION__);
48 @@ -523,7 +523,7 @@ put_rs_cache (unw_addr_space_t as, struc
49 # else
50 if (likely (as->caching_policy == UNW_CACHE_GLOBAL))
51 mutex_unlock (&cache->lock);
52 - sigprocmask (SIG_SETMASK, saved_maskp, NULL);
53 + /* sigprocmask (SIG_SETMASK, saved_maskp, NULL); */
54 # endif
55 #endif
56 }
57 --- src/dwarf/Gfind_proc_info-lsb.c.orig 2009-05-19 16:29:03.000000000 +0200
58 +++ src/dwarf/Gfind_proc_info-lsb.c 2009-05-19 16:46:36.000000000 +0200
59 @@ -745,9 +745,9 @@ dwarf_find_proc_info (unw_addr_space_t a
60 cb_data.di.format = -1;
61 cb_data.di_debug.format = -1;
62
63 - sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask);
64 + /* sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask); */
65 ret = dl_iterate_phdr (callback, &cb_data);
66 - sigprocmask (SIG_SETMASK, &saved_mask, NULL);
67 + /* sigprocmask (SIG_SETMASK, &saved_mask, NULL); */
68
69 if (ret <= 0)
70 {
71 --- src/hppa/Gglobal.c.orig 2009-05-08 18:34:10.000000000 +0200
72 +++ src/hppa/Gglobal.c 2009-05-19 15:41:30.000000000 +0200
73 @@ -35,7 +35,7 @@ tdep_init (void)
74
75 sigfillset (&unwi_full_mask);
76
77 - sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask);
78 + /* sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask); */
79 mutex_lock (&hppa_lock);
80 {
81 if (!tdep_needs_initialization)
82 @@ -53,5 +53,5 @@ tdep_init (void)
83 }
84 out:
85 mutex_unlock (&hppa_lock);
86 - sigprocmask (SIG_SETMASK, &saved_mask, NULL);
87 + /* sigprocmask (SIG_SETMASK, &saved_mask, NULL); */
88 }
89 --- src/ia64/Gglobal.c.orig 2009-05-08 18:34:10.000000000 +0200
90 +++ src/ia64/Gglobal.c 2009-05-19 15:41:30.000000000 +0200
91 @@ -71,7 +71,7 @@ tdep_init (void)
92
93 sigfillset (&unwi_full_mask);
94
95 - sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask);
96 + /* sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask); */
97 mutex_lock (&unw.lock);
98 {
99 if (!tdep_needs_initialization)
100 @@ -121,5 +121,5 @@ tdep_init (void)
101 }
102 out:
103 mutex_unlock (&unw.lock);
104 - sigprocmask (SIG_SETMASK, &saved_mask, NULL);
105 + /* sigprocmask (SIG_SETMASK, &saved_mask, NULL); */
106 }
107 --- src/ia64/Gscript.c.orig 2009-05-08 18:34:10.000000000 +0200
108 +++ src/ia64/Gscript.c 2009-05-19 15:41:30.000000000 +0200
109 @@ -113,7 +113,7 @@ get_script_cache (unw_addr_space_t as, i
110 if (AO_test_and_set (&cache->busy) == AO_TS_SET)
111 return NULL;
112 # else
113 - sigprocmask (SIG_SETMASK, &unwi_full_mask, saved_maskp);
114 + /* sigprocmask (SIG_SETMASK, &unwi_full_mask, saved_maskp); */
115 if (likely (caching == UNW_CACHE_GLOBAL))
116 {
117 Debug (16, "%s: acquiring lock\n", __FUNCTION__);
118 @@ -145,7 +145,7 @@ put_script_cache (unw_addr_space_t as, s
119 # else
120 if (likely (as->caching_policy == UNW_CACHE_GLOBAL))
121 mutex_unlock (&cache->lock);
122 - sigprocmask (SIG_SETMASK, saved_maskp, NULL);
123 + /* sigprocmask (SIG_SETMASK, saved_maskp, NULL); */
124 # endif
125 #endif
126 }
127 --- src/ia64/Gtables.c.orig 2009-05-08 18:34:10.000000000 +0200
128 +++ src/ia64/Gtables.c 2009-05-19 15:41:30.000000000 +0200
129 @@ -622,9 +622,9 @@ validate_cache (unw_addr_space_t as)
130 intrmask_t saved_mask;
131 int ret;
132
133 - sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask);
134 + /* sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask); */
135 ret = dl_iterate_phdr (check_callback, as);
136 - sigprocmask (SIG_SETMASK, &saved_mask, NULL);
137 + /* sigprocmask (SIG_SETMASK, &saved_mask, NULL); */
138 return ret;
139 }
140
141 --- src/mips/Gglobal.c.orig 2009-05-08 18:34:10.000000000 +0200
142 +++ src/mips/Gglobal.c 2009-05-19 15:41:30.000000000 +0200
143 @@ -44,7 +44,7 @@ tdep_init (void)
144
145 sigfillset (&unwi_full_mask);
146
147 - sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask);
148 + /* sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask); */
149 mutex_lock (&mips_lock);
150 {
151 if (!tdep_needs_initialization)
152 @@ -62,5 +62,5 @@ tdep_init (void)
153 }
154 out:
155 mutex_unlock (&mips_lock);
156 - sigprocmask (SIG_SETMASK, &saved_mask, NULL);
157 + /* sigprocmask (SIG_SETMASK, &saved_mask, NULL); */
158 }
159 --- src/ppc32/Gglobal.c.orig 2009-05-08 18:34:10.000000000 +0200
160 +++ src/ppc32/Gglobal.c 2009-05-19 15:41:30.000000000 +0200
161 @@ -115,7 +115,7 @@ tdep_init (void)
162
163 sigfillset (&unwi_full_mask);
164
165 - sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask);
166 + /* sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask); */
167 mutex_lock (&ppc32_lock);
168 {
169 if (!tdep_needs_initialization)
170 @@ -133,5 +133,5 @@ tdep_init (void)
171 }
172 out:
173 mutex_unlock (&ppc32_lock);
174 - sigprocmask (SIG_SETMASK, &saved_mask, NULL);
175 + /* sigprocmask (SIG_SETMASK, &saved_mask, NULL); */
176 }
177 --- src/ppc64/Gglobal.c.orig 2009-05-08 18:34:10.000000000 +0200
178 +++ src/ppc64/Gglobal.c 2009-05-19 15:41:30.000000000 +0200
179 @@ -162,7 +162,7 @@ tdep_init (void)
180
181 sigfillset (&unwi_full_mask);
182
183 - sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask);
184 + /* sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask); */
185 mutex_lock (&ppc64_lock);
186 {
187 if (!tdep_needs_initialization)
188 @@ -180,5 +180,5 @@ tdep_init (void)
189 }
190 out:
191 mutex_unlock (&ppc64_lock);
192 - sigprocmask (SIG_SETMASK, &saved_mask, NULL);
193 + /* sigprocmask (SIG_SETMASK, &saved_mask, NULL); */
194 }
195 --- src/setjmp/setjmp_i.h.orig 2009-05-08 18:34:10.000000000 +0200
196 +++ src/setjmp/setjmp_i.h 2009-05-19 15:41:30.000000000 +0200
197 @@ -92,7 +92,7 @@ resume_restores_sigmask (unw_cursor_t *c
198 mp = &wp[JB_MASK];
199 else
200 {
201 - if (sigprocmask (SIG_BLOCK, NULL, &current_mask) < 0)
202 + if (0 && sigprocmask (SIG_BLOCK, NULL, &current_mask) < 0)
203 abort ();
204 mp = &current_mask;
205 }
206 --- src/setjmp/sigsetjmp.c.orig 2009-05-08 18:34:10.000000000 +0200
207 +++ src/setjmp/sigsetjmp.c 2009-05-19 15:41:30.000000000 +0200
208 @@ -44,7 +44,7 @@ sigsetjmp (sigjmp_buf env, int savemask)
209 /* Note: we assume here that "wp" has same or better alignment as
210 sigset_t. */
211 if (savemask
212 - && sigprocmask (SIG_BLOCK, NULL, (sigset_t *) (wp + JB_MASK)) < 0)
213 + && 0 && sigprocmask (SIG_BLOCK, NULL, (sigset_t *) (wp + JB_MASK)) < 0)
214 abort ();
215 return 0;
216 }
217 --- src/x86_64/Gglobal.c.orig 2009-05-08 18:34:10.000000000 +0200
218 +++ src/x86_64/Gglobal.c 2009-05-19 15:41:30.000000000 +0200
219 @@ -61,7 +61,7 @@ tdep_init (void)
220
221 sigfillset (&unwi_full_mask);
222
223 - sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask);
224 + /* sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask); */
225 mutex_lock (&x86_64_lock);
226 {
227 if (!tdep_needs_initialization)
228 @@ -79,5 +79,5 @@ tdep_init (void)
229 }
230 out:
231 mutex_unlock (&x86_64_lock);
232 - sigprocmask (SIG_SETMASK, &saved_mask, NULL);
233 + /* sigprocmask (SIG_SETMASK, &saved_mask, NULL); */
234 }
235 --- src/x86/Gglobal.c.orig 2009-05-08 18:34:10.000000000 +0200
236 +++ src/x86/Gglobal.c 2009-05-19 15:41:30.000000000 +0200
237 @@ -47,7 +47,7 @@ tdep_init (void)
238
239 sigfillset (&unwi_full_mask);
240
241 - sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask);
242 + /* sigprocmask (SIG_SETMASK, &unwi_full_mask, &saved_mask); */
243 mutex_lock (&x86_lock);
244 {
245 if (!tdep_needs_initialization)
246 @@ -65,5 +65,5 @@ tdep_init (void)
247 }
248 out:
249 mutex_unlock (&x86_lock);
250 - sigprocmask (SIG_SETMASK, &saved_mask, NULL);
251 + /* sigprocmask (SIG_SETMASK, &saved_mask, NULL); */
252 }
253 --- src/dwarf/Gfind_proc_info-lsb.c.orig 2009-05-19 15:41:30.000000000 +0200
254 +++ src/dwarf/Gfind_proc_info-lsb.c 2009-05-19 15:41:30.000000000 +0200
255 @@ -229,6 +229,9 @@ load_debug_frame (const char *file, char
256 }
257 #endif /* CONFIG_DEBUG_FRAME */
258
259 +#ifdef __linux
260 +static char exename[PATH_MAX];
261 +#endif
262
263 /* Locate the binary which originated the contents of address ADDR. Return
264 the name of the binary in *name (space is allocated by the caller)
265 @@ -238,6 +241,20 @@ static int
266 find_binary_for_address (unw_word_t ip, char *name, size_t name_size)
267 {
268 #ifdef __linux
269 + if (! exename[0])
270 + {
271 + struct stat sbuf;
272 + extern const char *program_invocation_name;
273 + memset (exename, 0, sizeof (exename));
274 + if (stat ("/proc/self/exe", &sbuf) == 0)
275 + readlink ("/proc/self/exe", exename, sizeof (exename)-1);
276 + else
277 + strncpy (exename, program_invocation_name, sizeof (exename)-1);
278 + }
279 + memset(name, 0, name_size);
280 + strncpy(name, exename, name_size-1);
281 +
282 +#elif 0 && __linux
283 struct map_iterator mi;
284 int found = 0;
285 int pid = getpid ();
286 --- include/dwarf.h.orig 2009-05-08 18:34:10.000000000 +0200
287 +++ include/dwarf.h 2009-05-19 15:43:54.000000000 +0200
288 @@ -247,6 +247,7 @@ typedef struct dwarf_reg_state
289 unsigned short lru_chain; /* used for least-recently-used chain */
290 unsigned short coll_chain; /* used for hash collisions */
291 unsigned short hint; /* hint for next rs to try (or -1) */
292 + int bogus; /* negative error code for bogus negative (failed) cache match, zero otherwise */
293 }
294 dwarf_reg_state_t;
295
296 --- src/dwarf/Gparser.c.orig 2009-05-19 15:41:30.000000000 +0200
297 +++ src/dwarf/Gparser.c 2009-05-19 15:44:05.000000000 +0200
298 @@ -467,6 +467,7 @@ flush_rs_cache (struct dwarf_rs_cache *c
299 cache->buckets[i].lru_chain = (i - 1);
300 cache->buckets[i].coll_chain = -1;
301 cache->buckets[i].ip = 0;
302 + cache->buckets[i].bogus = 0;
303 }
304 for (i = 0; i<DWARF_UNW_HASH_SIZE; ++i)
305 cache->hash[i] = -1;
306 @@ -577,7 +578,7 @@ rs_lookup (struct dwarf_rs_cache *cache,
307 }
308
309 static inline dwarf_reg_state_t *
310 -rs_new (struct dwarf_rs_cache *cache, struct dwarf_cursor * c)
311 +rs_new (struct dwarf_rs_cache *cache, struct dwarf_cursor * c, int bogus)
312 {
313 dwarf_reg_state_t *rs, *prev, *tmp;
314 unw_hash_index_t index;
315 @@ -624,6 +625,7 @@ rs_new (struct dwarf_rs_cache *cache, st
316 rs->hint = 0;
317 rs->ip = c->ip;
318 rs->ret_addr_column = c->ret_addr_column;
319 + rs->bogus = bogus;
320
321 return rs;
322 }
323 @@ -818,20 +820,31 @@ dwarf_find_save_locs (struct dwarf_curso
324
325 if (rs)
326 {
327 + if (rs->bogus)
328 + {
329 + ret = rs->bogus;
330 + goto out;
331 + }
332 c->ret_addr_column = rs->ret_addr_column;
333 goto apply;
334 }
335
336 if ((ret = fetch_proc_info (c, c->ip, 1)) < 0)
337 - goto out;
338 + {
339 + rs_new(cache, c, ret);
340 + goto out;
341 + }
342
343 if ((ret = create_state_record_for (c, &sr, c->ip)) < 0)
344 - goto out;
345 + {
346 + rs_new(cache, c, ret);
347 + goto out;
348 + }
349
350 rs1 = &sr.rs_current;
351 if (rs1)
352 {
353 - rs = rs_new (cache, c);
354 + rs = rs_new (cache, c, 0);
355 memcpy(rs, rs1, offsetof(struct dwarf_reg_state, ip));
356 if (!rs)
357 {
358 --- include/dwarf.h.orig 2009-05-19 17:12:21.000000000 +0200
359 +++ include/dwarf.h 2009-05-19 17:12:27.000000000 +0200
360 @@ -303,7 +303,7 @@
361 }
362 dwarf_cursor_t;
363
364 -#define DWARF_LOG_UNW_CACHE_SIZE 7
365 +#define DWARF_LOG_UNW_CACHE_SIZE 10
366 #define DWARF_UNW_CACHE_SIZE (1 << DWARF_LOG_UNW_CACHE_SIZE)
367
368 #define DWARF_LOG_UNW_HASH_SIZE (DWARF_LOG_UNW_CACHE_SIZE + 1)