RELEASE BLOCKER: Linux doesn't follow x86/x86-64 ABI wrt direction flag

H. Peter Anvin hpa@zytor.com
Thu Mar 6 15:37:00 GMT 2008


Jakub Jelinek wrote:
> On Thu, Mar 06, 2008 at 09:44:05AM +0100, Andi Kleen wrote:
>> "H. Peter Anvin" <hpa@zytor.com> writes:
>>
>>> Richard Guenther wrote:
>>>> We didn't yet run into this issue and build openSUSE with 4.3 since
>>>> more than
>>>> three month.
>>>>
>>> Well, how often do you take a trap inside an overlapping memmove()?
>> That was the state with older gcc, but with newer gcc it does not necessarily
>> reset the flag before the next function call.

If so, that's a much worse bug.

>> so e.g. if you have
>>
>>         memmove(...)
>>         for (... very long loop .... ) {
>>                 /* no function calls */
>>                 /* signals happen */
>>         }
>>
>> the signal could see the direction flag
> 
> memmove is supposed to (and does) do a cld insn after it finishes the
> backward copying.

You can still take a signal inside memmove() itself, of course.

	-hpa



More information about the Gcc mailing list