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

H. Peter Anvin
2008-03-06T15:25:37Z

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