426426 < h1 > Source code for libdebug.architectures.aarch64.aarch64_ptrace_register_holder</ h1 > < div class ="highlight "> < pre >
427427< span > </ span > < span class ="c1 "> #</ span >
428428< span class ="c1 "> # This file is part of libdebug Python library (https://github.com/libdebug/libdebug).</ span >
429- < span class ="c1 "> # Copyright (c) 2024 Roberto Alessandro Bertolini. All rights reserved.</ span >
429+ < span class ="c1 "> # Copyright (c) 2024 Roberto Alessandro Bertolini, Gabriele Digregorio . All rights reserved.</ span >
430430< span class ="c1 "> # Licensed under the MIT license. See LICENSE file in the project root for details.</ span >
431431< span class ="c1 "> #</ span >
432432
@@ -442,7 +442,7 @@ <h1>Source code for libdebug.architectures.aarch64.aarch64_ptrace_register_holde
442442< span class ="k "> if</ span > < span class ="n "> TYPE_CHECKING</ span > < span class ="p "> :</ span >
443443 < span class ="kn "> from</ span > < span class ="nn "> libdebug.state.thread_context</ span > < span class ="kn "> import</ span > < span class ="n "> ThreadContext</ span >
444444
445- < span class ="n "> AARCH64_GP_REGS </ span > < span class ="o "> =</ span > < span class ="p "> [</ span > < span class ="s2 "> "x"</ span > < span class ="p "> ,</ span > < span class ="s2 "> "w "</ span > < span class ="p "> ]</ span >
445+ < span class ="n "> AARCH64_REGS </ span > < span class ="o "> =</ span > < span class ="p "> [</ span > < span class ="sa " > f </ span > < span class =" s2 "> "x</ span > < span class =" si " > { </ span > < span class =" n " > i </ span > < span class =" si " > } </ span > < span class =" s2 " > "</ span > < span class ="k " > for </ span > < span class =" n " > i </ span > < span class =" ow " > in </ span > < span class =" nb " > range </ span > < span class =" p "> ( </ span > < span class =" mi " > 31 </ span > < span class =" p " > )] </ span > < span class =" o " > + </ span > < span class =" p " > [ </ span > < span class =" s2 " > "sp" </ span > < span class =" p " > ,</ span > < span class ="s2 "> "xzr" </ span > < span class =" p " > , </ span > < span class =" s2 " > "pc "</ span > < span class ="p "> ]</ span >
446446
447447
448448< 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 >
@@ -587,6 +587,20 @@ <h1>Source code for libdebug.architectures.aarch64.aarch64_ptrace_register_holde
587587 < span class ="k "> return</ span > < span class ="n "> Aarch64Registers</ span > </ div >
588588
589589
590+ < div class ="viewcode-block " id ="Aarch64PtraceRegisterHolder.provide_regs ">
591+ < a class ="viewcode-back " href ="../../../../libdebug.architectures.aarch64.html#libdebug.architectures.aarch64.aarch64_ptrace_register_holder.Aarch64PtraceRegisterHolder.provide_regs "> [docs]</ a >
592+ < span class ="k "> def</ span > < span class ="nf "> provide_regs</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> Aarch64PtraceRegisterHolder</ 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 >
593+ < span class ="w "> </ span > < span class ="sd "> """Provide the list of registers, excluding the vector and fp registers."""</ span >
594+ < span class ="k "> return</ span > < span class ="n "> AARCH64_REGS</ span > </ div >
595+
596+
597+ < div class ="viewcode-block " id ="Aarch64PtraceRegisterHolder.provide_vector_fp_regs ">
598+ < a class ="viewcode-back " href ="../../../../libdebug.architectures.aarch64.html#libdebug.architectures.aarch64.aarch64_ptrace_register_holder.Aarch64PtraceRegisterHolder.provide_vector_fp_regs "> [docs]</ a >
599+ < span class ="k "> def</ span > < span class ="nf "> provide_vector_fp_regs</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> Aarch64PtraceRegisterHolder</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="nb "> list</ span > < span class ="p "> [</ span > < span class ="nb "> tuple</ span > < span class ="p "> [</ span > < span class ="nb "> str</ span > < span class ="p "> ]]:</ span >
600+ < span class ="w "> </ span > < span class ="sd "> """Provide the list of vector and floating point registers."""</ span >
601+ < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _vector_fp_registers</ span > </ div >
602+
603+
590604< div class ="viewcode-block " id ="Aarch64PtraceRegisterHolder.apply_on_regs ">
591605< a class ="viewcode-back " href ="../../../../libdebug.architectures.aarch64.html#libdebug.architectures.aarch64.aarch64_ptrace_register_holder.Aarch64PtraceRegisterHolder.apply_on_regs "> [docs]</ a >
592606 < 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 "> Aarch64PtraceRegisterHolder</ span > < span class ="p "> ,</ span > < span class ="n "> target</ span > < span class ="p "> :</ span > < span class ="n "> Aarch64Registers</ 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 >
@@ -597,6 +611,8 @@ <h1>Source code for libdebug.architectures.aarch64.aarch64_ptrace_register_holde
597611 < span class ="k "> if</ span > < span class ="nb "> hasattr</ span > < span class ="p "> (</ span > < span class ="n "> target_class</ span > < span class ="p "> ,</ span > < span class ="s2 "> "w0"</ span > < span class ="p "> ):</ span >
598612 < span class ="k "> return</ span >
599613
614+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _vector_fp_registers</ span > < span class ="o "> =</ span > < span class ="p "> []</ span >
615+
600616 < span class ="k "> for</ span > < span class ="n "> i</ span > < span class ="ow "> in</ span > < span class ="nb "> range</ span > < span class ="p "> (</ span > < span class ="mi "> 31</ span > < span class ="p "> ):</ span >
601617 < span class ="n "> name_64</ span > < span class ="o "> =</ span > < span class ="sa "> f</ span > < span class ="s2 "> "x</ span > < span class ="si "> {</ span > < span class ="n "> i</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span >
602618 < span class ="n "> name_32</ span > < span class ="o "> =</ span > < span class ="sa "> f</ span > < span class ="s2 "> "w</ span > < span class ="si "> {</ span > < span class ="n "> i</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span >
@@ -618,14 +634,17 @@ <h1>Source code for libdebug.architectures.aarch64.aarch64_ptrace_register_holde
618634 < span class ="nb "> setattr</ span > < span class ="p "> (</ span > < span class ="n "> target_class</ span > < span class ="p "> ,</ span > < span class ="n "> name_32</ span > < span class ="p "> ,</ span > < span class ="n "> _get_property_fp_32</ span > < span class ="p "> (</ span > < span class ="n "> name_32</ span > < span class ="p "> ,</ span > < span class ="n "> i</ span > < span class ="p "> ))</ span >
619635 < 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_fp_16</ span > < span class ="p "> (</ span > < span class ="n "> name_16</ span > < span class ="p "> ,</ span > < span class ="n "> i</ span > < span class ="p "> ))</ span >
620636 < span class ="nb "> setattr</ span > < span class ="p "> (</ span > < span class ="n "> target_class</ span > < span class ="p "> ,</ span > < span class ="n "> name_8</ span > < span class ="p "> ,</ span > < span class ="n "> _get_property_fp_8</ span > < span class ="p "> (</ span > < span class ="n "> name_8</ span > < span class ="p "> ,</ span > < span class ="n "> i</ span > < span class ="p "> ))</ span >
637+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _vector_fp_registers</ span > < span class ="o "> .</ span > < span class ="n "> append</ span > < span class ="p "> ((</ span > < span class ="n "> name_v</ span > < span class ="p "> ,</ span > < span class ="n "> name_128</ span > < span class ="p "> ,</ span > < span class ="n "> name_64</ span > < span class ="p "> ,</ span > < span class ="n "> name_32</ span > < span class ="p "> ,</ span > < span class ="n "> name_16</ span > < span class ="p "> ,</ span > < span class ="n "> name_8</ span > < span class ="p "> ))</ span >
621638
622639 < span class ="c1 "> # setup special aarch64 registers</ span >
623640 < span class ="n "> target_class</ span > < span class ="o "> .</ span > < span class ="n "> pc</ span > < span class ="o "> =</ span > < span class ="n "> _get_property_64</ span > < span class ="p "> (</ span > < span class ="s2 "> "pc"</ span > < span class ="p "> )</ span >
624641 < span class ="n "> target_class</ span > < span class ="o "> .</ span > < span class ="n "> sp</ span > < span class ="o "> =</ span > < span class ="n "> _get_property_64</ span > < span class ="p "> (</ span > < span class ="s2 "> "sp"</ span > < span class ="p "> )</ span >
625642 < span class ="n "> target_class</ span > < span class ="o "> .</ span > < span class ="n "> lr</ span > < span class ="o "> =</ span > < span class ="n "> _get_property_64</ span > < span class ="p "> (</ span > < span class ="s2 "> "x30"</ span > < span class ="p "> )</ span >
626643 < span class ="n "> target_class</ span > < span class ="o "> .</ span > < span class ="n "> fp</ span > < span class ="o "> =</ span > < span class ="n "> _get_property_64</ span > < span class ="p "> (</ span > < span class ="s2 "> "x29"</ span > < span class ="p "> )</ span >
627644 < span class ="n "> target_class</ span > < span class ="o "> .</ span > < span class ="n "> xzr</ span > < span class ="o "> =</ span > < span class ="n "> _get_property_zr</ span > < span class ="p "> (</ span > < span class ="s2 "> "xzr"</ span > < span class ="p "> )</ span >
628- < span class ="n "> target_class</ span > < span class ="o "> .</ span > < span class ="n "> wzr</ span > < span class ="o "> =</ span > < span class ="n "> _get_property_zr</ span > < span class ="p "> (</ span > < span class ="s2 "> "wzr"</ span > < span class ="p "> )</ span > </ div >
645+ < span class ="n "> target_class</ span > < span class ="o "> .</ span > < span class ="n "> wzr</ span > < span class ="o "> =</ span > < span class ="n "> _get_property_zr</ span > < span class ="p "> (</ span > < span class ="s2 "> "wzr"</ span > < span class ="p "> )</ span >
646+
647+ < span class ="n "> Aarch64PtraceRegisterHolder</ span > < span class ="o "> .</ span > < span class ="n "> _vector_fp_registers</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _vector_fp_registers</ span > </ div >
629648
630649
631650< div class ="viewcode-block " id ="Aarch64PtraceRegisterHolder.apply_on_thread ">
0 commit comments