Libseccomp: рдмрдЧ: aarch64 рдкрд░ 53/55 рд╡рд┐рдлрд▓рддрд╛рдУрдВ/рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рдорд╛рд░реНрдЪ 2020  ┬╖  23рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: seccomp/libseccomp

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд╛рде aarch64 рдкрд░ рдХрдИ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓рддрд╛рдПрдВ рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ; HEAD 38f04da ("рдкрд░реАрдХреНрд╖рдг: рдмрд╛рдЗрдирд░реА рдЯреНрд░реА рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝реЗрдВ") рд╣реИред

рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓рддрд╛рдПрдБ:

 test mode:  c
 test type:  bpf-valgrind
Test 53-sim-binary_tree%%331-00001 result:   FAILURE 53-sim-binary_tree rc=14
 test mode:  c
 test type:  basic
Test 55-basic-pfc_binary_tree%%001-00001 result:   FAILURE 55-basic-pfc_binary_tree.sh rc=1

рдкрд░реАрдХреНрд╖рдг рддреНрд░реБрдЯрд┐рдпрд╛рдБ:

 test mode:  c
 test type:  bpf-sim
Test 53-sim-binary_tree%%001-00001 result:   ERROR 53-sim-binary_tree rc=14
...
<every 53-sim-binary_tree test in "c" mode ERRORs in the same manner>
 test mode:  python
 test type:  bpf-sim
Test 53-sim-binary_tree%%001-00001 result:   ERROR 53-sim-binary_tree rc=1
...
<every 53-sim-binary_tree test in "python" mode ERRORs in the same manner>

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╣рд╛рдп @ рдкреАрд╕реЛ77 , рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдПрдХ рдмрд╛рд░ @drakenclimber рдХреЗ рдареАрдХ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд╣реЛрдВрдЧреЗ?

рдЬрд╝рд░реВрд░, рдЬрдм рдХреЛрдИ рдкреИрдЪ рдЙрдкрд▓рдмреНрдз рд╣реЛ рддреЛ рдореБрдЭреЗ рдкрд┐рдВрдЧ рдХрд░реЗрдВ!

рд╕рднреА 23 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@drakenclimber рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ aarch64 рд╕рд┐рд╕реНрдЯрдо рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ (рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ 64-рдмрд┐рдЯ рдмрд┐рд▓реНрдб рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реЛ?), рд▓реЗрдХрд┐рди рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЖрдкрдХреЛ рдпрд╣ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ aarch64 рд╕рд┐рд╕реНрдЯрдо рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдФрд░ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦ рд▓реВрдВрдЧрд╛ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд╡рд╣ рддреНрд░реБрдЯрд┐ рдХреЛрдб рд╣реИ 14 рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ 16 (рдиреАрдЪреЗ рд╕реБрдзрд╛рд░рд╛ рдЧрдпрд╛)

рдореИрдВрдиреЗ рдЕрднреА рдереЛрдбрд╝реА рдЦреБрджрд╛рдИ рдХреА рд╣реИ рдФрд░ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг 53-sim-binary_tree рдХреЛрдИ рдЗрдирдкреБрдЯ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдЪрд▓рд╛рдиреЗ рдкрд░ рддреНрд░реБрдЯрд┐ рдХреЛрдб 14/EFAULT рдХреЗ рд╕рд╛рде рд▓реМрдЯ рд░рд╣рд╛ рд╣реИред

рдореИрдВрдиреЗ рдХреБрдЫ рддреНрд╡рд░рд┐рдд рдЙрдкрдХрд░рдг рдЬреЛрдбрд╝реЗ (рдиреАрдЪреЗ):

diff --git a/tests/53-sim-binary_tree.c b/tests/53-sim-binary_tree.c
index 2c7890e..c154f67 100644
--- a/tests/53-sim-binary_tree.c
+++ b/tests/53-sim-binary_tree.c
@@ -81,6 +81,7 @@ int main(int argc, char *argv[])
                                              SCMP_A0(SCMP_CMP_EQ, i));
                else
                        rc = seccomp_rule_add(ctx, SCMP_ACT_ERRNO(i), i, 0);
+               printf("PMD: i=%d, rc=%d\n", i, rc);
                if (rc < 0)
                        goto out;
        }

... рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рд╣реБрдЖ:

