summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2023-08-16 10:54:57 -0700
committerRichard Henderson <richard.henderson@linaro.org>2023-10-30 13:41:56 -0700
commit5d94c2ffa813d07678c59dea516be5153f85cb2f (patch)
treed58163c11712fa6a351a9d19826383c9efd01f27
parentb63c6b97f8f5d357f383d8227316733c758c7ddd (diff)
downloadfocaccia-qemu-5d94c2ffa813d07678c59dea516be5153f85cb2f.tar.gz
focaccia-qemu-5d94c2ffa813d07678c59dea516be5153f85cb2f.zip
linux-user: Show vdso address in /proc/pid/maps
Tested-by: Helge Deller <deller@gmx.de>
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
-rw-r--r--linux-user/elfload.c1
-rw-r--r--linux-user/qemu.h1
-rw-r--r--linux-user/syscall.c2
3 files changed, 4 insertions, 0 deletions
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index a1583883fa..46832358b0 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -3919,6 +3919,7 @@ int load_elf_binary(struct linux_binprm *bprm, struct image_info *info)
     const VdsoImageInfo *vdso = vdso_image_info();
     if (vdso) {
         load_elf_vdso(&vdso_info, vdso);
+        info->vdso = vdso_info.load_bias;
     } else if (TARGET_ARCH_HAS_SIGTRAMP_PAGE) {
         abi_long tramp_page = target_mmap(0, TARGET_PAGE_SIZE,
                                           PROT_READ | PROT_WRITE,
diff --git a/linux-user/qemu.h b/linux-user/qemu.h
index 12f638336a..4de9ec783f 100644
--- a/linux-user/qemu.h
+++ b/linux-user/qemu.h
@@ -32,6 +32,7 @@ struct image_info {
         abi_ulong       brk;
         abi_ulong       start_stack;
         abi_ulong       stack_limit;
+        abi_ulong       vdso;
         abi_ulong       entry;
         abi_ulong       code_offset;
         abi_ulong       data_offset;
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index d49cd314a2..65ac3ac796 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -7992,6 +7992,8 @@ static void open_self_maps_4(const struct open_self_maps_data *d,
         path = "[stack]";
     } else if (start == info->brk) {
         path = "[heap]";
+    } else if (start == info->vdso) {
+        path = "[vdso]";
     }
 
     /* Except null device (MAP_ANON), adjust offset for this fragment. */