guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Fix continuation problems on IA64.


From: Neil Jerram
Subject: Re: [PATCH] Fix continuation problems on IA64.
Date: Mon, 12 May 2008 23:18:13 +0100
User-agent: Gnus/5.110006 (No Gnus v0.6) Emacs/21.4 (gnu/linux)

Neil Jerram <address@hidden> writes:

> address@hidden (Ludovic Courtès) writes:
>
>> Neil Jerram <address@hidden> writes:
>>
>>> +    void scm_ia64_longjmp (jmp_buf *, int);
>>
>> Add `SCM_API' at the beginning and `SCM_NORETURN' at the end.  The
>> latter should fix this:
>>
>>> +#ifdef __ia64__
>>> +  /* On IA64, we #define longjmp as setcontext, and GCC appears not to
>>> +     know that that doesn't return. */
>>> +  return SCM_UNSPECIFIED;
>>> +#endif
>
> I'm happy with adding SCM_NORETURN [...]

Actually, I tried that, and then got GCC complaining that
"scm_ia64_longjmp: function does return" - which is wrong, but I guess
occurs because the declaration (in a system header file somewhere) of
setcontext() does _not_ have __attribute__(noreturn).

So I've committed for now without this SCM_NORETURN change - but I'm
happy to update it if there is a further solution.  Is there a way of
adding __attribute__(noreturn) to a declaration (from a system header
file) that should have this attribute, but doesn't?  Also, can it be
done in a way that will work for compilers other than GCC?

Thanks,
    Neil





reply via email to

[Prev in Thread] Current Thread [Next in Thread]