Package: libaio / 0.3.113-9

Metadata

Package Version Patches format
libaio 0.3.113-9 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
0001 harness use off64_t instead of off_t in test 23.t EI.patch | (download)

harness/cases/23.t | 4 2 + 2 - 0 !
1 file changed, 2 insertions(+), 2 deletions(-)

 [patch libaio 01/26] harness: use off64_t instead of off_t in test
 23.t (EINVAL on 32-bit)


0002 man Fix typos.patch | (download)

man/io.3 | 4 2 + 2 - 0 !
1 file changed, 2 insertions(+), 2 deletions(-)

 [patch libaio 02/26] man: fix typos

0003 build Update .gitignore for the harness artifacts.patch | (download)

.gitignore | 5 5 + 0 - 0 !
1 file changed, 5 insertions(+)

 [patch libaio 03/26] build: update .gitignore for the harness
 artifacts

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0004 build Fix DESTDIR and pathname variables handling.patch | (download)

Makefile | 6 1 + 5 - 0 !
src/Makefile | 16 8 + 8 - 0 !
2 files changed, 9 insertions(+), 13 deletions(-)

 [patch libaio 04/26] build: fix destdir and pathname variables
 handling

The convention for DESTDIR is that it is only prefixed during the
install target. In this case we postpone that to the inner Makefile
so that it can be invoked directly while preserving the expected
semantics. We should also prefer the user specified pathname variables
if already set in any way, and do not need to pass them explicitly
to the sub-make.

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0005 build Honor user build flags.patch | (download)

harness/Makefile | 9 6 + 3 - 0 !
src/Makefile | 20 10 + 10 - 0 !
2 files changed, 16 insertions(+), 13 deletions(-)

 [patch libaio 05/26] build: honor user build flags
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

CPPFLAGS, CFLAGS and LDFLAGS are user flags, which we need to preserve,
regardless of the user passing them over the environment or the
command-line. Any required flag that the build system needs, has to be
set in some other flag (which we will namespace with MK_) so that the
build will use even if the user flags are passed, even though the user
should be able to override by appending after them. We pass CPPFLAGS to
any compilation command that missed them.

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0006 build Remove all test artifacts on clean.patch | (download)

harness/Makefile | 4 3 + 1 - 0 !
1 file changed, 3 insertions(+), 1 deletion(-)

 [patch libaio 06/26] build: remove all test artifacts on clean

We create these artifacts when running the test suite, so should remove
them when running the clean target.

Reported-by: Lucas Nussbaum <lucas@debian.org>
Signed-off-by: Guillem Jover <guillem@hadrons.org>

0007 Move semicolon to SYMVER and DEFSYMVER call sites.patch | (download)

src/io_cancel.c | 2 1 + 1 - 0 !
src/io_getevents.c | 2 1 + 1 - 0 !
src/io_queue_wait.c | 2 1 + 1 - 0 !
src/syscall.h | 4 2 + 2 - 0 !
4 files changed, 5 insertions(+), 5 deletions(-)

 [patch libaio 07/26] move semicolon to symver and defsymver call
 sites

These look like function macros, so let's unify their call sites to use
function syntax with a final semicolon.

0008 Use new symver function attribute to support LTO bui.patch | (download)

src/compat-0_1.c | 7 3 + 4 - 0 !
src/syscall.h | 13 13 + 0 - 0 !
2 files changed, 16 insertions(+), 4 deletions(-)

 [patch libaio 08/26] use new symver function attribute to support lto
 builds

The LTO support cannot work properly when there are versioned symbols
via asm statements, as those are not seen by the compiler. Use the new
function attributes if supported instead of the asm statements.

We need to move the SYMVER calls after the function definitions
otherwise it will reference symbols not yet seen.

0009 Remove unused vsys_def.h.patch | (download)

src/Makefile | 2 1 + 1 - 0 !
src/compat-0_1.c | 1 0 + 1 - 0 !
src/vsys_def.h | 24 0 + 24 - 0 !
3 files changed, 1 insertion(+), 26 deletions(-)

 [patch libaio 09/26] remove unused vsys_def.h

This was an old header to handle the syscalls, which is not used anymore
since commit 34c539fcb98c4397b9f04e93f8a475a9e445cf33.

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0010 Remove unused raw_syscall.c.patch | (download)

src/Makefile | 3 0 + 3 - 0 !
src/raw_syscall.c | 19 0 + 19 - 0 !
2 files changed, 22 deletions(-)

 [patch libaio 10/26] remove unused raw_syscall.c

The ia64_aio_raw_syscall assembler function was replaced by the
__ia64_raw_syscall in commit a4984400f1d40c3cd9353ee2d817271c0fa3b4bd.

