on 10/09/2011 10:32 Andriy Gapon said the following:
> I am now investigating what looks like a miscompilation of the code by *gcc*
> after applying the patch.  It seems that -mrtd option is to blame.
> I have found an older discussion about the -mrtd option causing trouble with 
> clang:
> http://lists.freebsd.org/pipermail/freebsd-current/2011-August/026263.html
> There was a patch that made clang happy without disabling the flag, so I 
> wonder
> if I made some subtle mistake in my patch.  Or maybe it's better to disable 
> mrtd
> altogether for the zfs boot blocks, just to stay on the safe side.

Actually, removing either -mrtd _or_ -fno-unit-at-a-time produces the correct
code.  Puzzled.

> Some technical details in the form of a diff with some superimposed comments:
> --- /home/avg/tmp/vdev_read_phys-mrtd.s       2011-09-10 01:50:54.500620864 
> +0300
> +++ /home/avg/tmp/vdev_read_phys-no-mrtd.s    2011-09-10 01:49:59.157701373 
> +0300
> @@ -29,16 +29,17 @@
>       ... <- in the code before this %edi gets assigned a pointer to a 
> function
>       movl    60(%ecx), %eax
>       movl    %eax, 24(%esp)
>       movl    %ecx, 20(%esp)
> +     movl    %edi, %ecx  <- non-mrtd code saves the pointer
>       popl    %ebx
>       popl    %esi
>       popl    %edi <- %edi gets over-written with an unrelated value
>       popl    %ebp
> -     jmp     *%edi  <- mrtd code calls some garbage code
> +     jmp     *%ecx  <- non-mrtd code calls the correct code
>  .L601:
>       movl    $5, %eax
>       popl    %ebx
>       popl    %esi
>       popl    %edi
>       popl    %ebp
> -     ret     $24
> +     ret
> 
> The problem is in the patched vdev_read_phys function in zfsimpl.c.
> Unpatched version of the function doesn't seem to be affected.
> 
> Any help/ideas will be greatly appreciated!
> 


-- 
Andriy Gapon
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to