426
426
< h1 > Source code for libdebug.architectures.aarch64.aarch64_ptrace_register_holder</ h1 > < div class ="highlight "> < pre >
427
427
< span > </ span > < span class ="c1 "> #</ span >
428
428
< 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 >
430
430
< span class ="c1 "> # Licensed under the MIT license. See LICENSE file in the project root for details.</ span >
431
431
< span class ="c1 "> #</ span >
432
432
@@ -442,7 +442,7 @@ <h1>Source code for libdebug.architectures.aarch64.aarch64_ptrace_register_holde
442
442
< span class ="k "> if</ span > < span class ="n "> TYPE_CHECKING</ span > < span class ="p "> :</ span >
443
443
< span class ="kn "> from</ span > < span class ="nn "> libdebug.state.thread_context</ span > < span class ="kn "> import</ span > < span class ="n "> ThreadContext</ span >
444
444
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 >
446
446
447
447
448
448
< 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
587
587
< span class ="k "> return</ span > < span class ="n "> Aarch64Registers</ span > </ div >
588
588
589
589
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
+
590
604
< div class ="viewcode-block " id ="Aarch64PtraceRegisterHolder.apply_on_regs ">
591
605
< a class ="viewcode-back " href ="../../../../libdebug.architectures.aarch64.html#libdebug.architectures.aarch64.aarch64_ptrace_register_holder.Aarch64PtraceRegisterHolder.apply_on_regs "> [docs]</ a >
592
606
< 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
597
611
< 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 >
598
612
< span class ="k "> return</ span >
599
613
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
+
600
616
< 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 >
601
617
< 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 >
602
618
< 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
618
634
< 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 >
619
635
< 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 >
620
636
< 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 >
621
638
622
639
< span class ="c1 "> # setup special aarch64 registers</ span >
623
640
< 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 >
624
641
< 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 >
625
642
< 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 >
626
643
< 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 >
627
644
< 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 >
629
648
630
649
631
650
< div class ="viewcode-block " id ="Aarch64PtraceRegisterHolder.apply_on_thread ">
0 commit comments