The hand-crafted syscalls for all architectures then got removed
in commit 97fd3fc0195500e616e34047cba4846164c411d9.

This file has not actually been used for a while, so we can drop it.

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0011 Wrap long declarations exceeding 80 columns.patch | (download)

src/io_cancel.c | 3 2 + 1 - 0 !
src/io_getevents.c | 7 5 + 2 - 0 !
src/io_pgetevents.c | 4 2 + 2 - 0 !
src/io_submit.c | 3 2 + 1 - 0 !
src/libaio.h | 35 24 + 11 - 0 !
5 files changed, 35 insertions(+), 17 deletions(-)

 [patch libaio 11/26] wrap long declarations exceeding 80 columns

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0012 syscall Fix ARM definitions to match exactly the ker.patch | (download)

src/syscall-arm.h | 10 5 + 5 - 0 !
1 file changed, 5 insertions(+), 5 deletions(-)

 [patch libaio 12/26] syscall: fix arm definitions to match exactly
 the kernel

Otherwise we get preprocessor warnings due to the redefinitions.

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0013 syscall Fix ia64 definitions to match exactly the ke.patch | (download)

src/syscall-ia64.h | 11 6 + 5 - 0 !
1 file changed, 6 insertions(+), 5 deletions(-)

 [patch libaio 13/26] syscall: fix ia64 definitions to match exactly
 the kernel

Otherwise we get preprocessor warnings due to the redefinitions.

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0014 harness Add KERNEL_RW_POINTER for various 32 bit arc.patch | (download)

harness/main.c | 9 9 + 0 - 0 !
1 file changed, 9 insertions(+)

 [patch libaio 14/26] harness: add kernel_rw_pointer for various
 32-bit architectures

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0015 Fix and improve MIPS support.patch | (download)

harness/main.c | 2 1 + 1 - 0 !
src/libaio.h | 6 5 + 1 - 0 !
src/syscall-mips.h | 54 54 + 0 - 0 !
src/syscall.h | 2 2 + 0 - 0 !
4 files changed, 62 insertions(+), 2 deletions(-)

 [patch libaio 15/26] fix and improve mips support

Fix structure padding for MIPS 64, add syscall definitions, and the
kernel R/W pointer.

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0016 Add PARISC support.patch | (download)

harness/main.c | 2 2 + 0 - 0 !
src/libaio.h | 1 1 + 0 - 0 !
src/syscall-parisc.h | 5 5 + 0 - 0 !
src/syscall.h | 2 2 + 0 - 0 !
4 files changed, 10 insertions(+)

 [patch libaio 16/26] add parisc support

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0017 Add m68k support.patch | (download)

harness/main.c | 2 1 + 1 - 0 !
src/syscall-m68k.h | 5 5 + 0 - 0 !
src/syscall.h | 2 2 + 0 - 0 !
3 files changed, 8 insertions(+), 1 deletion(-)

 [patch libaio 17/26] add m68k support

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0018 Add SH support.patch | (download)

harness/main.c | 2 1 + 1 - 0 !
src/libaio.h | 3 2 + 1 - 0 !
src/syscall-sh.h | 6 6 + 0 - 0 !
src/syscall.h | 2 2 + 0 - 0 !
4 files changed, 11 insertions(+), 2 deletions(-)

 [patch libaio 18/26] add sh support

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0019 Add x32 support.patch | (download)

harness/main.c | 2 1 + 1 - 0 !
src/libaio.h | 4 3 + 1 - 0 !
src/syscall-x86_64.h | 10 10 + 0 - 0 !
3 files changed, 14 insertions(+), 2 deletions(-)

 [patch libaio 19/26] add x32 support

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0020 Rename sigset struct from data to aio_sigset.patch | (download)

src/io_pgetevents.c | 8 4 + 4 - 0 !
1 file changed, 4 insertions(+), 4 deletions(-)

 [patch libaio 20/26] rename sigset struct from data to aio_sigset

This makes the purpose more clear, and matches the naming in the aio
syscall implementation in Linux.

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0021 Add time64 syscall support.patch | (download)

src/Makefile | 1 1 + 0 - 0 !
src/aio_getevents.c | 26 18 + 8 - 0 !
src/aio_pgetevents.c | 50 39 + 11 - 0 !
src/aio_ring.h | 3 2 + 1 - 0 !
src/aio_time.h | 54 54 + 0 - 0 !
src/compat-0_1.c | 14 8 + 6 - 0 !
src/io_getevents.c | 15 7 + 8 - 0 !
src/io_pgetevents.c | 33 7 + 26 - 0 !
src/io_queue_run.c | 5 3 + 2 - 0 !
src/io_queue_wait.c | 8 7 + 1 - 0 !
10 files changed, 146 insertions(+), 63 deletions(-)

 [patch libaio 21/26] add time64 syscall support

