Hi, Richard
在 2023/8/17 上午2:03, Richard Henderson 写道:
@@ -3629,10 +3694,13 @@ int load_elf_binary(struct linux_binprm *bprm, struct image_info
*info)
}
/*
- * TODO: load a vdso, which would also contain the signal trampolines.
- * Otherwise, allocate a private page to hold them.
+ * Load a vdso if available, which will amongst other things contain the
+ * signal trampolines. Otherwise, allocate a separate page for them.
*/
- if (TARGET_ARCH_HAS_SIGTRAMP_PAGE) {
+ const VdsoImageInfo *vdso = vdso_image_info();
+ if (vdso) {
+ load_elf_vdso(&vdso_info, vdso);
+ } else if (TARGET_ARCH_HAS_SIGTRAMP_PAGE) {
I see some targets already support vdso.
./linux-user/aarch64/vdso-be.so
./linux-user/aarch64/vdso-le.so
./linux-user/arm/vdso-arm-be.so
./linux-user/arm/vdso-arm-le.so
./linux-user/arm/vdso-thm-be.so
./linux-user/arm/vdso-thm-le.so
./linux-user/hppa/vdso.so
./linux-user/i386/vdso.so
./linux-user/loongarch64/vdso.so
./linux-user/ppc/vdso-32.so
./linux-user/ppc/vdso-64.so
./linux-user/ppc/vdso-64le.so
./linux-user/riscv/vdso-32.so
./linux-user/riscv/vdso-64.so
./linux-user/s390x/vdso.so
./linux-user/x86_64/vdso.so
This branch will never reach.
what about remove TARGET_ARCH_HAS_SIGTRAMP_PAGE and setup_sigtramp() for these
targets?