364 |
} |
} |
365 |
|
|
366 |
|
|
367 |
#define MAX_UNEXEC_REGIONS 30 |
#define MAX_UNEXEC_REGIONS 200 |
368 |
|
|
369 |
int num_unexec_regions; |
int num_unexec_regions; |
370 |
vm_range_t unexec_regions[MAX_UNEXEC_REGIONS]; |
vm_range_t unexec_regions[MAX_UNEXEC_REGIONS]; |
403 |
unexec_regions_recorder); |
unexec_regions_recorder); |
404 |
} |
} |
405 |
|
|
406 |
|
static int |
407 |
|
unexec_regions_sort_compare (const void *a, const void *b) |
408 |
|
{ |
409 |
|
vm_address_t aa = ((vm_range_t *) a)->address; |
410 |
|
vm_address_t bb = ((vm_range_t *) b)->address; |
411 |
|
|
412 |
|
if (aa < bb) |
413 |
|
return -1; |
414 |
|
else if (aa > bb) |
415 |
|
return 1; |
416 |
|
else |
417 |
|
return 0; |
418 |
|
} |
419 |
|
|
420 |
|
static void |
421 |
|
unexec_regions_merge () |
422 |
|
{ |
423 |
|
int i, n; |
424 |
|
vm_range_t r; |
425 |
|
|
426 |
|
qsort (unexec_regions, num_unexec_regions, sizeof (unexec_regions[0]), |
427 |
|
&unexec_regions_sort_compare); |
428 |
|
n = 0; |
429 |
|
r = unexec_regions[0]; |
430 |
|
for (i = 1; i < num_unexec_regions; i++) |
431 |
|
{ |
432 |
|
if (r.address + r.size == unexec_regions[i].address) |
433 |
|
{ |
434 |
|
r.size += unexec_regions[i].size; |
435 |
|
} |
436 |
|
else |
437 |
|
{ |
438 |
|
unexec_regions[n++] = r; |
439 |
|
r = unexec_regions[i]; |
440 |
|
} |
441 |
|
} |
442 |
|
unexec_regions[n++] = r; |
443 |
|
num_unexec_regions = n; |
444 |
|
} |
445 |
|
|
446 |
|
|
447 |
/* More informational messages routines. */ |
/* More informational messages routines. */ |
448 |
|
|
903 |
read_load_commands (); |
read_load_commands (); |
904 |
|
|
905 |
find_emacs_zone_regions (); |
find_emacs_zone_regions (); |
906 |
|
unexec_regions_merge (); |
907 |
|
|
908 |
in_dumped_exec = 1; |
in_dumped_exec = 1; |
909 |
|
|
976 |
else |
else |
977 |
malloc_zone_free (emacs_zone, ptr); |
malloc_zone_free (emacs_zone, ptr); |
978 |
} |
} |
979 |
|
|
980 |
|
/* arch-tag: 1a784f7b-a184-4c4f-9544-da8619593d72 |
981 |
|
(do not change this comment) */ |