This implements both io_getevents() and io_pgetevents() as wrappers over
the new aio_getevents() and aio_pgetevents() which use __kernel_timespec
as its timespec data type which should always be 64-bit. We add the
necessary conversion from __kernel_old_timespec or timsepec struct
types.

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0022 Add time64 public functions on 32 bit architectures.patch | (download)

harness/Makefile | 2 1 + 1 - 0 !
src/Makefile | 3 2 + 1 - 0 !
src/compat-0_1.c | 7 7 + 0 - 0 !
src/io_getevents.c | 7 7 + 0 - 0 !
src/io_getevents_time64.c | 14 7 + 7 - 0 !
src/io_pgetevents.c | 7 7 + 0 - 0 !
src/io_pgetevents_time64.c | 10 6 + 4 - 0 !
src/io_queue_wait.c | 7 7 + 0 - 0 !
src/libaio.h | 18 18 + 0 - 0 !
src/libaio.map | 6 6 + 0 - 0 !
10 files changed, 68 insertions(+), 13 deletions(-)

 [patch libaio 22/26] add time64 public functions on 32-bit
 architectures

This adds new time64 functions for io_getevents() and io_pgetevents()
that will get redirected when building with _TIME_BITS=64.

Ideally we should generate the .map file and not include these symbols
on 64-bit architectures, but this will do for now.

Signed-off-by: Guillem Jover <guillem@hadrons.org>

0023 Fix io_pgetevents syscall wrapper on 32 bit userland.patch | (download)

src/aio_pgetevents.c | 30 26 + 4 - 0 !
src/libaio.h | 10 10 + 0 - 0 !
2 files changed, 36 insertions(+), 4 deletions(-)

 [patch libaio 23/26] fix io_pgetevents() syscall wrapper on 32-bit
 userland on 64-bit kernels

The kernel compat syscall in the kernel got introduced with a broken
layout, which requires a pointer to the actual sigset_t variable but
with the size of the running kernel, not the size of the compat code.

This means that when the wrapper sends the expected compat (32-bit)
pointer, the kernel reads a 64-bit pointer, eating with it also the
sigset size member. And then proceeds to fail the comparison of the
sigset_t size and returns EINVAL.

This really needs to be fixed in the kernel, as there's no apparent
user of the broken compat layout (from codesearch.debian.org, nor a
quick github.com search). But we have to workaround it in libaio so
that we can use kernels that have not yet been fixed.

We do that, by trying the non-broken layout (that would be used with
a 32-bit userland on a 32-bit kernel), and if that fails with -EINVAL
we retry with a structure padded to what the kernel expects.

0024 Disable io_pgetevents_time64 as it is broken on 64 b.patch | (download)

src/aio_pgetevents.c | 9 9 + 0 - 0 !
1 file changed, 9 insertions(+)

 [patch libaio 24/26] disable io_pgetevents_time64 as it is broken on
 64-bit kernel 32-bit userland

On 64-bit kernels running 32-bit userland, this syscall misbehaves
when passing a sigmask by always returning -EINVAL. This works on 32-bit
kernels. The syscall entry point is possible wrong and needs to be fixed
in the kernel. For now disable as the code is handling clean 64-bit time_t
and the timeout is relative anyway.

Once this is fixed in the kernel, and after enough time has passed we
can decide whether to enable this.

0025 build Use a temporary SONAME bump to avoid stomping .patch | (download)

src/Makefile | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 [patch libaio 25/26] build: use a temporary soname bump to avoid
 stomping over upstream ABI

0026 harness Disable failing test 23.patch | (download)

harness/Makefile | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 [patch libaio 26/26] harness: disable failing test 23

This new test fails on several architectures. But it is a new test
intended to check for a Linux kernel regression, so we are not worse
off than were before. Add it to the EXTRACASES variables, which has
currently the side effect of disabling it, as it is not handled
explicitly in the make target responsible for that variable.

This is probably not needed anymore with the off64_t fix in upstream,
but let's not try to revert this now while the time64 transition is
ongoing.

0001 harness Hardcode list of ports that cannot check PRO.patch | (download)

harness/cases/5.t | 9 8 + 1 - 0 !
1 file changed, 8 insertions(+), 1 deletion(-)

 [patch libaio] harness: hardcode list of ports that cannot check
 PROT_WRITE is readable

On these ports, the write() check does not work, so we need to hardcode
the list.