[NON4KPAGE] Some more adjustments for non-4Kpagesize system regression Hi, [PltResolver64 is not able to store offs](https://github.com/ptitSeb/box64/blob/main/src/elfs/elfloader.c#L1911) to `R_X86_64_JUMP_SLOT` `0x3f00003fb0` because `0x3f00003fb0` is read only: ``` [BOX64] PltResolver64: Addr=0xff88005130, Slot=5 Return=0x3f000011a6(/yourpath/jdk/build/linux-x86_64-server-release/images/test/hotspot/jtreg/native/libTest35859.so/Java_Test35859_inc + 0x26): elf is /yourpath/jdk/build/linux-x86_64-server-release/images/test/hotspot/jtreg/native/libTest35859.so (VerSym=0x678, deepbind=0, local_maplib=0xff8800de30) func param: 0xba, 0xffc95ea018... [BOX64] Apply STB_GLOBAL R_X86_64_JUMP_SLOT 0x3f00003fb0 with sym=syscall(optver 2: syscall@GLIBC_2.2.5) (0x3f00001086 -> 0x30020740 / box64) ... => [BOX64] 3f00000000-3f00004000 r--p 00000000 00:00 0 ^--- read only [BOX64] 3f00004000-3f00008000 rw-p 00000000 00:00 0 ... #8 0x000000ff8de852b0 in PltResolver64 (emu=0xff8800b470) at /yourpath/box64/src/elfs/elfloader.c:1912 #9 0x000000ff8de92cb0 in x64Int3 (emu=0xff8800b470, addr=) at /yourpath/box64/src/emu/x64int3.c:330 #10 0x000000ffc8d602fc in ?? () ... (gdb) frame 8 #8 0x000000ff8de852b0 in PltResolver64 (emu=0xff8800b470) at /yourpath/box64/src/elfs/elfloader.c:1912 1912 *p = offs; (gdb) x p 0x3f00003fb0: 0x00001086 (gdb) x/22i $pc-44 0xff8de85284 : st.d $r27,$r3,8(0x8) 0xff8de85288 : st.d $r16,$r3,0 0xff8de8528c : move $r10,$r25 0xff8de85290 : move $r8,$r11 0xff8de85294 : move $r7,$r23 0xff8de85298 : pcaddu12i $r5,2749(0xabd) 0xff8de8529c : addi.d $r5,$r5,-1064(0xbd8) 0xff8de852a0 : addi.w $r4,$r0,1(0x1) 0xff8de852a4 : bl -75028(0xffedaec) # 0xff8de72d90 0xff8de852a8 : bl -42440(0xfff5a38) # 0xff8de7ace0 0xff8de852ac : ld.d $r13,$r3,136(0x88) => 0xff8de852b0 : st.d $r13,$r23,0 0xff8de852b4 : beqz $r26,192(0xc0) # 0xff8de85374 0xff8de852b8 : beq $r26,$r22,188(0xbc) # 0xff8de85374 0xff8de852bc : beqz $r22,184(0xb8) # 0xff8de85374 0xff8de852c0 : ld.d $r5,$r26,656(0x290) 0xff8de852c4 : beqz $r5,176(0xb0) # 0xff8de85374 0xff8de852c8 : move $r4,$r22 0xff8de852cc : bl -24684(0xfff9f94) # 0xff8de7f260 0xff8de852d0 : ld.d $r4,$r3,136(0x88) 0xff8de852d4 : ld.d $r1,$r3,248(0xf8) 0xff8de852d8 : st.d $r4,$r24,136(0x88) (gdb) i r $r13 $r23 r13 0x30020740 805439296 r23 0x3f00003fb0 270582955952 ``` Just revert the [req_prot](https://github.com/ptitSeb/box64/blob/main/src/dynarec/dynablock.c#L203) for non-4Kpagesize system in the commit a30433ea120ba502045782296db85bb27f643d6b the testcase Passed: ``` diff --git a/src/dynarec/dynablock.c b/src/dynarec/dynablock.c index 097d16d9..7fd3ba4d 100644 --- a/src/dynarec/dynablock.c +++ b/src/dynarec/dynablock.c @@ -200,7 +200,7 @@ static dynablock_t* internalDBGetBlock(x64emu_t* emu, uintptr_t addr, uintptr_t { if(hasAlternate((void*)addr)) return NULL; - const uint32_t req_prot = (box64_pagesize==4096)?(PROT_EXEC|PROT_READ):PROT_READ; + const uint32_t req_prot = PROT_EXEC|PROT_READ; dynablock_t* block = getDB(addr); if(block || !create) { if(block && getNeedTest(addr) && (getProtection(addr)&req_prot)!=req_prot) ``` Thanks, Leslie Zhai