commit | 3d19a8319b9c27af8aa5cfbf495da0fe7fa62d3e | [log] [tgz] |
---|---|---|
author | Colin Cross <ccross@android.com> | Fri Feb 14 18:56:23 2014 -0800 |
committer | Elliott Hughes <enh@google.com> | Tue Feb 18 12:11:38 2014 -0800 |
tree | a51591477e2f6f97ae56ae027d01ca1ff8c302ef | |
parent | d4bc9ef83b36916d5e63c4c3e4a092381473ea52 [diff] |
bionic: fix __set_errno for arm64 syscalls that return a 64-bit value 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