В Wed, 27 Oct 2010 21:38:19 +0200
Bernhard Reutner-Fischer <[email protected]> пишет:

> On Wed, Oct 13, 2010 at 06:16:34PM +0400, Alexander Gordeev wrote:
> >В Thu,  7 Oct 2010 18:54:24 +0400
> >Alexander Gordeev <[email protected]> пишет:
> >
> >> If there was an error during syscall then after it's completion a3
> >> register holds a non-zero value and v0 holds an actual error code which
> >> should be saved in errno. This can be achieved by calling
> >> __syscall_error with the value from v0 as a parameter. So this value
> >> should be stored in a0, but the appropriate assembly instructions are
> >> missing. Fixed this now by adding "move a0, v0".
> >> 
> >> I think it was once fixed by 58c5f8ba4cdf62342d05a546d15404cbbb3c4e07
> >> but then something went wrong. Again...
> >> 
> >> Signed-off-by: Alexander Gordeev <[email protected]>
> >[snip]
> >
> >Nobody interested?
> 
> It sounds a bit heavy to me, but i'm applying it as a workaround.
> What abi are you using?

Sorry, I don't know. I learned MIPS assembly right to fix this bug. I
use Openwrt compiled with uClibc 0.9.32 with NPTL support (commit
ef487a35f428da6240003dca23b9d29908e2285e with several other patches) if
that helps. I think this bug should appear on all MIPS platforms. I've
also seen it in qemu emulating Malta little-endian.

> Perhaps someone with a mips setup can look into this some more since
> it adds up to every syscall..
> Dan, you seem to have added that move a0,v0 initially as a uClibc
> specific workaround.
> 
> PS: and it would be nice to get rid of libc/string/mips/sysdep.h
> PPS: i'm sorry for the long delay

No problem. :)

> PPPS: that move should use the MOVE macro instead

Hmm, you mean I should just replace "move" with "MOVE"?

-- 
  Alexander

Attachment: signature.asc
Description: PGP signature

_______________________________________________
uClibc mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to