# ./53-sim-binary_tree -p
PMD: i=0, rc=0
PMD: i=1, rc=0
PMD: i=2, rc=0
PMD: i=3, rc=0
...
PMD: i=161, rc=0
PMD: i=162, rc=0
PMD: i=163, rc=-14

рджрд┐рд▓рдЪрд╕реНрдкред рдорд╛рдИ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХреА рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдореГрддреНрдпреБ рд╣реЛ рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдирдпрд╛ рдСрд░реНрдбрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдмрд╣рд╛рдирд╛ рд▓рдЧрддрд╛ рд╣реИред рдирдпрд╛ 2GB рд╕рдВрд╕реНрдХрд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдХрд░реНрд╖рдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИред

рдЬрдм рддрдХ рдпрд╣ рдирд╣реАрдВ рдЖрддрд╛, рдореБрдЭреЗ Oracle рдХреЗ рднреАрддрд░ рдПрдХ ARM рдорд╢реАрди рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛...

рд╕реБрдирдиреЗ рдореЗрдВ рддреЛ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдирдпрд╛ рдЖрд░рдкреАрдЖрдИ 4 рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рдХреЗрд╡рд▓ 3 рдмреА рдорд┐рд▓рд╛ рд╣реИред

рднрд▓реЗ рд╣реА, рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рд┐рд╕реНрдЯрдо рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

aarch64 рдХреА syscall рддрд╛рд▓рд┐рдХрд╛ рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╡рд┐рд░рд▓ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ aarch64_syscall_resolve_num() NULL рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдпрджрд┐ aarch64_syscall_table рдореЗрдВ syscall рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рдорд┐рд▓ рдкрд╛рддреА рд╣реИред

рдпрд╣рд╛рдБ syscall рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рд╕рдЯреАрдХ рд╕реВрдЪреА рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ aarch64 рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ:

                if (i == 163 || i == 164 || i == 244 || i == 245 ||
                    i == 246 || i == 247 || i == 248 || i == 249 ||
                    i == 250 || i == 251 || i == 252 || i == 253 ||
                    i == 254 || i == 255 || i == 256 || i == 257 ||
                    i == 258 || i == 259 || i >= 295)
                        /* aarch64 doesn't support these syscall numbers.
                         * remove them
                         */
                        continue;

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВред рдХреНрдпрд╛ рд╣рдореЗрдВ рдкрд░реАрдХреНрд╖рдг 53 рдФрд░ 55 рдХреЛ рдХреЗрд╡рд▓ x86_64 рддрдХ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдмрдбрд╝реЗ, рдЕрд╕рдВрддреБрд▓рд┐рдд рдмрд╛рдЗрдирд░реА рдЯреНрд░реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рд╢рд╛рдпрдж рд╣рдореЗрдВ рдЗрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛, рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд┐рдЪрд╛рд░?

рдмрдорд░ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдлрд░реНрдЬреА рд╕рд┐рд╕реНрдХрд▓ рдирдВрдмрд░ рдореЗрдВ рдЦрд┐рд▓рд╛рдирд╛ рдФрд░ рд╡реИрдз рдкрд░рд┐рдгрд╛рдо рдХреА рдЙрдореНрдореАрдж рдХрд░рдирд╛ рдХрд╛рдлреА рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ;)

рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛ рдпрд╣ рд╣реЛрдЧреА рдХрд┐ рдкрд╣рд▓реЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП seccomp_syscall_resolve_num_arch(SCMP_ARCH_NATIVE, i) рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╡рд╣ рд╕рд┐рд╕реНрдХрд▓ рдирдВрдмрд░ рдореМрдЬреВрдж рд╣реИ; рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдмрд╕ рдЙрд╕ рдЧреИрд░-рдореМрдЬреВрдж рд╕рд┐рд╕реНрдХрд▓ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп aarch64 рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЙрдЪрд┐рдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рд╡реИрдз syscall рдирдВрдмрд░ API рдореЗрдВ рдлреАрдб рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рдмрдорд░ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдлрд░реНрдЬреА рд╕рд┐рд╕реНрдХрд▓ рдирдВрдмрд░ рдореЗрдВ рдЦрд┐рд▓рд╛рдирд╛ рдФрд░ рд╡реИрдз рдкрд░рд┐рдгрд╛рдо рдХреА рдЙрдореНрдореАрдж рдХрд░рдирд╛ рдХрд╛рдлреА рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ;)

рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ рдЬрдм рдореИрдВрдиреЗ рдпрд╣ рдХрд┐рдпрд╛ рддреЛ рдореИрдВ рдЖрдЧ рд╕реЗ рдЦреЗрд▓ рд░рд╣рд╛ рдерд╛ :)ред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдЗрдирд░реА рдЯреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдВрддрд┐рдо рд╕реЗрдХреЗрдВрдб рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЗрд╡рд▓ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╣рдо рдмреАрдкреАрдПрдл (рдпрд╛ рдкреАрдПрдлрд╕реА) рдХреЛ рдкрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛ рдпрд╣ рд╣реЛрдЧреА рдХрд┐ рдкрд╣рд▓реЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП seccomp_syscall_resolve_num_arch(SCMP_ARCH_NATIVE, i) рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╡рд╣ рд╕рд┐рд╕реНрдХрд▓ рдирдВрдмрд░ рдореМрдЬреВрдж рд╣реИ; рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдмрд╕ рдЙрд╕ рдЧреИрд░-рдореМрдЬреВрдж рд╕рд┐рд╕реНрдХрд▓ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкреВрд░реНрд╡-рдЖрдмрд╛рджреА рд╡рд╛рд▓реА *.pfc рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдирд╛ рд╡рд╛рдХрдИ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдо рдкрд░реАрдХреНрд╖рдг 55 рдореЗрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп aarch64 рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЙрдЪрд┐рдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рд╡реИрдз syscall рдирдВрдмрд░ API рдореЗрдВ рдлреАрдб рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рдорд╛рдирд╛ред рдореБрдЭреЗ рдкреАрдЫреЗ рд╣рдЯрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╢рд╛рдпрдж рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рдХреБрдЫ рдмреАрдкреАрдПрдл рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкреВрд░реНрд╡-рдЖрдмрд╛рджреА рд╡рд╛рд▓реА *.pfc рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдирд╛ рд╡рд╛рдХрдИ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдо рдкрд░реАрдХреНрд╖рдг 55 рдореЗрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╢рд╛рдпрдж рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг 55 рдХреЗ рд▓рд┐рдП рд╣рдо syscalls (рдПрдХ рджрд░реНрдЬрди, рджреЛ рджрд░реНрдЬрди?) рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рдЙрдкрд╕рдореБрдЪреНрдЪрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд╣рдо syscall рдирд╛рдо рд╕реЗ рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рд╡реЗ рдореМрдЬреВрдж рд╣реИрдВред

рд╢рд╛рдпрдж рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг 55 рдХреЗ рд▓рд┐рдП рд╣рдо syscalls (рдПрдХ рджрд░реНрдЬрди, рджреЛ рджрд░реНрдЬрди?) рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рдЙрдкрд╕рдореБрдЪреНрдЪрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд╣рдо syscall рдирд╛рдо рд╕реЗ рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рд╡реЗ рдореМрдЬреВрдж рд╣реИрдВред

рд╣рд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдЙрддреНрддрд░ рд╣реИред рддреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ aarch64 рдХреА syscall рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ 163 рддрдХ рдХреЛрдИ рдЫреЗрдж рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреНрдп рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛рдПрдБ рдХреИрд╕реА рджрд┐рдЦрддреА рд╣реИрдВ?

рдФрд░ рдХреНрдпрд╛ рд╣рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ 24 рдпрд╛ рддреЛ рд╕рд┐рд╕реНрдХреЛ рдХрд╛ рдПрдХ рдмрд╛рдЗрдирд░реА рдЯреНрд░реА рдХреЛрдб рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ? (рд╢рд╛рдпрдж рдЖрдкрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИред) рдореЗрд░реА рдЖрдВрдд рдорд╣рд╕реВрд╕ рдХрд░ рд░рд╣реА рд╣реИ рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдХрд╡рд░рдСрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рд╣рд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдЙрддреНрддрд░ рд╣реИред рддреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ aarch64 рдХреА syscall рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ 163 рддрдХ рдХреЛрдИ рдЫреЗрдж рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреНрдп рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛рдПрдБ рдХреИрд╕реА рджрд┐рдЦрддреА рд╣реИрдВ?

