divdi3: incomplete fix in db3d848e154b?
Jeff Law
law@redhat.com
Sun May 14 14:18:00 GMT 2017
On 05/14/2017 07:22 AM, Zack Weinberg wrote:
> On Sun, May 14, 2017 at 2:22 AM, Alexey Neyman <stilor@att.net> wrote:
>>
>> divdi3.c:
>> 90 if (d0 == 0)
>> 91 d0 = 1 / d0; /* Divide intentionally by zero. */
>>
>> Isn't the purpose of this intentional division to generate a SIGFPE, rather
>> than SIGILL?
>>
>> Shouldn't divdi3.c do something else here, e.g. raise(SIGFPE) or be compiled
>> with -fno-sanitize=integer-divide-by-zero?
>
> Yes, I think you're right.
>
> We should try to get an actual hardware division by zero if we can;
> raise(SIGFPE) will not fill in the siginfo structure exactly the same
> way. It might be the best we can do sometimes, though.
Note that GCC will detect this as a division by zero and try to turn it
into a trap on architectures that have trap instructions.
jeff
More information about the Libc-alpha
mailing list