From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: alex.bennee@linaro.org, laurent@vivier.eu
Subject: [PATCH v5 00/20] linux-user: Implement VDSOs
Date: Tue, 29 Aug 2023 15:02:08 -0700 [thread overview]
Message-ID: <20230829220228.928506-1-richard.henderson@linaro.org> (raw)
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
next reply other threads:[~2023-08-29 23:10 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-29 22:02 Richard Henderson [this message]
2023-08-29 22:02 ` [PATCH v5 01/20] tests/docker: Update docker-loongarch-cross toolchain Richard Henderson
2023-08-30 9:43 ` gaosong
2023-09-04 14:02 ` Alex Bennée
2023-09-04 23:08 ` Richard Henderson
2023-09-05 9:23 ` Alex Bennée
2023-08-29 22:02 ` [PATCH v5 02/20] linux-user: Introduce imgsrc_read, imgsrc_read_alloc Richard Henderson
2023-09-04 14:27 ` Alex Bennée
2023-08-29 22:02 ` [PATCH v5 03/20] linux-user: Tidy loader_exec Richard Henderson
2023-09-04 14:54 ` Alex Bennée
2023-08-29 22:02 ` [PATCH v5 04/20] linux-user: Do not clobber bprm_buf swapping ehdr Richard Henderson
2023-09-04 14:58 ` Alex Bennée
2023-08-29 22:02 ` [PATCH v5 05/20] linux-user: Use ImageSource in load_elf_image Richard Henderson
2023-08-29 22:02 ` [PATCH v5 06/20] linux-user: Use ImageSource in load_symbols Richard Henderson
2023-08-29 22:02 ` [PATCH v5 07/20] linux-user: Replace bprm->fd with bprm->src.fd Richard Henderson
2023-08-29 22:02 ` [PATCH v5 08/20] linux-user: Load vdso image if available Richard Henderson
2023-08-30 14:22 ` Philippe Mathieu-Daudé
2023-08-30 16:17 ` Richard Henderson
2023-08-30 20:56 ` Philippe Mathieu-Daudé
2023-08-30 22:08 ` Richard Henderson
2023-08-29 22:02 ` [PATCH v5 09/20] linux-user: Add gen-vdso tool Richard Henderson
2023-08-29 22:02 ` [PATCH v5 10/20] linux-user: Add build-vdso.sh tool Richard Henderson
2023-08-29 22:02 ` [PATCH v5 11/20] linux-user/i386: Add vdso Richard Henderson
2023-08-29 22:02 ` [PATCH v5 12/20] linux-user/x86_64: " Richard Henderson
2023-08-29 22:02 ` [PATCH v5 13/20] linux-user/aarch64: " Richard Henderson
2023-08-29 22:02 ` [PATCH v5 14/20] linux-user/arm: " Richard Henderson
2023-08-29 22:02 ` [PATCH v5 15/20] linux-user/hppa: " Richard Henderson
2023-08-29 22:02 ` [PATCH v5 16/20] linux-user/riscv: " Richard Henderson
2023-09-19 4:47 ` Alistair Francis
2023-08-29 22:02 ` [PATCH v5 17/20] linux-user/loongarch64: " Richard Henderson
2023-08-29 22:02 ` [PATCH v5 18/20] linux-user/ppc: " Richard Henderson
2023-08-29 22:02 ` [PATCH v5 19/20] linux-user/s390x: Rename __SIGNAL_FRAMESIZE to STACK_FRAME_OVERHEAD Richard Henderson
2023-08-30 14:14 ` Philippe Mathieu-Daudé
2023-08-29 22:02 ` [PATCH v5 20/20] linux-user/s390x: Add vdso Richard Henderson
2023-09-04 15:00 ` Alex Bennée
2023-09-06 17:56 ` Richard Henderson
2023-09-07 6:17 ` Philippe Mathieu-Daudé
2023-09-07 9:20 ` Alex Bennée
2023-08-30 14:52 ` [PATCH v5 00/20] linux-user: Implement VDSOs Helge Deller
2023-08-30 16:20 ` Richard Henderson
2023-08-31 7:57 ` Alex Bennée
2023-09-01 14:21 ` Helge Deller
2023-09-04 12:51 ` Alex Bennée
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230829220228.928506-1-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=alex.bennee@linaro.org \
--cc=laurent@vivier.eu \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).