@@ -468,6 +468,18 @@ <h1>Source code for libdebug.architectures.amd64.amd64_ptrace_register_holder</h
468468 < span class ="s2 "> "rip"</ span > < span class ="p "> ,</ span >
469469< span class ="p "> ]</ span >
470470
471+ < span class ="n "> AMD64_SPECIAL_REGS</ span > < span class ="o "> =</ span > < span class ="p "> [</ span >
472+ < span class ="s2 "> "eflags"</ span > < span class ="p "> ,</ span >
473+ < span class ="s2 "> "cs"</ span > < span class ="p "> ,</ span >
474+ < span class ="s2 "> "ss"</ span > < span class ="p "> ,</ span >
475+ < span class ="s2 "> "ds"</ span > < span class ="p "> ,</ span >
476+ < span class ="s2 "> "es"</ span > < span class ="p "> ,</ span >
477+ < span class ="s2 "> "fs"</ span > < span class ="p "> ,</ span >
478+ < span class ="s2 "> "gs"</ span > < span class ="p "> ,</ span >
479+ < span class ="s2 "> "fs_base"</ span > < span class ="p "> ,</ span >
480+ < span class ="s2 "> "gs_base"</ span > < span class ="p "> ,</ span >
481+ < span class ="p "> ]</ span >
482+
471483
472484< span class ="k "> def</ span > < span class ="nf "> _get_property_64</ span > < span class ="p "> (</ span > < span class ="n "> name</ span > < span class ="p "> :</ span > < span class ="nb "> str</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="nb "> property</ span > < span class ="p "> :</ span >
473485 < span class ="k "> def</ span > < span class ="nf "> getter</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> Amd64Registers</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="nb "> int</ span > < span class ="p "> :</ span >
@@ -722,6 +734,13 @@ <h1>Source code for libdebug.architectures.amd64.amd64_ptrace_register_holder</h
722734 < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _vector_fp_registers</ span > </ div >
723735
724736
737+ < div class ="viewcode-block " id ="Amd64PtraceRegisterHolder.provide_special_regs ">
738+ < a class ="viewcode-back " href ="../../../../libdebug.architectures.amd64.html#libdebug.architectures.amd64.amd64_ptrace_register_holder.Amd64PtraceRegisterHolder.provide_special_regs "> [docs]</ a >
739+ < span class ="k "> def</ span > < span class ="nf "> provide_special_regs</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> Amd64PtraceRegisterHolder</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="nb "> list</ span > < span class ="p "> [</ span > < span class ="nb "> str</ span > < span class ="p "> ]:</ span >
740+ < span class ="w "> </ span > < span class ="sd "> """Provide the list of special registers, which are not intended for general-purpose use."""</ span >
741+ < span class ="k "> return</ span > < span class ="n "> AMD64_SPECIAL_REGS</ span > </ div >
742+
743+
725744< div class ="viewcode-block " id ="Amd64PtraceRegisterHolder.apply_on_regs ">
726745< a class ="viewcode-back " href ="../../../../libdebug.architectures.amd64.html#libdebug.architectures.amd64.amd64_ptrace_register_holder.Amd64PtraceRegisterHolder.apply_on_regs "> [docs]</ a >
727746 < span class ="k "> def</ span > < span class ="nf "> apply_on_regs</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> Amd64PtraceRegisterHolder</ span > < span class ="p "> ,</ span > < span class ="n "> target</ span > < span class ="p "> :</ span > < span class ="n "> Amd64Registers</ span > < span class ="p "> ,</ span > < span class ="n "> target_class</ span > < span class ="p "> :</ span > < span class ="nb "> type</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
@@ -771,6 +790,9 @@ <h1>Source code for libdebug.architectures.amd64.amd64_ptrace_register_holder</h
771790 < span class ="nb "> setattr</ span > < span class ="p "> (</ span > < span class ="n "> target_class</ span > < span class ="p "> ,</ span > < span class ="n "> name_16</ span > < span class ="p "> ,</ span > < span class ="n "> _get_property_16</ span > < span class ="p "> (</ span > < span class ="n "> name_64</ span > < span class ="p "> ))</ span >
772791 < span class ="nb "> setattr</ span > < span class ="p "> (</ span > < span class ="n "> target_class</ span > < span class ="p "> ,</ span > < span class ="n "> name_8l</ span > < span class ="p "> ,</ span > < span class ="n "> _get_property_8l</ span > < span class ="p "> (</ span > < span class ="n "> name_64</ span > < span class ="p "> ))</ span >
773792
793+ < span class ="k "> for</ span > < span class ="n "> name</ span > < span class ="ow "> in</ span > < span class ="n "> AMD64_SPECIAL_REGS</ span > < span class ="p "> :</ span >
794+ < span class ="nb "> setattr</ span > < span class ="p "> (</ span > < span class ="n "> target_class</ span > < span class ="p "> ,</ span > < span class ="n "> name</ span > < span class ="p "> ,</ span > < span class ="n "> _get_property_64</ span > < span class ="p "> (</ span > < span class ="n "> name</ span > < span class ="p "> ))</ span >
795+
774796 < span class ="c1 "> # setup special registers</ span >
775797 < span class ="n "> target_class</ span > < span class ="o "> .</ span > < span class ="n "> rip</ span > < span class ="o "> =</ span > < span class ="n "> _get_property_64</ span > < span class ="p "> (</ span > < span class ="s2 "> "rip"</ span > < span class ="p "> )</ span >
776798
0 commit comments