рдЕрдЧрд░ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд┐рд╕реНрдХрд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреА рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдереА ... рдУрд╣ рд░реБрдХреЛ, рд╣рдо рдХрд░рддреЗ рд╣реИрдВ! ;)

рдЙрджрд╛рд╣рд░рдг aarch64 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, syscall рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдз:

# ./src/arch-syscall-dump -a aarch64 | sort -k2 -n

рдФрд░ рдХреНрдпрд╛ рд╣рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ 24 рдпрд╛ рддреЛ рд╕рд┐рд╕реНрдХреЛ рдХрд╛ рдПрдХ рдмрд╛рдЗрдирд░реА рдЯреНрд░реА рдХреЛрдб рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ? (рд╢рд╛рдпрдж рдЖрдкрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИред) рдореЗрд░реА рдЖрдВрдд рдорд╣рд╕реВрд╕ рдХрд░ рд░рд╣реА рд╣реИ рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдХрд╡рд░рдСрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЬреЛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ, рдЗрд╕рдХреА рд╡реНрдпрд╛рдкрдХрддрд╛ рдХреЗ рд╕реНрддрд░ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ "рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛" рдкрд░реАрдХреНрд╖рдг рд╣реЛрдЧрд╛ рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕реБрд╕рдВрдЧрдд рд╣реЛрддрд╛ рд╣реИ, рд╣рд░ рдЬрдЧрд╣ рдЗрд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд░ рдмрд╛рд░ рдЗрд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдмрд╛рдж рдореЗрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд┐рд╕реНрдХрд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреА рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдереА ... рдУрд╣ рд░реБрдХреЛ, рд╣рдо рдХрд░рддреЗ рд╣реИрдВ! ;)

рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдерд╛ред рдзрдиреНрдпрд╡рд╛рдж ;)

рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЬреЛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ, рдЗрд╕рдХреА рд╡реНрдпрд╛рдкрдХрддрд╛ рдХреЗ рд╕реНрддрд░ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред

рдорд╛рдирд╛ред рдореИрдВ рд▓рд╛рд▓рдЪреА рд╣реЛ рдЧрдпрд╛ рдФрд░ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореИрдВ рдШрд░реЗрд▓реВ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдУрд╣ рдареАрдХ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ "рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛" рдкрд░реАрдХреНрд╖рдг рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЖрдЬ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ред

рдореИрдВ рд▓рд╛рд▓рдЪреА рд╣реЛ рдЧрдпрд╛ рдФрд░ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореИрдВ рдШрд░реЗрд▓реВ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдУрд╣ рдареАрдХ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ "рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛" рдкрд░реАрдХреНрд╖рдг рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЖрдЬ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ред

рдЕрд░реЗ, рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ, рд╣рдо рд╕рдм рд╕рдордп-рд╕рдордп рдкрд░ рдЙрд╕ рдЬрд╛рд▓ рдореЗрдВ рдлрдБрд╕рддреЗ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдЕрднреА рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕реБрдзрд╛рд░ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдкрд░реАрдХреНрд╖рдг рд╣реИ; рдпрд╣ рдмрд╣реБрдд рдмреБрд░рд╛ рд╣реЛ рд╕рдХрддрд╛

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдпрд╣ рдкреАрдкреАрд╕реА 64 рдкрд░ рднреА рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ:

