libaio: Fix MIPS system call interface
The io_syscallX wrappers in syscall-mips.h discard error return status by overwriting the value returned in v0 from the system call with -1. Modify this behavior by returning the negative of the return value on error (as identified by a3 != 0). This convention is consistent with the behavior observed in syscall-ppc.h. For a description of the MIPS system call interface, see: http://www.linux-mips.org/wiki/Syscall (From OE-Core rev: 0d8f50c33e5ff71dc17121b5c293718a8ad602bd) Signed-off-by: Phil Staub <Phil.Staub@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
12e76e123f
commit
9a9586c230
|
@ -0,0 +1,62 @@
|
||||||
|
Upstream status: Inappropriate [embedded specific]
|
||||||
|
|
||||||
|
Signed-off-by: Phil Staub <Phil.Staub@windriver.com>
|
||||||
|
|
||||||
|
Index: libaio-0.3.109/src/syscall-mips.h
|
||||||
|
===================================================================
|
||||||
|
--- libaio-0.3.109.orig/src/syscall-mips.h
|
||||||
|
+++ libaio-0.3.109/src/syscall-mips.h
|
||||||
|
@@ -76,7 +76,7 @@ type fname(atype a) \
|
||||||
|
\
|
||||||
|
if (__a3 == 0) \
|
||||||
|
return (type) __v0; \
|
||||||
|
- return (type) -1; \
|
||||||
|
+ return (type) (-(__v0)); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define io_syscall2(type,fname,sname,atype,a,btype,b) \
|
||||||
|
@@ -100,7 +100,7 @@ type fname(atype a, btype b) \
|
||||||
|
\
|
||||||
|
if (__a3 == 0) \
|
||||||
|
return (type) __v0; \
|
||||||
|
- return (type) -1; \
|
||||||
|
+ return (type) (-(__v0)); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define io_syscall3(type,fname,sname,atype,a,btype,b,ctype,c) \
|
||||||
|
@@ -125,7 +125,7 @@ type fname(atype a, btype b, ctype c) \
|
||||||
|
\
|
||||||
|
if (__a3 == 0) \
|
||||||
|
return (type) __v0; \
|
||||||
|
- return (type) -1; \
|
||||||
|
+ return (type) (-(__v0)); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define io_syscall4(type,fname,sname,atype,a,btype,b,ctype,c,dtype,d) \
|
||||||
|
@@ -150,7 +150,7 @@ type fname(atype a, btype b, ctype c, dt
|
||||||
|
\
|
||||||
|
if (__a3 == 0) \
|
||||||
|
return (type) __v0; \
|
||||||
|
- return (type) -1; \
|
||||||
|
+ return (type) (-(__v0)); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#if (_MIPS_SIM == _MIPS_SIM_ABI32)
|
||||||
|
@@ -186,7 +186,7 @@ type fname(atype a, btype b, ctype c, dt
|
||||||
|
\
|
||||||
|
if (__a3 == 0) \
|
||||||
|
return (type) __v0; \
|
||||||
|
- return (type) -1; \
|
||||||
|
+ return (type) (-(__v0)); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* (_MIPS_SIM == _MIPS_SIM_ABI32) */
|
||||||
|
@@ -216,7 +216,7 @@ type fname (atype a,btype b,ctype c,dtyp
|
||||||
|
\
|
||||||
|
if (__a3 == 0) \
|
||||||
|
return (type) __v0; \
|
||||||
|
- return (type) -1; \
|
||||||
|
+ return (type) (-(__v0)); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* (_MIPS_SIM == _MIPS_SIM_NABI32) || (_MIPS_SIM == _MIPS_SIM_ABI64) */
|
|
@ -5,7 +5,7 @@ HOMEPAGE = "http://lse.sourceforge.net/io/aio.html"
|
||||||
LICENSE = "LGPLv2.1+"
|
LICENSE = "LGPLv2.1+"
|
||||||
LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
|
LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
|
||||||
|
|
||||||
PR = "r1"
|
PR = "r2"
|
||||||
|
|
||||||
SRC_URI = "${DEBIAN_MIRROR}/main/liba/libaio/libaio_${PV}.orig.tar.gz \
|
SRC_URI = "${DEBIAN_MIRROR}/main/liba/libaio/libaio_${PV}.orig.tar.gz \
|
||||||
file://00_arches.patch \
|
file://00_arches.patch \
|
||||||
|
@ -14,6 +14,7 @@ SRC_URI = "${DEBIAN_MIRROR}/main/liba/libaio/libaio_${PV}.orig.tar.gz \
|
||||||
file://libaio_fix_for_x32.patch \
|
file://libaio_fix_for_x32.patch \
|
||||||
file://libaio-generic.patch \
|
file://libaio-generic.patch \
|
||||||
file://libaio-aarch64.patch \
|
file://libaio-aarch64.patch \
|
||||||
|
file://libaio_fix_for_mips_syscalls.patch \
|
||||||
"
|
"
|
||||||
|
|
||||||
SRC_URI[md5sum] = "435a5b16ca6198eaf01155263d855756"
|
SRC_URI[md5sum] = "435a5b16ca6198eaf01155263d855756"
|
||||||
|
|
Loading…
Reference in New Issue