[Webkit-unassigned] [Bug 156015] Fails to build in Linux / PowerPC due to different ucontext_t definition

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Mar 30 01:36:44 PDT 2016


https://bugs.webkit.org/show_bug.cgi?id=156015

Alberto Garcia <berto at igalia.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |berto at igalia.com,
                   |                            |cgarcia at igalia.com,
                   |                            |mcatanzaro at igalia.com

--- Comment #1 from Alberto Garcia <berto at igalia.com> ---
[ somehow the previous comment is incomplete, please ignore it ]

I reproduced this with WebKitGTK+ 2.12.0.

It seems that the definition of ucontext_t is different in Linux PowerPC, producing this build error:

/«PKGBUILDDIR»/Source/JavaScriptCore/heap/MachineStackMarker.cpp: In function 'void pthreadSignalHandlerSuspendResume(int, siginfo_t*, void*)':
/«PKGBUILDDIR»/Source/JavaScriptCore/heap/MachineStackMarker.cpp:89:37: error: no match for 'operator=' (operand types are 'mcontext_t' and 'ucontext::uc_regs_ptr')
     thread->suspendedMachineContext = userContext->uc_mcontext;
                                     ^
In file included from /usr/include/signal.h:326:0,
                 from /«PKGBUILDDIR»/Source/JavaScriptCore/heap/MachineStackMarker.h:36,
                 from /«PKGBUILDDIR»/Source/JavaScriptCore/heap/MachineStackMarker.cpp:23:
/usr/include/powerpc-linux-gnu/sys/ucontext.h:60:3: note: candidate: mcontext_t& mcontext_t::operator=(const mcontext_t&)
 } mcontext_t;
   ^
/usr/include/powerpc-linux-gnu/sys/ucontext.h:60:3: note:   no known conversion for argument 1 from 'ucontext::uc_regs_ptr' to 'const mcontext_t&'
/usr/include/powerpc-linux-gnu/sys/ucontext.h:60:3: note: candidate: mcontext_t& mcontext_t::operator=(mcontext_t&&)
/usr/include/powerpc-linux-gnu/sys/ucontext.h:60:3: note:   no known conversion for argument 1 from 'ucontext::uc_regs_ptr' to 'mcontext_t&&'
Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/build.make:9801: recipe for target 'Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/heap/MachineStackMarker.cpp.o' failed
make[3]: *** [Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/heap/MachineStackMarker.cpp.o] Error 1

Here's how it is defined:

    typedef struct ucontext {
        struct ucontext *uc_link;
        sigset_t         uc_sigmask;
        stack_t          uc_stack;
        mcontext_t       uc_mcontext;
        ...
    } ucontext_t;


Here's how it is defined in powerpc:

    typedef struct ucontext {
        struct ucontext *uc_link;
        sigset_t         uc_sigmask;
        stack_t          uc_stack;
        union uc_regs_ptr {
            struct pt_regs *regs;
            mcontext_t *uc_regs;
        } uc_mcontext;
        ...
    } ucontext_t;

Full definition here:

https://sources.debian.net/src/glibc/2.21-9/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h/?hl=139#L139

According to the setcontext(3) man page, this was removed in POSIX.1-2008 because of portability reasons.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20160330/05e4f483/attachment.html>


More information about the webkit-unassigned mailing list