ucontect vs. ucontext_t (was Re: [RFC 4/6] ARC: Initial port to glibc)

Szabolcs Nagy szabolcs.nagy at arm.com
Wed Jun 28 02:23:17 PDT 2017


[ignoring newsgroups]

On 28/06/17 09:48, Vineet Gupta wrote:
> On 06/27/2017 02:56 PM, Joseph Myers wrote:
>>> +/* Userlevel context.  */
>>> +typedef struct ucontext
>>> +  {
>>> +    unsigned long uc_flags;
>>> +    struct ucontext *uc_link;
>> This is now struct ucontext_t.
> 
> Isn't this an ABI change. After making change as you suggested, building gcc/libgcc itself fails now as the ARC
> libgcc unwinder expects ucontext.
> 

this is a c++ abi change (name mangling of c++
function taking ucontext_t* arguments changes,
but such arg should be rare in extern functions)

>     #define MD_FALLBACK_FRAME_STATE_FOR arc_fallback_frame_state
> 
>     static __attribute__((noinline)) _Unwind_Reason_Code
>     arc_fallback_frame_state (struct _Unwind_Context *context,
>                    _Unwind_FrameState *fs)
>     {
>       struct rt_sigframe {
>         siginfo_t info;
>         struct ucontext uc;
>         unsigned int sigret_magic;
>       };
> 
> Can we atleast define a preprocessor macro to indicate this ABI change so downstream projects can support both
> things in short term ?
> 

this is not an abi issue but api (source code) issue:
there is no 'struct ucontext' in the public api,
only ucontext_t (without struct) so i think libgcc
should be fixed anyway.

> I see other threads on mailing list about distros being notifed etc of this ...
> 
> -Vineet




More information about the linux-snps-arc mailing list