From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 107817 invoked by alias); 18 Jul 2017 13:41:52 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 107505 invoked by uid 89); 18 Jul 2017 13:41:50 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-10.9 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,GIT_PATCH_3,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 spammy=73, 7.3 X-HELO: mx0a-001b2d01.pphosted.com Subject: Re: [PATCH] S390: Sync ptrace.h with kernel. [BZ #21539] To: libc-alpha@sourceware.org References: <20170613200522.GA14306@altlinux.org> <20170718102039.GA20971@altlinux.org> From: Stefan Liebler Date: Tue, 18 Jul 2017 13:41:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: <20170718102039.GA20971@altlinux.org> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 x-cbid: 17071813-0012-0000-0000-00000563F56D X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17071813-0013-0000-0000-000018D77BAA Message-Id: <2e9fcbdc-4060-5e1d-8866-82aaca9316b1@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-07-18_06:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1706020000 definitions=main-1707180215 X-SW-Source: 2017-07/txt/msg00641.txt.bz2 On 07/18/2017 12:20 PM, Dmitry V. Levin wrote: > On Mon, Jun 19, 2017 at 03:10:57PM +0200, Stefan Liebler wrote: > [...] >> --- a/sysdeps/unix/sysv/linux/s390/sys/ptrace.h >> +++ b/sysdeps/unix/sysv/linux/s390/sys/ptrace.h >> @@ -89,25 +89,9 @@ enum __ptrace_request >> PTRACE_SINGLESTEP = 9, >> #define PT_STEP PTRACE_SINGLESTEP >> >> - /* Get all general purpose registers used by a processes. >> - This is not supported on all machines. */ >> - PTRACE_GETREGS = 12, >> -#define PT_GETREGS PTRACE_GETREGS >> - >> - /* Set all general purpose registers used by a processes. >> - This is not supported on all machines. */ >> - PTRACE_SETREGS = 13, >> -#define PT_SETREGS PTRACE_SETREGS >> - >> - /* Get all floating point registers used by a processes. >> - This is not supported on all machines. */ >> - PTRACE_GETFPREGS = 14, >> -#define PT_GETFPREGS PTRACE_GETFPREGS >> - >> - /* Set all floating point registers used by a processes. >> - This is not supported on all machines. */ >> - PTRACE_SETFPREGS = 15, >> -#define PT_SETFPREGS PTRACE_SETFPREGS >> + /* Execute process until next taken branch. */ >> + PTRACE_SINGLEBLOCK = 12, >> +#define PT_STEPBLOCK PTRACE_SINGLEBLOCK >> >> /* Attach to a process that is already running. */ >> PTRACE_ATTACH = 16, >> @@ -167,8 +151,26 @@ enum __ptrace_request >> PTRACE_SETSIGMASK = 0x420b, >> #define PTRACE_SETSIGMASK PTRACE_SETSIGMASK >> >> - PTRACE_SECCOMP_GET_FILTER = 0x420c >> + PTRACE_SECCOMP_GET_FILTER = 0x420c, >> #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER >> + >> + PTRACE_PEEKUSR_AREA = 0x5000, >> +#define PTRACE_PEEKUSR_AREA PTRACE_PEEKUSR_AREA >> + >> + PTRACE_POKEUSR_AREA = 0x5001, >> +#define PTRACE_POKEUSR_AREA PTRACE_POKEUSR_AREA >> + >> + PTRACE_GET_LAST_BREAK = 0x5006, >> +#define PTRACE_GET_LAST_BREAK PTRACE_GET_LAST_BREAK >> + >> + PTRACE_ENABLE_TE = 0x5009, >> +#define PTRACE_ENABLE_TE PTRACE_ENABLE_TE >> + >> + PTRACE_DISABLE_TE = 0x5010, >> +#define PTRACE_DISABLE_TE PTRACE_DISABLE_TE >> + >> + PTRACE_TE_ABORT_RAND = 0x5011 >> +#define PTRACE_TE_ABORT_RAND PTRACE_TE_ABORT_RAND >> }; > > Mark Wielaard has spotted [1] a regression that I missed during review. > After this change, this test case fails to compile with the following > diagnostics: > > $ gcc -c -xc -o/dev/null - <<'EOF' > #include > #include > EOF Is this order required? I've tried it on x86_64 RHEL 7.3: In file included from /usr/include/asm/ptrace.h:5:0, from :1: /usr/include/sys/ptrace.h:74:4: error: expected identifier before numeric constant PTRACE_GETREGS = 12, ^ > In file included from :1:0: > /usr/include/sys/ptrace.h:93:3: error: expected identifier before numeric constant > PTRACE_SINGLEBLOCK = 12, > ^ > In file included from :2:0: > /usr/include/sys/ptrace.h:158:0: warning: "PTRACE_PEEKUSR_AREA" redefined > #define PTRACE_PEEKUSR_AREA PTRACE_PEEKUSR_AREA > ^ > In file included from :1:0: > /usr/include/asm/ptrace.h:392:0: note: this is the location of the previous definition > #define PTRACE_PEEKUSR_AREA 0x5000 > ^ > In file included from :2:0: > /usr/include/sys/ptrace.h:161:0: warning: "PTRACE_POKEUSR_AREA" redefined > #define PTRACE_POKEUSR_AREA PTRACE_POKEUSR_AREA > ^ > In file included from :1:0: > /usr/include/asm/ptrace.h:393:0: note: this is the location of the previous definition > #define PTRACE_POKEUSR_AREA 0x5001 > ^ > In file included from :2:0: > /usr/include/sys/ptrace.h:164:0: warning: "PTRACE_GET_LAST_BREAK" redefined > #define PTRACE_GET_LAST_BREAK PTRACE_GET_LAST_BREAK > ^ > In file included from :1:0: > /usr/include/asm/ptrace.h:398:0: note: this is the location of the previous definition > #define PTRACE_GET_LAST_BREAK 0x5006 > ^ > In file included from :2:0: > /usr/include/sys/ptrace.h:167:0: warning: "PTRACE_ENABLE_TE" redefined > #define PTRACE_ENABLE_TE PTRACE_ENABLE_TE > ^ > In file included from :1:0: > /usr/include/asm/ptrace.h:401:0: note: this is the location of the previous definition > #define PTRACE_ENABLE_TE 0x5009 > ^ > In file included from :2:0: > /usr/include/sys/ptrace.h:170:0: warning: "PTRACE_DISABLE_TE" redefined > #define PTRACE_DISABLE_TE PTRACE_DISABLE_TE > ^ > In file included from :1:0: > /usr/include/asm/ptrace.h:402:0: note: this is the location of the previous definition > #define PTRACE_DISABLE_TE 0x5010 > ^ > In file included from :2:0: > /usr/include/sys/ptrace.h:173:0: warning: "PTRACE_TE_ABORT_RAND" redefined > #define PTRACE_TE_ABORT_RAND PTRACE_TE_ABORT_RAND > ^ > In file included from :1:0: > /usr/include/asm/ptrace.h:403:0: note: this is the location of the previous definition > #define PTRACE_TE_ABORT_RAND 0x5011 > ^ > > The following change fixes this and similar compilation issues that arise > when sys/ptrace.h is included after linux/ptrace.h: > > --- a/sysdeps/unix/sysv/linux/s390/sys/ptrace.h > +++ b/sysdeps/unix/sysv/linux/s390/sys/ptrace.h > @@ -24,24 +24,61 @@ > #include > > __BEGIN_DECLS > -#ifdef _LINUX_PTRACE_H > +#if defined _LINUX_PTRACE_H || defined _S390_PTRACE_H Shall we also add "|| defined _UAPI_LINUX_PTRACE_H" here? Some of the defines like PTRACE_EVENT_* | PTRACE_O_* are defined in the corresponding /include/uapi/linux/ptrace.h header. > /* Kludge to stop stuff gdb & strace compiles from getting upset > */ > #undef PTRACE_TRACEME > #undef PTRACE_PEEKTEXT > #undef PTRACE_PEEKDATA > -#undef PTRACE_PEEKUSR > #undef PTRACE_POKETEXT > #undef PTRACE_POKEDATA > -#undef PTRACE_POKEUSR > #undef PTRACE_CONT > #undef PTRACE_KILL > #undef PTRACE_SINGLESTEP > - > +#undef PTRACE_SINGLEBLOCK > #undef PTRACE_ATTACH > #undef PTRACE_DETACH > - > #undef PTRACE_SYSCALL > +#undef PTRACE_SETOPTIONS > +#undef PTRACE_GETEVENTMSG > +#undef PTRACE_GETSIGINFO > +#undef PTRACE_SETSIGINFO > +#undef PTRACE_GETREGSET > +#undef PTRACE_SETREGSET > +#undef PTRACE_SEIZE > +#undef PTRACE_INTERRUPT > +#undef PTRACE_LISTEN > +#undef PTRACE_PEEKSIGINFO > +#undef PTRACE_GETSIGMASK > +#undef PTRACE_SETSIGMASK > +#undef PTRACE_SECCOMP_GET_FILTER > +#undef PTRACE_PEEKUSR_AREA > +#undef PTRACE_POKEUSR_AREA > +#undef PTRACE_GET_LAST_BREAK > +#undef PTRACE_ENABLE_TE > +#undef PTRACE_DISABLE_TE > +#undef PTRACE_TE_ABORT_RAND > +#undef PTRACE_O_TRACESYSGOOD > +#undef PTRACE_O_TRACEFORK > +#undef PTRACE_O_TRACEVFORK > +#undef PTRACE_O_TRACECLONE > +#undef PTRACE_O_TRACEEXEC > +#undef PTRACE_O_TRACEVFORKDONE > +#undef PTRACE_O_TRACEEXIT > +#undef PTRACE_O_TRACESECCOMP > +#undef PTRACE_O_EXITKILL > +#undef PTRACE_O_SUSPEND_SECCOMP > +#undef PTRACE_O_MASK > +#undef PTRACE_EVENT_FORK > +#undef PTRACE_EVENT_VFORK > +#undef PTRACE_EVENT_CLONE > +#undef PTRACE_EVENT_EXEC > +#undef PTRACE_EVENT_VFORK_DONE > +#undef PTRACE_EVENT_EXIT > +#undef PTRACE_EVENT_SECCOMP > +#undef PTRACE_EVENT_STOP > +#undef PTRACE_PEEKSIGINFO_SHARED > + > #endif > /* Type of the REQUEST argument to `ptrace.' */ > enum __ptrace_request > > The list was produced by the following command: > $ sed -n '/USER\|DEVEL/d;s/^[[:space:]]*\(PTRACE_[^=[:space:]]\+\)[[:space:]]*=.*/#undef \1/p' sysdeps/unix/sysv/linux/s390/sys/ptrace.h > > PTRACE_PEEKUSER and PTRACE_POKEUSER were excluded because they are not > defined by Linux headers, and PTRACE_SEIZE_DEVEL was excluded because > it's obsolete and should be removed from sys/ptrace.h anyway. > > [1] https://sourceware.org/ml/elfutils-devel/2017-q3/msg00018.html > >