eh_elf: fix get_mmap
This commit is contained in:
parent
d817dbf9d9
commit
c6ae72f381
1 changed files with 11 additions and 8 deletions
|
@ -473,10 +473,11 @@ get_proc_name(unw_addr_space_t __maybe_unused as,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
get_mmap(unw_mmap_entry_t* entries, size_t* count, void* arg) {
|
get_mmap(unw_mmap_entry_t** entries, size_t* count, void* arg) {
|
||||||
struct unwind_info* unw_info = arg;
|
struct unwind_info* unw_info = arg;
|
||||||
struct map_groups* mgroups = unw_info->thread->mg;
|
struct map_groups* mgroups = unw_info->thread->mg;
|
||||||
int id;
|
int id;
|
||||||
|
unw_mmap_entry_t* alloc_entries = NULL;
|
||||||
|
|
||||||
// == Count entries ==
|
// == Count entries ==
|
||||||
*count = 0;
|
*count = 0;
|
||||||
|
@ -488,8 +489,9 @@ get_mmap(unw_mmap_entry_t* entries, size_t* count, void* arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// == Allocate ==
|
// == Allocate ==
|
||||||
entries = (unw_mmap_entry_t*)
|
alloc_entries = (unw_mmap_entry_t*)
|
||||||
malloc(sizeof(unw_mmap_entry_t) * (*count)); // Will be free'd
|
malloc(sizeof(unw_mmap_entry_t) * (*count)); // Will be free'd by user
|
||||||
|
*entries = alloc_entries;
|
||||||
|
|
||||||
// == Fill entries ==
|
// == Fill entries ==
|
||||||
id = 0;
|
id = 0;
|
||||||
|
@ -497,11 +499,12 @@ get_mmap(unw_mmap_entry_t* entries, size_t* count, void* arg) {
|
||||||
map;
|
map;
|
||||||
map = map_groups__next(map), ++id)
|
map = map_groups__next(map), ++id)
|
||||||
{
|
{
|
||||||
entries[id].beg_ip = map->start;
|
alloc_entries[id].beg_ip = map->start;
|
||||||
entries[id].end_ip = map->end;
|
alloc_entries[id].end_ip = map->end;
|
||||||
entries[id].offset = map->start - map->map_ip(map, map->start);
|
alloc_entries[id].offset = map->start - map->map_ip(map, map->start);
|
||||||
entries[id].object_name = malloc(strlen(map->dso->long_name) + 1);
|
alloc_entries[id].object_name =
|
||||||
strcpy(entries[id].object_name, map->dso->long_name);
|
malloc(strlen(map->dso->long_name) + 1);
|
||||||
|
strcpy(alloc_entries[id].object_name, map->dso->long_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue