• Colin Cross's avatar
    bionic: fix __set_errno for arm64 syscalls that return a 64-bit value · 3d19a831
    Colin Cross authored
    bionic/libc/arch-arm64/syscalls/read.S ends with:
        b.hi __set_errno
        ret
    END(read)
    
    If __set_errno returns int, it will set w0 to 0xFFFFFFFF, which means
    x0 is 0x00000000FFFFFFFF.  When interpreted as a ssize_t that is
    INT_MAX, not -1.
    
    Change __set_errno to return long, which will cause x0 to be set instead
    of w0.
    
    Change-Id: I9f9ea0f2995928d2ea240eb2ff7758ecdf0ff412
    3d19a831
__set_errno.cpp 2 KB