[PATCH 0/6] linux-user: Rewrite open_self_maps

Richard Henderson posted 6 patches 9 months ago
Failed in applying to current master (apply log)
Maintainers: Laurent Vivier <laurent@vivier.eu>
include/qemu/selfmap.h |   4 +-
linux-user/qemu.h      |   2 +-
linux-user/elfload.c   |  41 +--------
linux-user/syscall.c   | 194 +++++++++++++++++++++++++----------------
util/selfmap.c         |  12 +--
5 files changed, 131 insertions(+), 122 deletions(-)
[PATCH 0/6] linux-user: Rewrite open_self_maps
Posted by Richard Henderson 9 months ago
Based-on: 20230816180338.572576-1-richard.henderson@linaro.org
("[PATCH v4 00/18] linux-user: Implement VDSOs")

As promised, a rewrite of /proc/self/{maps,smaps} emulation
using interval trees.

Incorporate Helge's change to mark [heap], and also mark [vdso].


r~


Richard Henderson (6):
  util/selfmap: Use dev_t and ino_t in MapInfo
  linux-user: Use walk_memory_regions for open_self_maps
  linux-user: Adjust brk for load_bias
  linux-user: Show heap address in /proc/pid/maps
  linux-user: Remove ELF_START_MMAP and image_info.start_mmap
  linux-user: Show vdso address in /proc/pid/maps

 include/qemu/selfmap.h |   4 +-
 linux-user/qemu.h      |   2 +-
 linux-user/elfload.c   |  41 +--------
 linux-user/syscall.c   | 194 +++++++++++++++++++++++++----------------
 util/selfmap.c         |  12 +--
 5 files changed, 131 insertions(+), 122 deletions(-)

-- 
2.34.1
Re: [PATCH 0/6] linux-user: Rewrite open_self_maps
Posted by Ilya Leoshkevich 9 months ago
On Wed, Aug 16, 2023 at 11:14:31AM -0700, Richard Henderson wrote:
> Based-on: 20230816180338.572576-1-richard.henderson@linaro.org
> ("[PATCH v4 00/18] linux-user: Implement VDSOs")
> 
> As promised, a rewrite of /proc/self/{maps,smaps} emulation
> using interval trees.
> 
> Incorporate Helge's change to mark [heap], and also mark [vdso].
> 
> 
> r~
> 
> 
> Richard Henderson (6):
>   util/selfmap: Use dev_t and ino_t in MapInfo
>   linux-user: Use walk_memory_regions for open_self_maps
>   linux-user: Adjust brk for load_bias
>   linux-user: Show heap address in /proc/pid/maps
>   linux-user: Remove ELF_START_MMAP and image_info.start_mmap
>   linux-user: Show vdso address in /proc/pid/maps
> 
>  include/qemu/selfmap.h |   4 +-
>  linux-user/qemu.h      |   2 +-
>  linux-user/elfload.c   |  41 +--------
>  linux-user/syscall.c   | 194 +++++++++++++++++++++++++----------------
>  util/selfmap.c         |  12 +--
>  5 files changed, 131 insertions(+), 122 deletions(-)
> 
> -- 
> 2.34.1

As expected, this improved the situation with mappings on ppc64le.
Handling the errors from read_self_maps() is also a nice addition.

Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com>
Re: [PATCH 0/6] linux-user: Rewrite open_self_maps
Posted by Helge Deller 9 months ago
Hi Richard,

On 8/16/23 20:14, Richard Henderson wrote:
> Based-on: 20230816180338.572576-1-richard.henderson@linaro.org
> ("[PATCH v4 00/18] linux-user: Implement VDSOs")
>
> As promised, a rewrite of /proc/self/{maps,smaps} emulation
> using interval trees.
>
> Incorporate Helge's change to mark [heap], and also mark [vdso].

Series looks good, so you may add

Tested-by: Helge Deller <deller@gmx.de>

to this series and the previous one (linux-user: Implement VDSOs).


The only thing I noticed is, that mips64el doesn't seem to have heap?

mips64el-chroot
Linux p100 6.4.10-200.fc38.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Aug 11 12:20:29 UTC 2023 mips64 GNU/Linux
555555556000-555555557000 ---p 00000000 00:00 0
555555557000-555555d57000 rwxp 00000000 00:00 0                          [stack]
555555d57000-555555d84000 r-xp 00000000 fd:00 806056                     /usr/lib/mips64el-linux-gnuabi64/ld.so.1
555555d84000-555555d96000 ---p 00000000 00:00 0
555555d96000-555555d97000 r--p 0002f000 fd:00 806056                     /usr/lib/mips64el-linux-gnuabi64/ld.so.1
555555d97000-555555d99000 rw-p 00030000 fd:00 806056                     /usr/lib/mips64el-linux-gnuabi64/ld.so.1
555555d99000-555555d9a000 r-xp 00000000 00:00 0
555555d9a000-555555d9c000 rw-p 00000000 00:00 0
555555da0000-555555f8a000 r-xp 00000000 fd:00 806059                     /usr/lib/mips64el-linux-gnuabi64/libc.so.6
555555f8a000-555555f9a000 ---p 001ea000 fd:00 806059                     /usr/lib/mips64el-linux-gnuabi64/libc.so.6
555555f9a000-555555fa0000 r--p 001ea000 fd:00 806059                     /usr/lib/mips64el-linux-gnuabi64/libc.so.6
555555fa0000-555555fa5000 rw-p 001f0000 fd:00 806059                     /usr/lib/mips64el-linux-gnuabi64/libc.so.6
555555fa5000-555555fb2000 rw-p 00000000 00:00 0
555555fbe000-5555560c0000 rw-p 00000000 00:00 0
7f9bc9987000-7f9bc9992000 r-xp 00000000 fd:00 811277                     /usr/bin/cat
7f9bc9992000-7f9bc99a6000 ---p 00000000 00:00 0
7f9bc99a6000-7f9bc99a7000 r--p 0000f000 fd:00 811277                     /usr/bin/cat
7f9bc99a7000-7f9bc99a8000 rw-p 00010000 fd:00 811277                     /usr/bin/cat

Helge