[OE-core] [PATCH 4/7] eglibc: ptrace: protect ptrace_peeksiginfo_args from redefintion

Bruce Ashfield bruce.ashfield at gmail.com
Mon Aug 26 02:46:43 UTC 2013


On Sun, Aug 25, 2013 at 10:39 PM, Bruce Ashfield
<bruce.ashfield at gmail.com> wrote:
> On Sun, Aug 25, 2013 at 10:14 PM, Bruce Ashfield
> <bruce.ashfield at windriver.com> wrote:
>> On 13-08-25 8:54 PM, Bruce Ashfield wrote:
>>>
>>> On 13-08-25 8:46 PM, Khem Raj wrote:
>>>>
>>>> Hi Bruce
>>>>
>>>> On Sat, Aug 24, 2013 at 10:16 PM, Bruce Ashfield
>>>> <bruce.ashfield at windriver.com> wrote:
>>>>>
>>>>> linux kernel commit 84c751bd [ptrace: add ability to retrieve signals
>>>>> without removing from a queue (v4)]
>>>>> added ptrace_peeksiginfo_args to the exported kernel user api.
>>>>>
>>>>> This leads to build errors such as:
>>>>>
>>>>> | In file included from
>>>>>
>>>>> /poky-master/build/tmp/work/i586-poky-linux/strace/4.8-r0/strace-4.8/process.c:66:0:
>>>>>
>>>>> |
>>>>> /poky-master/build/tmp/sysroots/qemux86/usr/include/linux/ptrace.h:58:8:
>>>>> error: redefinition of 'struct ptrace_peeksiginfo_args'
>>>>> |  struct ptrace_peeksiginfo_args {
>>>>> |         ^
>>>>> | In file included from
>>>>>
>>>>> /poky-master/build/tmp/work/i586-poky-linux/strace/4.8-r0/strace-4.8/defs.h:159:0,
>>>>>
>>>>> |                  from
>>>>>
>>>>> /poky-master/build/tmp/work/i586-poky-linux/strace/4.8-r0/strace-4.8/process.c:37:
>>>>>
>>>>> |
>>>>> /poky-master/build/tmp/sysroots/qemux86/usr/include/sys/ptrace.h:191:8:
>>>>> note: originally defined here
>>>>> |  struct ptrace_peeksiginfo_args
>>>>> |         ^
>>>>> | make[2]: *** [process.o] Error 1
>>>>>
>>>>> In files that include both the eglibc sys/ptrace.h and the linux
>>>>> kernel exported
>>>>> one.
>>>>>
>>>>> We can avoid this by making the eglibc variant only declare its
>>>>> structure if PTRACE_PEEKSIGINFO
>>>>> has not been defined.
>>>>
>>>>
>>>> The problem is there however we need not fix it in eglibc thats wrong
>>>> place to fix it. The right place to fix it is affected application
>>>> which seems so mix glibc and kernel interfaces. It should try to not
>>>> mix kernel and glibc interfaces. This patch as such is not
>>>> appropriate.
>>>
>>>
>>> My insistence is that this go in in the mean time, otherwise the 3.10
>>
>>
>> s/insistence/suggestion/
>>
>> That came out a bit to strong! :)
>
>
> ... and I should point out that the fix I have in this patch also
> requires a particular
> include order. So by all definitions .. it is temporary!

A final (maybe .. hopefully!?) thought on this. Do drop this change,
but give me a
few minutes to remove the offending structure from linux-libc-headers_3.10. That
will also protect all users of yocto, regardless of the kernel unless
they provide
their own libc-headers .. and then they are on their own :)

That leaves the c library alone, and should buy us time to fix the
offending apps.

Bruce

>
> Bruce
>
>>
>> Bruce
>>
>>
>>> kernel headers miss the M4 cutoff and basically the whole release.
>>>
>>> I'm certainly not going to have the time and cycles to fix individual
>>> applications, so our choices boil down to taking this change, rolling
>>> back to the 3.8 headers, or waiting for individual package maintainers
>>> to update their packages to work with the 3.10 headers.
>>>
>>> I personally don't see the harm in this change, since these applications
>>> have always had this mix of both sys/ptrace.h and linux/ptrace.h in the
>>> past, now doesn't seem like the time to fix them.
>>>
>>> Cheers,
>>>
>>> Bruce
>>>
>>>
>>>>
>>>>
>>>>>
>>>>> Signed-off-by: Bruce Ashfield <bruce.ashfield at windriver.com>
>>>>> ---
>>>>>   ...ect-ptrace_peeksiginfo_args-from-redefint.patch |   55
>>>>> ++++++++++++++++++++
>>>>>   meta/recipes-core/eglibc/eglibc_2.18.bb            |    1 +
>>>>>   2 files changed, 56 insertions(+)
>>>>>   create mode 100644
>>>>>
>>>>> meta/recipes-core/eglibc/eglibc-2.18/0001-ptrace-protect-ptrace_peeksiginfo_args-from-redefint.patch
>>>>>
>>>>>
>>>>> diff --git
>>>>>
>>>>> a/meta/recipes-core/eglibc/eglibc-2.18/0001-ptrace-protect-ptrace_peeksiginfo_args-from-redefint.patch
>>>>>
>>>>> b/meta/recipes-core/eglibc/eglibc-2.18/0001-ptrace-protect-ptrace_peeksiginfo_args-from-redefint.patch
>>>>>
>>>>> new file mode 100644
>>>>> index 0000000..edf10fb
>>>>> --- /dev/null
>>>>> +++
>>>>>
>>>>> b/meta/recipes-core/eglibc/eglibc-2.18/0001-ptrace-protect-ptrace_peeksiginfo_args-from-redefint.patch
>>>>>
>>>>> @@ -0,0 +1,55 @@
>>>>> +From b5fe604678ffc7e0d6c2704a73d22f99b24a6d25 Mon Sep 17 00:00:00 2001
>>>>> +From: Bruce Ashfield <bruce.ashfield at windriver.com>
>>>>> +Date: Sat, 24 Aug 2013 23:51:06 -0400
>>>>> +Subject: [PATCH] ptrace: protect ptrace_peeksiginfo_args from
>>>>> redefintion
>>>>> +
>>>>> +linux kernel commit 84c751bd [ptrace: add ability to retrieve
>>>>> signals without removing from a queue (v4)]
>>>>> +added ptrace_peeksiginfo_args to the exported kernel user api.
>>>>> +
>>>>> +This leads to build errors such as:
>>>>> +
>>>>> +| In file included from
>>>>>
>>>>> /poky-master/build/tmp/work/i586-poky-linux/strace/4.8-r0/strace-4.8/process.c:66:0:
>>>>>
>>>>> +|
>>>>> /poky-master/build/tmp/sysroots/qemux86/usr/include/linux/ptrace.h:58:8:
>>>>> error: redefinition of 'struct ptrace_peeksiginfo_args'
>>>>> +|  struct ptrace_peeksiginfo_args {
>>>>> +|         ^
>>>>> +| In file included from
>>>>>
>>>>> /poky-master/build/tmp/work/i586-poky-linux/strace/4.8-r0/strace-4.8/defs.h:159:0,
>>>>>
>>>>> +|                  from
>>>>>
>>>>> /poky-master/build/tmp/work/i586-poky-linux/strace/4.8-r0/strace-4.8/process.c:37:
>>>>>
>>>>> +|
>>>>> /poky-master/build/tmp/sysroots/qemux86/usr/include/sys/ptrace.h:191:8:
>>>>> note: originally defined here
>>>>> +|  struct ptrace_peeksiginfo_args
>>>>> +|         ^
>>>>> +| make[2]: *** [process.o] Error 1
>>>>> +
>>>>> +In files that include both the eglibc sys/ptrace.h and the linux
>>>>> kernel exported
>>>>> +one.
>>>>> +
>>>>> +We can avoid this by making the eglibc variant only declare its
>>>>> structure if PTRACE_PEEKSIGINFO
>>>>> +has not been defined.
>>>>> +
>>>>> +Signed-off-by: Bruce Ashfield <bruce.ashfield at windriver.com>
>>>>> +---
>>>>> + libc/sysdeps/unix/sysv/linux/sys/ptrace.h |    2 ++
>>>>> + 1 file changed, 2 insertions(+)
>>>>> +
>>>>> +diff --git a/sysdeps/unix/sysv/linux/sys/ptrace.h
>>>>> b/sysdeps/unix/sysv/linux/sys/ptrace.h
>>>>> +index 2b78565..7800d9a 100644
>>>>> +--- a/sysdeps/unix/sysv/linux/sys/ptrace.h
>>>>> ++++ b/sysdeps/unix/sysv/linux/sys/ptrace.h
>>>>> +@@ -187,6 +187,7 @@ enum __ptrace_eventcodes
>>>>> +   PTRAVE_EVENT_SECCOMP  = 7
>>>>> + };
>>>>> +
>>>>> ++#ifndef PTRACE_PEEKSIGINFO
>>>>> + /* Arguments for PTRACE_PEEKSIGINFO.  */
>>>>> + struct ptrace_peeksiginfo_args
>>>>> + {
>>>>> +@@ -194,6 +195,7 @@ struct ptrace_peeksiginfo_args
>>>>> +   __uint32_t flags;   /* Flags for peeksiginfo.  */
>>>>> +   __int32_t nr;               /* How many siginfos to take.  */
>>>>> + };
>>>>> ++#endif
>>>>> +
>>>>> + enum __ptrace_peeksiginfo_flags
>>>>> + {
>>>>> +--
>>>>> +1.7.10.4
>>>>> +
>>>>> diff --git a/meta/recipes-core/eglibc/eglibc_2.18.bb
>>>>> b/meta/recipes-core/eglibc/eglibc_2.18.bb
>>>>> index 17b651f..2257c21 100644
>>>>> --- a/meta/recipes-core/eglibc/eglibc_2.18.bb
>>>>> +++ b/meta/recipes-core/eglibc/eglibc_2.18.bb
>>>>> @@ -26,6 +26,7 @@ SRC_URI =
>>>>> "http://downloads.yoctoproject.org/releases/eglibc/eglibc-${PV}-svnr23
>>>>>              file://tzselect-awk.patch \
>>>>>
>>>>> file://0001-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch \
>>>>>              file://fix-tibetian-locales.patch \
>>>>> +
>>>>> file://0001-ptrace-protect-ptrace_peeksiginfo_args-from-redefint.patch \
>>>>>             "
>>>>>   SRC_URI[md5sum] = "b395b021422a027d89884992e91734fc"
>>>>>   SRC_URI[sha256sum] =
>>>>> "15f564b45dc5dd65faf0875579e3447961ae61e876933384ae05d19328539ad4"
>>>>> --
>>>>> 1.7.10.4
>>>>>
>>>
>>
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core at lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
>
>
> --
> "Thou shalt not follow the NULL pointer, for chaos and madness await
> thee at its end"



-- 
"Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end"



More information about the Openembedded-core mailing list