рдмреИрдЪ рдХрд╛ рдирд╛рдо: 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА
рдкрд░реАрдХреНрд╖рдг рдореЛрдб: рд╕реА
рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХрд╛рд░: рдмреАрдкреАрдПрдл-рд╕рд┐рдо
рдкрд░реАрдХреНрд╖рдг 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА%% 001-00001 рдкрд░рд┐рдгрд╛рдо: рддреНрд░реБрдЯрд┐ 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА рдЖрд░рд╕реА = 14
рдкрд░реАрдХреНрд╖рдг 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА%%002-00001 рдкрд░рд┐рдгрд╛рдо: рддреНрд░реБрдЯрд┐ 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА рдЖрд░рд╕реА = 14
рдкрд░реАрдХреНрд╖рдг релрей-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА%%режрежрей-режрежрежрез рдкрд░рд┐рдгрд╛рдо: рддреНрд░реБрдЯрд┐ релрей-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА рдЖрд░рд╕реА = резрек
рдкрд░реАрдХреНрд╖рдг 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА%%004-00001 рдкрд░рд┐рдгрд╛рдо: рддреНрд░реБрдЯрд┐ 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА рдЖрд░рд╕реА = 14
рдкрд░реАрдХреНрд╖рдг 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА%%005-00001 рдкрд░рд┐рдгрд╛рдо: рддреНрд░реБрдЯрд┐ 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА рдЖрд░рд╕реА = 14
рдкрд░реАрдХреНрд╖рдг 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА%%006-00001 рдкрд░рд┐рдгрд╛рдо: рддреНрд░реБрдЯрд┐ 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА рдЖрд░рд╕реА = 14
рдкрд░реАрдХреНрд╖рдг 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА%%007-00001 рдкрд░рд┐рдгрд╛рдо: рддреНрд░реБрдЯрд┐ 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА рдЖрд░рд╕реА = 14
рдкрд░реАрдХреНрд╖рдг 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА%%008-00001 рдкрд░рд┐рдгрд╛рдо: рддреНрд░реБрдЯрд┐ 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА рдЖрд░рд╕реА = 14
рдкрд░реАрдХреНрд╖рдг 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА%%009-00001 рдкрд░рд┐рдгрд╛рдо: рддреНрд░реБрдЯрд┐ 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА рдЖрд░рд╕реА = 14
рдкрд░реАрдХреНрд╖рдг 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА%%010-00001 рдкрд░рд┐рдгрд╛рдо: рддреНрд░реБрдЯрд┐ 53-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА рдЖрд░рд╕реА = 14
...
рдкрд░реАрдХреНрд╖рдг рдореЛрдб: рд╕реА
рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХрд╛рд░: рдмреАрдкреАрдПрдл-рд╡рд╛рд▓рдЧреНрд░рд┐рдВрдб
рдкрд░реАрдХреНрд╖рдг релрей-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА%%рейрейрез-режрежрежрез рдкрд░рд┐рдгрд╛рдо: рд╡рд┐рдлрд▓рддрд╛ релрей-рд╕рд┐рдо-рдмрд╛рдЗрдирд░реА_рдЯреНрд░реА рдЖрд░рд╕реА = резрек

рдФрд░ 55-рдореВрд▓-pfc_binary_tree рднреА:

рдмреИрдЪ рдХрд╛ рдирд╛рдо: 55-рдмреЗрд╕рд┐рдХ-pfc_binary_tree
рдкрд░реАрдХреНрд╖рдг рдореЛрдб: рд╕реА
рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХрд╛рд░: рдореВрд▓
рдкрд░реАрдХреНрд╖рдг 55-рдореВрд▓-pfc_binary_tree%%001-00001 рдкрд░рд┐рдгрд╛рдо: рд╡рд┐рдлрд▓рддрд╛ 55-рдореВрд▓-pfc_binary_tree.sh rc=1

рд╣рд╛рдп @ рдкреАрд╕реЛ77 , рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдПрдХ рдмрд╛рд░ @drakenclimber рдХреЗ рдареАрдХ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд╣реЛрдВрдЧреЗ?

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЕрдиреНрдп рдПрдмреАрдЖрдИ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕рдорд╛рди рд╡рд┐рдлрд▓рддрд╛рдПрдВ рд╣реИрдВ; рдпрд╣ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рд╣реИ рдХрд┐ aarch64 рдПрдХрдорд╛рддреНрд░ рдЧреИрд░-x86 ABI рд╣реИ рдЬрд┐рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдЖрд╕рд╛рди рдкрд╣реБрдВрдЪ рд╣реИред рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рд╣рдо рдЬрд┐рд╕ рд╕реБрдзрд╛рд░ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдЗрди рд╕рднреА рд╡рд┐рдлрд▓рддрд╛рдУрдВ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ) рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдкрд╣рд▓рд╛ рдЫреЗрдж рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рдкрд╛рдпрдерди рд▓рд┐рдкрд┐ рд▓рд┐рдЦреА ред

рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ:

