[PATCH] S390: Sync ptrace.h with kernel. [BZ #21539]
Stefan Liebler
stli@linux.vnet.ibm.com
Tue Jul 4 15:37:00 GMT 2017
On 07/04/2017 11:41 AM, Florian Weimer wrote:
> On 07/04/2017 10:22 AM, Stefan Liebler wrote:
>> + /* Ptrace request 12 is done with zero data argument:
>> + -If the kernel has support for PTRACE_SINGLEBLOCK (then the kernel
>> + header asm/ptrace.h defines this macro), the ptrace call is not allowed
>> + to fail and has to continue the tracee until next taken branch.
>
> I think this is still bogus. We can compile with newer kernel headers
> than the host kernel, and this will cause the test to fail.
>
> Thanks,
> Florian
>
Okay.
So I can check the return value of the second ptrace (req_singleblock,
pid, NULL, NULL) call at runtime to determine the kernel-support:
errno = 0;
ret = ptrace (req_singleblock, pid, NULL, NULL);
if (ret == 0)
{
/* The kernel has support for PTRACE_SINGLEBLOCK ptrace request. */
TEST_VERIFY_EXIT (errno == 0);
}
else
{
/* The kernel (< 3.15) has no support for PTRACE_SINGLEBLOCK ptrace
request. */
TEST_VERIFY_EXIT (errno == EIO);
TEST_VERIFY_EXIT (ret == -1);
/* Just continue tracee until it exits normally. */
TEST_VERIFY_EXIT (ptrace (PTRACE_CONT, pid, NULL, NULL) == 0);
}
Then the test runs on kernels with / without support for
PTRACE_SINGLEBLOCK. The first ptrace call ensures that request 12 is not
interpreted as PTRACE_GETREGS.
Bye.
Stefan
More information about the Libc-alpha
mailing list