--- - branch: MAIN date: Tue Jun 4 16:29:53 UTC 2019 files: - new: '1.122' old: '1.121' path: src/sys/arch/amd64/amd64/netbsd32_machdep.c pathrev: src/sys/arch/amd64/amd64/netbsd32_machdep.c@1.122 type: modified - new: '1.23' old: '1.22' path: src/sys/arch/amd64/include/netbsd32_machdep.h pathrev: src/sys/arch/amd64/include/netbsd32_machdep.h@1.23 type: modified - new: '1.14' old: '1.13' path: src/sys/arch/amd64/include/ptrace.h pathrev: src/sys/arch/amd64/include/ptrace.h@1.14 type: modified - new: '1.7' old: '1.6' path: src/sys/compat/netbsd32/netbsd32_ptrace.c pathrev: src/sys/compat/netbsd32/netbsd32_ptrace.c@1.7 type: modified id: 20190604T162953Z.dcaa694e62deacdbac715c100338f3565370097e log: | compat32: Translate userland PT_* request values into kernel codes Currently, the compat32 passes PT_* request values to kernel functions without translation. This works fine for low PT_* requests that happen to have the same values both on i386 and amd64. However, for requests higher than PT_SETFPREGS, the value passed from userland (matching i386 const) does not match the correct kernel (amd64) request. As a result, e.g. when compat32 process calls PT_GETDBREGS, kernel actually processes it as PT_SETSTEP. To resolve this, introduce support for compat32 PT_* request translation. The interface is based on PTRACE_TRANSLATE_REQUEST32 macro that is defined to a mapping function on architectures needing it. In case of amd64, this function maps userland i386 PT_* values into appropriate amd64 PT_* values. For the time being, the two additional PT_GETXMMREGS and PT_SETXMMREGS requests are unsupported due to lack of matching free amd64 constant. module: src subject: 'CVS commit: src/sys' unixtime: '1559665793' user: mgorny