$ ./find-first-hole-in-each-arch.py 
aarch64's first syscall number hole is 163
arm's first syscall number hole is 7
mips64's first syscall number hole is 1
mips64n32's first syscall number hole is 1
mips's first syscall number hole is 1
parisc64's first syscall number hole is 102
ppc64's first syscall number hole is 192
ppc's first syscall number hole is 224
riscv64's first syscall number hole is 38
s390's first syscall number hole is 17
s390x's first syscall number hole is 13
x32's first syscall number hole is 1
x86_64's first syscall number hole is 335

рдЗрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ syscall рд╕рдВрдЦреНрдпрд╛ 12 рдкрд░ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг 53 рдФрд░ 55 рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреБрдЫ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ (рдорд┐рдкреНрд╕, рдЖрджрд┐) рд╣реИрдВ рдЬреЛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рднрд▓реЗ рд╣реА рд╣рдо рдХрд┐рддрдиреА рднреА рдХрдо рд╕рдВрдЦреНрдпрд╛ рдЪреБрдиреЗрдВред

рд╣рд╛рдп @ рдкреАрд╕реЛ77 , рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдПрдХ рдмрд╛рд░ @drakenclimber рдХреЗ рдареАрдХ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд╣реЛрдВрдЧреЗ?

рдЬрд╝рд░реВрд░, рдЬрдм рдХреЛрдИ рдкреИрдЪ рдЙрдкрд▓рдмреНрдз рд╣реЛ рддреЛ рдореБрдЭреЗ рдкрд┐рдВрдЧ рдХрд░реЗрдВ!

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреБрдЫ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ (рдорд┐рдкреНрд╕, рдЖрджрд┐) рд╣реИрдВ рдЬреЛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ рдЪрд╛рд╣реЗ рд╣рдо рдХрд┐рддрдиреА рднреА рдХрдо рд╕рдВрдЦреНрдпрд╛ рдЪреБрдиреЗрдВред

рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ?

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреБрдЫ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ (рдорд┐рдкреНрд╕, рдЖрджрд┐) рд╣реИрдВ рдЬреЛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ рдЪрд╛рд╣реЗ рд╣рдо рдХрд┐рддрдиреА рднреА рдХрдо рд╕рдВрдЦреНрдпрд╛ рдЪреБрдиреЗрдВред

рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ?

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдореИрдВ рдореВрд▓ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдЕрдЧрд░ рдпрд╣ рд╣рд╛рде, рдорд┐рдкреНрд╕ *, рдпрд╛ x32 рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рдмрд╛рдЗрдирд░реА рдкреЗрдбрд╝ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдореИрдВ рдореВрд▓ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдЕрдЧрд░ рдпрд╣ рд╣рд╛рде, рдорд┐рдкреНрд╕ *, рдпрд╛ x32 рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рдмрд╛рдЗрдирд░реА рдкреЗрдбрд╝ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рдпрджрд┐ рд╣рдо рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ ABI рдХреЛ рдЫреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рдХреЗрд╡рд▓ x86_64 рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреЛ рдХрд╛рдлреА рдЦрд░рд╛рдм рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╕рд┐рд╕реНрдХрд▓ рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рди рдХрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдХрд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╢рд╛рдпрдж рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЯрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдиреЛрдЯ: syscalls рдХреЛ рдЙрд╕ рд╡рд┐рд╢реЗрд╖ ABI рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рд╣рдорд╛рд░реА рдЖрдВрддрд░рд┐рдХ syscall рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдорд╛рдиреНрдп syscall рдирд╛рдо рд╣реИрдВред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдЖрдк рд╕рд╣реА рд╣реИрдВред рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд┐рддрд┐ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╕рд┐рд╕реНрдХрд▓ рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рди рдХрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдХрд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╢рд╛рдпрдж рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЯрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рд╣реВрдБред рдореБрдЭреЗ рдЕрднреА рддрдХ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдкреАрдПрдлрд╕реА рдХреЗрд╕ (рдЯреЗрд╕реНрдЯ 55) рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╢реЙрдЯ рджреВрдВрдЧрд╛!

рдпрд╣ рдкреАрдЖрд░ # 211 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдПрдХ рдЕрдиреБрд╡рд░реНрддреА рдлрд┐рдХреНрд╕ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ dc2831e8fdcad71d565ba02abf732c8ffd260f66 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕рд╛рде (рдХреЛрдИ рдкреАрдЖрд░ рдирд╣реАрдВ) рд╣реИрдХ рдХрд┐рдпрд╛ рдерд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