[docs]def__init__(self,loader,arch,**kwargs):# pylint: disable=unused-argumentself.loader=loaderself.arch=archself.threads=[ELFCoreThread(loader,arch,threadinfo)forthreadinfoinloader.main_object._threads]ifarch.namenotin("AMD64","X86"):log.warning("TLS for coredumps won't be right for this arch - idk how to do it")self.modules=[]# ???
[docs]defnew_thread(self,insert=False):# pylint: disable=no-self-useraiseTypeError("Cannot create new threads from a core file... for now")
[docs]def__init__(self,loader,arch:archinfo.Arch,threadinfo):self.loader=loaderself.arch=archself._threadinfo=threadinfoifarch.name=="AMD64":self.thread_pointer=threadinfo["registers"]["fs_base"]elifarch.name=="X86":gs=threadinfo["registers"]["gs"]ifgs==0:# I have no idea why this happensgs=next(iter(threadinfo["segments"].keys()))<<3self.thread_pointer=threadinfo["segments"][gs>>3][0]else:self.thread_pointer=0self.user_thread_pointer=self.thread_pointer+arch.elf_tls.tp_offset