38 #ifndef CLIENT_LINUX_MINIDUMP_WRITER_LINUX_DUMPER_H_ 39 #define CLIENT_LINUX_MINIDUMP_WRITER_LINUX_DUMPER_H_ 42 #include <linux/limits.h> 44 #include <sys/types.h> 52 #if defined(__i386) || defined(__x86_64) 53 typedef typeof(((
struct user*) 0)->u_debugreg[0]) debugreg_t;
57 #if defined(__i386) || defined(__ARM_EABI__) 58 typedef Elf32_auxv_t elf_aux_entry;
59 #elif defined(__x86_64) 60 typedef Elf64_auxv_t elf_aux_entry;
63 typedef typeof(((elf_aux_entry*) 0)->a_un.a_val) elf_aux_val_t;
78 #if defined(__i386) || defined(__x86_64) 79 user_regs_struct regs;
80 user_fpregs_struct fpregs;
81 static const unsigned kNumDebugRegisters = 8;
84 user_fpxregs_struct fpxregs;
85 #endif // defined(__i386) 87 #elif defined(__ARM_EABI__) 89 struct user_regs regs;
90 struct user_fpregs fpregs;
113 virtual bool IsPostMortem()
const = 0;
116 virtual bool ThreadsSuspend() = 0;
117 virtual bool ThreadsResume() = 0;
121 virtual bool GetThreadInfoByIndex(
size_t index,
ThreadInfo* info) = 0;
126 const MappingInfo* FindMapping(
const void* address)
const;
133 bool GetStackInfo(
const void** stack,
size_t* stack_len, uintptr_t stack_top);
139 virtual void CopyFromProcess(
void* dest, pid_t child,
const void* src,
146 virtual bool BuildProcPath(
char* path, pid_t pid,
const char* node)
const = 0;
150 bool ElfFileIdentifierForMapping(
const MappingInfo& mapping,
152 unsigned int mapping_id,
153 uint8_t identifier[
sizeof(
MDGUID)]);
157 crash_address_ = crash_address;
169 virtual bool EnumerateMappings();
171 virtual bool EnumerateThreads() = 0;
182 bool HandleDeletedFileInMapping(
char* path)
const;
210 #endif // CLIENT_LINUX_HANDLER_LINUX_DUMPER_H_
wasteful_vector< MappingInfo * > mappings_
const wasteful_vector< MappingInfo * > & mappings()
PageAllocator * allocator()
const char kLinuxGateLibraryName[]
const wasteful_vector< pid_t > & threads()
typedef typeof(((elf_aux_entry *) 0) ->a_un.a_val) elf_aux_val_t
void set_crash_address(uintptr_t crash_address)
const wasteful_vector< elf_aux_val_t > & auxv()
uintptr_t crash_address() const
void set_crash_thread(pid_t crash_thread)
wasteful_vector< elf_aux_val_t > auxv_
void set_crash_signal(int crash_signal)
wasteful_vector< pid_t > threads_
pid_t crash_thread() const