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: Thu, 08 May 2008 22:29:00 +0100
User-agent: Gnus/5.110006 (No Gnus v0.6) Emacs/21.4 (gnu/linux)

address@hidden (Ludovic Courtès) writes:

> Hi Neil,
>
> Neil Jerram <address@hidden> writes:
>
>> FYI, I finally fixed some problems on IA64 that have been outstanding
>> for ages (at least about 2 years).  Following is a big spiel about it,
>> and the actual patch (against 1.8.4 release).  If anyone has any
>> comments or questions, please let me know.  (And if not, I'll commit
>> in a couple of days' time.)
>
> Thanks a lot for fixing this!  It just missed 1.8.5 my a few hours (my
> fault).

Huh?  How can that have been your fault?

>  Hopefully distributions will apply the patch by themselves
> until we release a new version...

Yes, I'll forward it to Debian (who reported it) at least, once it's
committed.

> Thanks also for the nice explanation.  I must confess I didn't grasp
> everything (especially since I'm not familiar with IA64 and its RBS
> thing), but I'm confident you did the right thing.  ;-)
>
>> +    * threads.h (scm_i_thread): New IA64 fields:
>> +    register_backing_store_base and pending_rbs_continuation.
>
> This breaks ABI compatibility on IA64, but if Guile wasn't usable on
> IA64 (was it?) that's probably not a problem.

Good point, and I don't think it was completely unusable before, so
this could be an issue.  The problems were sufficient to break
Lilypond on IA64, but many simpler programs could have been fine.

Who is ABI compatibility an issue for?  If it's only the distros,
we're probably OK, as I believe they won't have promoted something
that failed "make check".

For people building their own Guile libs, can we cover this by a
sentence in the next release notes, to say that programs using
scm_i_thread should be recompiled?

>> +    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; but why the SCM_API?  I don't
think a libguile application should call scm_ia64_longjmp itself, so
do not intend to document it.

Thanks for your comments!

Regards,
     Neil





reply via email to

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