|
@@ -49,6 +49,7 @@ public:
|
|
|
bool is_profiling() const { return m_is_profiling; }
|
|
|
bool is_in_region_of_interest() const { return m_is_in_region_of_interest; }
|
|
|
size_t profile_instruction_interval() const { return m_profile_instruction_interval; }
|
|
|
+ bool is_memory_auditing_suppressed() const { return m_is_memory_auditing_suppressed; }
|
|
|
|
|
|
bool load_elf();
|
|
|
void dump_backtrace();
|
|
@@ -63,10 +64,8 @@ public:
|
|
|
|
|
|
MallocTracer* malloc_tracer() { return m_malloc_tracer; }
|
|
|
|
|
|
- bool is_in_malloc_or_free() const;
|
|
|
bool is_in_loader_code() const;
|
|
|
bool is_in_libsystem() const;
|
|
|
- bool is_in_libc() const;
|
|
|
|
|
|
void pause()
|
|
|
{
|
|
@@ -231,8 +230,6 @@ private:
|
|
|
int virt$msyscall(FlatPtr);
|
|
|
int virt$futex(FlatPtr);
|
|
|
|
|
|
- bool find_malloc_symbols(MmapRegion const& libc_text);
|
|
|
-
|
|
|
void dispatch_one_pending_signal();
|
|
|
MmapRegion const* find_text_region(FlatPtr address);
|
|
|
MmapRegion const* load_library_from_address(FlatPtr address);
|
|
@@ -249,19 +246,6 @@ private:
|
|
|
FlatPtr m_watched_addr { 0 };
|
|
|
RefPtr<Line::Editor> m_editor;
|
|
|
|
|
|
- FlatPtr m_malloc_symbol_start { 0 };
|
|
|
- FlatPtr m_malloc_symbol_end { 0 };
|
|
|
- FlatPtr m_realloc_symbol_start { 0 };
|
|
|
- FlatPtr m_realloc_symbol_end { 0 };
|
|
|
- FlatPtr m_calloc_symbol_start { 0 };
|
|
|
- FlatPtr m_calloc_symbol_end { 0 };
|
|
|
- FlatPtr m_free_symbol_start { 0 };
|
|
|
- FlatPtr m_free_symbol_end { 0 };
|
|
|
- FlatPtr m_malloc_size_symbol_start { 0 };
|
|
|
- FlatPtr m_malloc_size_symbol_end { 0 };
|
|
|
-
|
|
|
- FlatPtr m_libc_start { 0 };
|
|
|
- FlatPtr m_libc_end { 0 };
|
|
|
FlatPtr m_libsystem_start { 0 };
|
|
|
FlatPtr m_libsystem_end { 0 };
|
|
|
|
|
@@ -293,29 +277,14 @@ private:
|
|
|
bool m_is_profiling { false };
|
|
|
size_t m_profile_instruction_interval { 0 };
|
|
|
bool m_is_in_region_of_interest { false };
|
|
|
+ bool m_is_memory_auditing_suppressed { false };
|
|
|
};
|
|
|
|
|
|
-ALWAYS_INLINE bool Emulator::is_in_libc() const
|
|
|
-{
|
|
|
- return m_cpu.base_eip() >= m_libc_start && m_cpu.base_eip() < m_libc_end;
|
|
|
-}
|
|
|
-
|
|
|
ALWAYS_INLINE bool Emulator::is_in_libsystem() const
|
|
|
{
|
|
|
return m_cpu.base_eip() >= m_libsystem_start && m_cpu.base_eip() < m_libsystem_end;
|
|
|
}
|
|
|
|
|
|
-ALWAYS_INLINE bool Emulator::is_in_malloc_or_free() const
|
|
|
-{
|
|
|
- if (!is_in_libc())
|
|
|
- return false;
|
|
|
- return (m_cpu.base_eip() >= m_malloc_symbol_start && m_cpu.base_eip() < m_malloc_symbol_end)
|
|
|
- || (m_cpu.base_eip() >= m_free_symbol_start && m_cpu.base_eip() < m_free_symbol_end)
|
|
|
- || (m_cpu.base_eip() >= m_realloc_symbol_start && m_cpu.base_eip() < m_realloc_symbol_end)
|
|
|
- || (m_cpu.base_eip() >= m_calloc_symbol_start && m_cpu.base_eip() < m_calloc_symbol_end)
|
|
|
- || (m_cpu.base_eip() >= m_malloc_size_symbol_start && m_cpu.base_eip() < m_malloc_size_symbol_end);
|
|
|
-}
|
|
|
-
|
|
|
ALWAYS_INLINE bool Emulator::is_in_loader_code() const
|
|
|
{
|
|
|
if (!m_loader_text_base.has_value() || !m_loader_text_size.has_value())
|