Cygwin: Drop excluded regions list from dumper
Drop excluded regions, now it's always empty
This commit is contained in:
parent
0302c69164
commit
44103c0621
@ -83,7 +83,6 @@ dumper::dumper (DWORD pid, DWORD tid, const char *file_name)
|
|||||||
this->pid = pid;
|
this->pid = pid;
|
||||||
this->tid = tid;
|
this->tid = tid;
|
||||||
core_bfd = NULL;
|
core_bfd = NULL;
|
||||||
excl_list = new exclusion (20);
|
|
||||||
|
|
||||||
list = last = NULL;
|
list = last = NULL;
|
||||||
|
|
||||||
@ -125,19 +124,16 @@ dumper::close ()
|
|||||||
{
|
{
|
||||||
if (core_bfd)
|
if (core_bfd)
|
||||||
bfd_close (core_bfd);
|
bfd_close (core_bfd);
|
||||||
if (excl_list)
|
|
||||||
delete excl_list;
|
|
||||||
if (hProcess)
|
if (hProcess)
|
||||||
CloseHandle (hProcess);
|
CloseHandle (hProcess);
|
||||||
core_bfd = NULL;
|
core_bfd = NULL;
|
||||||
hProcess = NULL;
|
hProcess = NULL;
|
||||||
excl_list = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
dumper::sane ()
|
dumper::sane ()
|
||||||
{
|
{
|
||||||
if (hProcess == NULL || core_bfd == NULL || excl_list == NULL)
|
if (hProcess == NULL || core_bfd == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -226,42 +222,6 @@ dumper::add_mem_region (LPBYTE base, SIZE_T size)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* split_add_mem_region scans list of regions to be excluded from dumping process
|
|
||||||
(excl_list) and removes all "excluded" parts from given region. */
|
|
||||||
int
|
|
||||||
dumper::split_add_mem_region (LPBYTE base, SIZE_T size)
|
|
||||||
{
|
|
||||||
if (!sane ())
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (base == NULL || size == 0)
|
|
||||||
return 1; // just ignore empty regions
|
|
||||||
|
|
||||||
LPBYTE last_base = base;
|
|
||||||
|
|
||||||
for (process_mem_region * p = excl_list->region;
|
|
||||||
p < excl_list->region + excl_list->last;
|
|
||||||
p++)
|
|
||||||
{
|
|
||||||
if (p->base >= base + size || p->base + p->size <= base)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (p->base <= base)
|
|
||||||
{
|
|
||||||
last_base = p->base + p->size;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
add_mem_region (last_base, p->base - last_base);
|
|
||||||
last_base = p->base + p->size;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (last_base < base + size)
|
|
||||||
add_mem_region (last_base, base + size - last_base);
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
dumper::add_module (LPVOID base_address)
|
dumper::add_module (LPVOID base_address)
|
||||||
{
|
{
|
||||||
@ -413,14 +373,14 @@ dumper::collect_memory_sections ()
|
|||||||
last_size += mbi.RegionSize;
|
last_size += mbi.RegionSize;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
split_add_mem_region (last_base, last_size);
|
add_mem_region (last_base, last_size);
|
||||||
last_base = (LPBYTE) mbi.BaseAddress;
|
last_base = (LPBYTE) mbi.BaseAddress;
|
||||||
last_size = mbi.RegionSize;
|
last_size = mbi.RegionSize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
split_add_mem_region (last_base, last_size);
|
add_mem_region (last_base, last_size);
|
||||||
last_base = NULL;
|
last_base = NULL;
|
||||||
last_size = 0;
|
last_size = 0;
|
||||||
}
|
}
|
||||||
@ -429,7 +389,7 @@ dumper::collect_memory_sections ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* dump last sections, if any */
|
/* dump last sections, if any */
|
||||||
split_add_mem_region (last_base, last_size);
|
add_mem_region (last_base, last_size);
|
||||||
return 1;
|
return 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -62,22 +62,6 @@ typedef struct _process_entity
|
|||||||
struct _process_entity* next;
|
struct _process_entity* next;
|
||||||
} process_entity;
|
} process_entity;
|
||||||
|
|
||||||
class exclusion
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
size_t last;
|
|
||||||
size_t size;
|
|
||||||
size_t step;
|
|
||||||
process_mem_region* region;
|
|
||||||
|
|
||||||
exclusion ( size_t step ) { last = size = 0;
|
|
||||||
this->step = step;
|
|
||||||
region = NULL; }
|
|
||||||
~exclusion () { free ( region ); }
|
|
||||||
int add ( LPBYTE mem_base, SIZE_T mem_size );
|
|
||||||
int sort_and_check ();
|
|
||||||
};
|
|
||||||
|
|
||||||
#define PAGE_BUFFER_SIZE 4096
|
#define PAGE_BUFFER_SIZE 4096
|
||||||
|
|
||||||
class dumper
|
class dumper
|
||||||
@ -87,7 +71,6 @@ class dumper
|
|||||||
HANDLE hProcess;
|
HANDLE hProcess;
|
||||||
process_entity* list;
|
process_entity* list;
|
||||||
process_entity* last;
|
process_entity* last;
|
||||||
exclusion* excl_list;
|
|
||||||
|
|
||||||
char* file_name;
|
char* file_name;
|
||||||
bfd* core_bfd;
|
bfd* core_bfd;
|
||||||
|
Loading…
Reference in New Issue
Block a user