qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/15] linux-user: Implement VDSOs
@ 2023-08-11 16:50 Richard Henderson
  2023-08-11 16:50 ` [PATCH v3 01/15] linux-user: Introduce imgsrc_read, imgsrc_read_alloc Richard Henderson
                   ` (15 more replies)
  0 siblings, 16 replies; 18+ messages in thread
From: Richard Henderson @ 2023-08-11 16:50 UTC (permalink / raw)
  To: qemu-devel; +Cc: alex.bennee, pbonzini, philmd

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:

  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



^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2023-08-16 18:06 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-11 16:50 [PATCH v3 00/15] linux-user: Implement VDSOs Richard Henderson
2023-08-11 16:50 ` [PATCH v3 01/15] linux-user: Introduce imgsrc_read, imgsrc_read_alloc Richard Henderson
2023-08-11 16:50 ` [PATCH v3 02/15] linux-user: Tidy loader_exec Richard Henderson
2023-08-11 16:50 ` [PATCH v3 03/15] linux-user: Do not clobber bprm_buf swapping ehdr Richard Henderson
2023-08-11 16:50 ` [PATCH v3 04/15] linux-user: Use ImageSource in load_elf_image Richard Henderson
2023-08-11 16:50 ` [PATCH v3 05/15] linux-user: Use ImageSource in load_symbols Richard Henderson
2023-08-11 16:50 ` [PATCH v3 06/15] linux-user: Replace bprm->fd with bprm->src.fd Richard Henderson
2023-08-11 16:50 ` [PATCH v3 07/15] linux-user: Load vdso image if available Richard Henderson
2023-08-11 16:50 ` [PATCH v3 08/15] linux-user: Add gen-vdso tool Richard Henderson
2023-08-11 16:50 ` [PATCH v3 09/15] linux-user/aarch64: Add vdso and use it for rt_sigreturn Richard Henderson
2023-08-11 16:50 ` [PATCH v3 10/15] target/arm: Add isar_feature_aa32_a32 Richard Henderson
2023-08-11 16:50 ` [PATCH v3 11/15] linux-user/arm: Add vdso and use it for rt_sigreturn Richard Henderson
2023-08-11 16:50 ` [PATCH v3 12/15] linux-user/hppa: " Richard Henderson
2023-08-11 16:50 ` [PATCH v3 13/15] linux-user/i386: Add vdso and use it for sigreturn Richard Henderson
2023-08-11 16:50 ` [PATCH v3 14/15] linux-user/x86_64: Add vdso Richard Henderson
2023-08-11 16:50 ` [PATCH v3 15/15] linux-user/riscv: Add vdso and use it for sigreturn Richard Henderson
2023-08-14  9:52 ` [PATCH v3 00/15] linux-user: Implement VDSOs Alex Bennée
2023-08-16 18:06   ` Richard Henderson

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).