[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 00/20] linux-user: Implement VDSOs
From: |
Richard Henderson |
Subject: |
[PATCH v5 00/20] linux-user: Implement VDSOs |
Date: |
Tue, 29 Aug 2023 15:02:08 -0700 |
Changes for v5:
* Integrated cross-compile, via new build-vdso.sh and meson rules.
However, keep the binaries in the tree for hosts which do not
have all of the cross-compile machinery.
* Update our loongarch64 docker image to avoid a binutils bug.
Changes for v4:
* Force all vdso to have a single load segment.
This will prevent problems with varying host/guest page size.
* Tidy some of the assembly with macros.
* Implement loongarch, ppc, s390x.
Just in case the list eats a binary:
https://gitlab.com/rth7680/qemu/-/tree/lu-vdso
r~
Richard Henderson (20):
tests/docker: Update docker-loongarch-cross toolchain
linux-user: Introduce imgsrc_read, imgsrc_read_alloc
linux-user: Tidy loader_exec
linux-user: Do not clobber bprm_buf swapping ehdr
linux-user: Use ImageSource in load_elf_image
linux-user: Use ImageSource in load_symbols
linux-user: Replace bprm->fd with bprm->src.fd
linux-user: Load vdso image if available
linux-user: Add gen-vdso tool
linux-user: Add build-vdso.sh tool
linux-user/i386: Add vdso
linux-user/x86_64: Add vdso
linux-user/aarch64: Add vdso
linux-user/arm: Add vdso
linux-user/hppa: Add vdso
linux-user/riscv: Add vdso
linux-user/loongarch64: Add vdso
linux-user/ppc: Add vdso
linux-user/s390x: Rename __SIGNAL_FRAMESIZE to STACK_FRAME_OVERHEAD
linux-user/s390x: Add vdso
linux-user/hppa/vdso-asmoffset.h | 12 +
linux-user/i386/vdso-asmoffset.h | 6 +
linux-user/loader.h | 60 ++-
linux-user/loongarch64/vdso-asmoffset.h | 8 +
linux-user/ppc/vdso-asmoffset.h | 20 +
linux-user/riscv/vdso-asmoffset.h | 9 +
linux-user/s390x/vdso-asmoffset.h | 2 +
linux-user/arm/signal.c | 28 +-
linux-user/elfload.c | 361 +++++++++++-------
linux-user/flatload.c | 8 +-
linux-user/gen-vdso.c | 223 +++++++++++
linux-user/hppa/signal.c | 24 +-
linux-user/i386/signal.c | 11 +
linux-user/linuxload.c | 137 +++++--
linux-user/loongarch64/signal.c | 17 +-
linux-user/ppc/signal.c | 31 +-
linux-user/riscv/signal.c | 8 +
linux-user/s390x/signal.c | 7 +-
linux-user/gen-vdso-elfn.c.inc | 314 +++++++++++++++
linux-user/aarch64/meson.build | 33 ++
linux-user/aarch64/vdso-be.so | Bin 0 -> 3216 bytes
linux-user/aarch64/vdso-le.so | Bin 0 -> 3216 bytes
linux-user/aarch64/vdso.S | 73 ++++
linux-user/aarch64/vdso.ld | 72 ++++
linux-user/arm/meson.build | 35 ++
linux-user/arm/vdso-be.so | Bin 0 -> 2680 bytes
linux-user/arm/vdso-le.so | Bin 0 -> 2680 bytes
linux-user/arm/vdso.S | 177 +++++++++
linux-user/arm/vdso.ld | 67 ++++
linux-user/build-vdso.sh | 31 ++
linux-user/hppa/meson.build | 23 ++
linux-user/hppa/vdso.S | 165 ++++++++
linux-user/hppa/vdso.ld | 77 ++++
linux-user/hppa/vdso.so | Bin 0 -> 2104 bytes
linux-user/i386/meson.build | 24 ++
linux-user/i386/vdso.S | 143 +++++++
linux-user/i386/vdso.ld | 76 ++++
linux-user/i386/vdso.so | Bin 0 -> 2672 bytes
linux-user/loongarch64/meson.build | 21 +
linux-user/loongarch64/vdso.S | 130 +++++++
linux-user/loongarch64/vdso.ld | 73 ++++
linux-user/loongarch64/vdso.so | Bin 0 -> 3560 bytes
linux-user/meson.build | 10 +-
linux-user/ppc/Makefile.vdso | 18 +
linux-user/ppc/meson.build | 12 +
linux-user/ppc/vdso-32.ld | 70 ++++
linux-user/ppc/vdso-32.so | Bin 0 -> 3020 bytes
linux-user/ppc/vdso-64.ld | 68 ++++
linux-user/ppc/vdso-64.so | Bin 0 -> 3896 bytes
linux-user/ppc/vdso-64le.so | Bin 0 -> 3896 bytes
linux-user/ppc/vdso.S | 239 ++++++++++++
linux-user/riscv/meson.build | 30 ++
linux-user/riscv/vdso-32.so | Bin 0 -> 2888 bytes
linux-user/riscv/vdso-64.so | Bin 0 -> 3840 bytes
linux-user/riscv/vdso.S | 186 +++++++++
linux-user/riscv/vdso.ld | 74 ++++
linux-user/s390x/meson.build | 24 ++
linux-user/s390x/vdso.S | 61 +++
linux-user/s390x/vdso.ld | 69 ++++
linux-user/s390x/vdso.so | Bin 0 -> 3464 bytes
linux-user/x86_64/meson.build | 20 +
linux-user/x86_64/vdso.S | 78 ++++
linux-user/x86_64/vdso.ld | 73 ++++
linux-user/x86_64/vdso.so | Bin 0 -> 2968 bytes
.../dockerfiles/debian-loongarch-cross.docker | 2 +-
65 files changed, 3329 insertions(+), 211 deletions(-)
create mode 100644 linux-user/hppa/vdso-asmoffset.h
create mode 100644 linux-user/i386/vdso-asmoffset.h
create mode 100644 linux-user/loongarch64/vdso-asmoffset.h
create mode 100644 linux-user/ppc/vdso-asmoffset.h
create mode 100644 linux-user/riscv/vdso-asmoffset.h
create mode 100644 linux-user/s390x/vdso-asmoffset.h
create mode 100644 linux-user/gen-vdso.c
create mode 100644 linux-user/gen-vdso-elfn.c.inc
create mode 100644 linux-user/aarch64/meson.build
create mode 100755 linux-user/aarch64/vdso-be.so
create mode 100755 linux-user/aarch64/vdso-le.so
create mode 100644 linux-user/aarch64/vdso.S
create mode 100644 linux-user/aarch64/vdso.ld
create mode 100755 linux-user/arm/vdso-be.so
create mode 100755 linux-user/arm/vdso-le.so
create mode 100644 linux-user/arm/vdso.S
create mode 100644 linux-user/arm/vdso.ld
create mode 100755 linux-user/build-vdso.sh
create mode 100644 linux-user/hppa/vdso.S
create mode 100644 linux-user/hppa/vdso.ld
create mode 100755 linux-user/hppa/vdso.so
create mode 100644 linux-user/i386/vdso.S
create mode 100644 linux-user/i386/vdso.ld
create mode 100755 linux-user/i386/vdso.so
create mode 100644 linux-user/loongarch64/meson.build
create mode 100644 linux-user/loongarch64/vdso.S
create mode 100644 linux-user/loongarch64/vdso.ld
create mode 100755 linux-user/loongarch64/vdso.so
create mode 100644 linux-user/ppc/Makefile.vdso
create mode 100644 linux-user/ppc/vdso-32.ld
create mode 100755 linux-user/ppc/vdso-32.so
create mode 100644 linux-user/ppc/vdso-64.ld
create mode 100755 linux-user/ppc/vdso-64.so
create mode 100755 linux-user/ppc/vdso-64le.so
create mode 100644 linux-user/ppc/vdso.S
create mode 100644 linux-user/riscv/meson.build
create mode 100755 linux-user/riscv/vdso-32.so
create mode 100755 linux-user/riscv/vdso-64.so
create mode 100644 linux-user/riscv/vdso.S
create mode 100644 linux-user/riscv/vdso.ld
create mode 100644 linux-user/s390x/vdso.S
create mode 100644 linux-user/s390x/vdso.ld
create mode 100755 linux-user/s390x/vdso.so
create mode 100644 linux-user/x86_64/vdso.S
create mode 100644 linux-user/x86_64/vdso.ld
create mode 100755 linux-user/x86_64/vdso.so
--
2.34.1
- [PATCH v5 00/20] linux-user: Implement VDSOs,
Richard Henderson <=
- [PATCH v5 13/20] linux-user/aarch64: Add vdso, Richard Henderson, 2023/08/29
- [PATCH v5 11/20] linux-user/i386: Add vdso, Richard Henderson, 2023/08/29
- [PATCH v5 14/20] linux-user/arm: Add vdso, Richard Henderson, 2023/08/29
- [PATCH v5 04/20] linux-user: Do not clobber bprm_buf swapping ehdr, Richard Henderson, 2023/08/29
- [PATCH v5 16/20] linux-user/riscv: Add vdso, Richard Henderson, 2023/08/29
- [PATCH v5 01/20] tests/docker: Update docker-loongarch-cross toolchain, Richard Henderson, 2023/08/29
- [PATCH v5 03/20] linux-user: Tidy loader_exec, Richard Henderson, 2023/08/29
- [PATCH v5 17/20] linux-user/loongarch64: Add vdso, Richard Henderson, 2023/08/29
- [PATCH v5 06/20] linux-user: Use ImageSource in load_symbols, Richard Henderson, 2023/08/29