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