[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 00/15] linux-user: Implement VDSOs
From: |
Richard Henderson |
Subject: |
[PATCH v3 00/15] linux-user: Implement VDSOs |
Date: |
Fri, 11 Aug 2023 09:50:37 -0700 |
It's time for another round on implementing the VDSO for linux-user.
We are now seeing applications built that absolutely require it,
and have no fallback for the VDSO to be absent.
For instance,
https://gitlab.com/qemu-project/qemu/-/issues/1267
uses musl and will currently branch to NULL executing the mmap
syscall, because the __kernel_vsyscall symbol is not found.
This is just a rebase of v2 from 2021:
https://lists.nongnu.org/archive/html/qemu-devel/2021-07/msg01311.html
and does nothing to address the cross-compilation issues.
I am more hopful that cross-compilation can be solved now, due
to the work on Native Library Calls:
20230808141739.3110740-1-fufuyqqqqqq@gmail.com/">https://patchew.org/QEMU/20230808141739.3110740-1-fufuyqqqqqq@gmail.com/
But frankly, even with cross-compilation enabled there will be
hosts which do not have the cross-compilers and I believe we will
still have to check the binaries into the repository. As they are
all on the order of 5 to 6k, I really do not see this as a problem.
r~
PS: This patch set is now 13 years old:
https://lists.nongnu.org/archive/html/qemu-devel/2010-04/msg00187.html
https://lists.gnu.org/archive/html/qemu-devel/2013-07/msg04036.html
Let's see if we can get this resolved before it can vote.
Richard Henderson (15):
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/aarch64: Add vdso and use it for rt_sigreturn
target/arm: Add isar_feature_aa32_a32
linux-user/arm: Add vdso and use it for rt_sigreturn
linux-user/hppa: Add vdso and use it for rt_sigreturn
linux-user/i386: Add vdso and use it for sigreturn
linux-user/x86_64: Add vdso
linux-user/riscv: Add vdso and use it for sigreturn
linux-user/loader.h | 60 ++++-
target/arm/cpu.h | 5 +
linux-user/arm/signal.c | 30 ++-
linux-user/elfload.c | 365 ++++++++++++++++++++-----------
linux-user/flatload.c | 8 +-
linux-user/gen-vdso.c | 223 +++++++++++++++++++
linux-user/hppa/signal.c | 1 -
linux-user/linuxload.c | 137 ++++++++++--
target/arm/tcg/cpu32.c | 7 +
linux-user/gen-vdso-elfn.c.inc | 306 ++++++++++++++++++++++++++
linux-user/aarch64/Makefile.vdso | 11 +
linux-user/aarch64/meson.build | 11 +
linux-user/aarch64/vdso-be.so | Bin 0 -> 6000 bytes
linux-user/aarch64/vdso-le.so | Bin 0 -> 6000 bytes
linux-user/aarch64/vdso.S | 77 +++++++
linux-user/aarch64/vdso.ld | 74 +++++++
linux-user/arm/Makefile.vdso | 17 ++
linux-user/arm/meson.build | 18 ++
linux-user/arm/vdso-arm-be.so | Bin 0 -> 5648 bytes
linux-user/arm/vdso-arm-le.so | Bin 0 -> 5648 bytes
linux-user/arm/vdso-thm-be.so | Bin 0 -> 5620 bytes
linux-user/arm/vdso-thm-le.so | Bin 0 -> 5620 bytes
linux-user/arm/vdso.S | 209 ++++++++++++++++++
linux-user/arm/vdso.ld | 74 +++++++
linux-user/hppa/Makefile.vdso | 6 +
linux-user/hppa/meson.build | 6 +
linux-user/hppa/vdso.S | 149 +++++++++++++
linux-user/hppa/vdso.ld | 75 +++++++
linux-user/hppa/vdso.so | Bin 0 -> 5196 bytes
linux-user/i386/Makefile.vdso | 5 +
linux-user/i386/meson.build | 7 +
linux-user/i386/vdso.S | 181 +++++++++++++++
linux-user/i386/vdso.ld | 76 +++++++
linux-user/i386/vdso.so | Bin 0 -> 5528 bytes
linux-user/meson.build | 8 +-
linux-user/riscv/Makefile.vdso | 11 +
linux-user/riscv/meson.build | 9 +
linux-user/riscv/vdso-32.so | Bin 0 -> 5624 bytes
linux-user/riscv/vdso-64.so | Bin 0 -> 6120 bytes
linux-user/riscv/vdso.S | 207 ++++++++++++++++++
linux-user/riscv/vdso.ld | 76 +++++++
linux-user/x86_64/Makefile.vdso | 5 +
linux-user/x86_64/meson.build | 6 +
linux-user/x86_64/vdso.S | 122 +++++++++++
linux-user/x86_64/vdso.ld | 74 +++++++
linux-user/x86_64/vdso.so | Bin 0 -> 6008 bytes
46 files changed, 2467 insertions(+), 189 deletions(-)
create mode 100644 linux-user/gen-vdso.c
create mode 100644 linux-user/gen-vdso-elfn.c.inc
create mode 100644 linux-user/aarch64/Makefile.vdso
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 100644 linux-user/arm/Makefile.vdso
create mode 100755 linux-user/arm/vdso-arm-be.so
create mode 100755 linux-user/arm/vdso-arm-le.so
create mode 100755 linux-user/arm/vdso-thm-be.so
create mode 100755 linux-user/arm/vdso-thm-le.so
create mode 100644 linux-user/arm/vdso.S
create mode 100644 linux-user/arm/vdso.ld
create mode 100644 linux-user/hppa/Makefile.vdso
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/Makefile.vdso
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/riscv/Makefile.vdso
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/x86_64/Makefile.vdso
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 v3 00/15] linux-user: Implement VDSOs,
Richard Henderson <=
- [PATCH v3 01/15] linux-user: Introduce imgsrc_read, imgsrc_read_alloc, Richard Henderson, 2023/08/11
- [PATCH v3 02/15] linux-user: Tidy loader_exec, Richard Henderson, 2023/08/11
- [PATCH v3 03/15] linux-user: Do not clobber bprm_buf swapping ehdr, Richard Henderson, 2023/08/11
- [PATCH v3 05/15] linux-user: Use ImageSource in load_symbols, Richard Henderson, 2023/08/11
- [PATCH v3 07/15] linux-user: Load vdso image if available, Richard Henderson, 2023/08/11
- [PATCH v3 06/15] linux-user: Replace bprm->fd with bprm->src.fd, Richard Henderson, 2023/08/11
- [PATCH v3 04/15] linux-user: Use ImageSource in load_elf_image, Richard Henderson, 2023/08/11
- [PATCH v3 12/15] linux-user/hppa: Add vdso and use it for rt_sigreturn, Richard Henderson, 2023/08/11
- [PATCH v3 08/15] linux-user: Add gen-vdso tool, Richard Henderson, 2023/08/11
- [PATCH v3 09/15] linux-user/aarch64: Add vdso and use it for rt_sigreturn, Richard Henderson, 2023/08/11