qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] linux-user: /proc/self/maps content


From: Mikhail Ilin
Subject: Re: [Qemu-devel] [PATCH] linux-user: /proc/self/maps content
Date: Tue, 05 Aug 2014 17:24:27 +0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0

Thanks,

I've tested the sample for Aarch64 myself and found that the
approach should also work fine.

Translation layout:

$ qemu-aarch64 -strace /tmp/busybox-static cat /proc/self/maps

start            end              size             prot
0000000000400000-00000000005ba000 00000000001ba000 r-x
00000000005c9000-00000000005d3000 000000000000a000 rw-
0000004000000000-0000004000001000 0000000000001000 ---
0000004000001000-0000004000801000 0000000000800000 rw-

/proc/self/maps output:

00400000-005ba000 r-xp 00000000 08:01 28837016 /tmp/busybox-static
005ba000-005c9000 ---p 00000000 00:00 0
005c9000-005cc000 rw-p 001b9000 08:01 28837016  /tmp/busybox-static
005cc000-005f4000 rw-p 00000000 00:00 0
60000000-602eb000 r-xp 00000000 08:01 55578769 /home/michail/my1/bin/qemu-aarch64 604eb000-604f6000 rw-p 002eb000 08:01 55578769 /home/michail/my1/bin/qemu-aarch64
604f6000-6054a000 rw-p 00000000 00:00 0
6054a000-6254b000 rwxp 00000000 00:00 0
6254b000-62577000 rw-p 00000000 00:00 0
63396000-633da000 rw-p 00000000 00:00 0  [heap]
4000000000-4000001000 ---p 00000000 00:00 0
4000001000-4000801000 rw-p 00000000 00:00 0
7ff830cab000-7ff8348fb000 rw-p 00000000 00:00 0
7fffb26ed000-7fffb270e000 rw-p 00000000 00:00 0  [stack]
7fffb27bb000-7fffb27bd000 r-xp 00000000 00:00 0  [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0  [vsyscall]

And the reason why it doesn't work for Aarch64 is openat call which is
used instead of open.

$ qemu-aarch64 -strace /tmp/busybox-static cat /proc/self/maps

483 setgid(1000,0,47,45,0,274886296116) = 0
483 setuid(1000,0,47,45,0,274886296116) = 0
483 openat(AT_FDCWD,"/proc/self/maps",O_RDONLY) = 3
483 read(3,0x7febf0,4096) = 1071

this call doesn't have additional preprocessing and called directly.

   case TARGET_NR_openat:
        if (!(p = lock_user_string(arg2)))
            goto efault;
        ret = get_errno(sys_openat(arg1,
                                   path(p),
target_to_host_bitmask(arg3, fcntl_flags_tbl),
                                   arg4));

I believe OpenRISC case looks the same.


On 05.08.2014 15:47, Riku Voipio wrote:
Hi,

On Tue, Aug 05, 2014 at 03:10:07PM +0400, Mikhail Ilyin wrote:
Build /proc/self/maps doing a match against guest memory translation table.
Output only that map records which are valid for guest memory layout.

This is clear improvement, for most archs. But seems aarch64, openrisc still
leak host maps. It's not a regression, same issue before the patch.

+ /home/voipio/linaro/qemu/obj/alpha-linux-user/qemu-alpha 
/home/voipio/linaro/qemu-smoke/alpha/busybox cat /proc/self/maps
0000000120000000-00000001201cc000 r-xp 00000000 fe:00 8784862          
/home/voipio/linaro/qemu-smoke/alpha/busybox
00000001201dc000-00000001201e0000 rw-p 001cc000 fe:00 8784862          
/home/voipio/linaro/qemu-smoke/alpha/busybox
00000001201e0000-000000012020a000 rw-p 00000000 00:00 0
0000004000000000-0000004000002000 ---p 00000000 00:00 0
0000004000002000-0000004000802000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/arm-linux-user/qemu-arm 
/home/voipio/linaro/qemu-smoke/armel/busybox cat /proc/self/maps
00008000-0014b000 r-xp 00000000 fe:00 8784905          
/home/voipio/linaro/qemu-smoke/armel/busybox
00153000-00154000 rw-p 00143000 fe:00 8784905          
/home/voipio/linaro/qemu-smoke/armel/busybox
00154000-0017b000 rw-p 00000000 00:00 0
f67ff000-f6800000 ---p 00000000 00:00 0
f6800000-f7000000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/aarch64-linux-user/qemu-aarch64 
/home/voipio/linaro/qemu-smoke/arm64/busybox cat /proc/self/maps
00400000-00572000 r-xp 00000000 fe:00 8784917                            
/home/voipio/linaro/qemu-smoke/arm64/busybox
00572000-00581000 ---p 00000000 00:00 0
00581000-00584000 rw-p 00171000 fe:00 8784917                            
/home/voipio/linaro/qemu-smoke/arm64/busybox
00584000-005ac000 rw-p 00000000 00:00 0
4000000000-4000001000 ---p 00000000 00:00 0
4000001000-4000811000 rw-p 00000000 00:00 0
7f38e312b000-7f38e6d2b000 rw-p 00000000 00:00 0
7f38e6d2b000-7f38e6d86000 r-xp 00000000 fe:00 5242918                    
/lib/x86_64-linux-gnu/libpcre.so.3.13.1
7f38e6d86000-7f38e6f86000 ---p 0005b000 fe:00 5242918                    
/lib/x86_64-linux-gnu/libpcre.so.3.13.1
7f38e6f86000-7f38e6f87000 rw-p 0005b000 fe:00 5242918                    
/lib/x86_64-linux-gnu/libpcre.so.3.13.1
7f38e6f87000-7f38e7126000 r-xp 00000000 fe:00 5248993                    
/lib/x86_64-linux-gnu/libc-2.19.so
7f38e7126000-7f38e7326000 ---p 0019f000 fe:00 5248993                    
/lib/x86_64-linux-gnu/libc-2.19.so
7f38e7326000-7f38e732a000 r--p 0019f000 fe:00 5248993                    
/lib/x86_64-linux-gnu/libc-2.19.so
7f38e732a000-7f38e732c000 rw-p 001a3000 fe:00 5248993                    
/lib/x86_64-linux-gnu/libc-2.19.so
7f38e732c000-7f38e7330000 rw-p 00000000 00:00 0
7f38e7330000-7f38e7348000 r-xp 00000000 fe:00 5247493                    
/lib/x86_64-linux-gnu/libpthread-2.19.so
7f38e7348000-7f38e7547000 ---p 00018000 fe:00 5247493                    
/lib/x86_64-linux-gnu/libpthread-2.19.so
7f38e7547000-7f38e7548000 r--p 00017000 fe:00 5247493                    
/lib/x86_64-linux-gnu/libpthread-2.19.so
7f38e7548000-7f38e7549000 rw-p 00018000 fe:00 5247493                    
/lib/x86_64-linux-gnu/libpthread-2.19.so
7f38e7549000-7f38e754d000 rw-p 00000000 00:00 0
7f38e754d000-7f38e7563000 r-xp 00000000 fe:00 5242894                    
/lib/x86_64-linux-gnu/libgcc_s.so.1
7f38e7563000-7f38e7762000 ---p 00016000 fe:00 5242894                    
/lib/x86_64-linux-gnu/libgcc_s.so.1
7f38e7762000-7f38e7763000 rw-p 00015000 fe:00 5242894                    
/lib/x86_64-linux-gnu/libgcc_s.so.1
7f38e7763000-7f38e7863000 r-xp 00000000 fe:00 5248997                    
/lib/x86_64-linux-gnu/libm-2.19.so
7f38e7863000-7f38e7a62000 ---p 00100000 fe:00 5248997                    
/lib/x86_64-linux-gnu/libm-2.19.so
7f38e7a62000-7f38e7a63000 r--p 000ff000 fe:00 5248997                    
/lib/x86_64-linux-gnu/libm-2.19.so
7f38e7a63000-7f38e7a64000 rw-p 00100000 fe:00 5248997                    
/lib/x86_64-linux-gnu/libm-2.19.so
7f38e7a64000-7f38e7b50000 r-xp 00000000 fe:00 5111819                    
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20
7f38e7b50000-7f38e7d50000 ---p 000ec000 fe:00 5111819                    
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20
7f38e7d50000-7f38e7d58000 r--p 000ec000 fe:00 5111819                    
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20
7f38e7d58000-7f38e7d5a000 rw-p 000f4000 fe:00 5111819                    
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20
7f38e7d5a000-7f38e7d6f000 rw-p 00000000 00:00 0
7f38e7d6f000-7f38e7d76000 r-xp 00000000 fe:00 5249008                    
/lib/x86_64-linux-gnu/librt-2.19.so
7f38e7d76000-7f38e7f75000 ---p 00007000 fe:00 5249008                    
/lib/x86_64-linux-gnu/librt-2.19.so
7f38e7f75000-7f38e7f76000 r--p 00006000 fe:00 5249008                    
/lib/x86_64-linux-gnu/librt-2.19.so
7f38e7f76000-7f38e7f77000 rw-p 00007000 fe:00 5249008                    
/lib/x86_64-linux-gnu/librt-2.19.so
7f38e7f77000-7f38e7f8e000 r-xp 00000000 fe:00 5242967                    
/lib/x86_64-linux-gnu/libz.so.1.2.8
7f38e7f8e000-7f38e818d000 ---p 00017000 fe:00 5242967                    
/lib/x86_64-linux-gnu/libz.so.1.2.8
7f38e818d000-7f38e818e000 r--p 00016000 fe:00 5242967                    
/lib/x86_64-linux-gnu/libz.so.1.2.8
7f38e818e000-7f38e818f000 rw-p 00017000 fe:00 5242967                    
/lib/x86_64-linux-gnu/libz.so.1.2.8
7f38e818f000-7f38e8295000 r-xp 00000000 fe:00 5247512                    
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4000.0
7f38e8295000-7f38e8494000 ---p 00106000 fe:00 5247512                    
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4000.0
7f38e8494000-7f38e8495000 r--p 00105000 fe:00 5247512                    
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4000.0
7f38e8495000-7f38e8496000 rw-p 00106000 fe:00 5247512                    
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4000.0
7f38e8496000-7f38e8497000 rw-p 00000000 00:00 0
7f38e8497000-7f38e8498000 r-xp 00000000 fe:00 5119090                    
/usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.4000.0
7f38e8498000-7f38e8697000 ---p 00001000 fe:00 5119090                    
/usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.4000.0
7f38e8697000-7f38e8698000 r--p 00000000 fe:00 5119090                    
/usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.4000.0
7f38e8698000-7f38e8699000 rw-p 00001000 fe:00 5119090                    
/usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.4000.0
7f38e8699000-7f38e86b9000 r-xp 00000000 fe:00 5248990                    
/lib/x86_64-linux-gnu/ld-2.19.so
7f38e885a000-7f38e88a1000 rw-p 00000000 00:00 0
7f38e88a7000-7f38e88b9000 rw-p 00000000 00:00 0
7f38e88b9000-7f38e88ba000 r--p 00020000 fe:00 5248990                    
/lib/x86_64-linux-gnu/ld-2.19.so
7f38e88ba000-7f38e88bb000 rw-p 00021000 fe:00 5248990                    
/lib/x86_64-linux-gnu/ld-2.19.so
7f38e88bb000-7f38e88bc000 rw-p 00000000 00:00 0
7f38e88bc000-7f38e8a40000 r-xp 00000000 fe:00 8791249                    
/home/voipio/linaro/qemu/obj/aarch64-linux-user/qemu-aarch64
7f38e8c3f000-7f38e8c7a000 r--p 00183000 fe:00 8791249                    
/home/voipio/linaro/qemu/obj/aarch64-linux-user/qemu-aarch64
7f38e8c7a000-7f38e8c81000 rw-p 001be000 fe:00 8791249                    
/home/voipio/linaro/qemu/obj/aarch64-linux-user/qemu-aarch64
7f38e8c81000-7f38e8cd6000 rw-p 00000000 00:00 0
7f38e8cd6000-7f38eacd7000 rwxp 00000000 00:00 0
7f38eacd7000-7f38eacea000 rw-p 00000000 00:00 0
7f38ec1c1000-7f38ec203000 rw-p 00000000 00:00 0                          [heap]
7fff89d8a000-7fff89dab000 rw-p 00000000 00:00 0                          [stack]
7fff89db5000-7fff89db7000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  
[vsyscall]
+ /home/voipio/linaro/qemu/obj/armeb-linux-user/qemu-armeb 
/home/voipio/linaro/qemu-smoke/armeb/busybox cat /proc/self/maps
00008000-000be000 r-xp 00000000 fe:00 8784894          
/home/voipio/linaro/qemu-smoke/armeb/busybox
000c5000-000c6000 rw-p 000b5000 fe:00 8784894          
/home/voipio/linaro/qemu-smoke/armeb/busybox
000c6000-000cc000 rw-p 00000000 00:00 0
f67ff000-f6800000 ---p 00000000 00:00 0
f6800000-f7000000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/cris-linux-user/qemu-cris 
/home/voipio/linaro/qemu-smoke/cris/busyboxv32 cat /proc/self/maps
00080000-00230000 r-xp 00000000 fe:00 8784890          
/home/voipio/linaro/qemu-smoke/cris/busyboxv32
00230000-00234000 rw-p 001ae000 fe:00 8784890          
/home/voipio/linaro/qemu-smoke/cris/busyboxv32
00234000-0025e000 rw-p 00000000 00:00 0
f67fe000-f6800000 ---p 00000000 00:00 0
f6800000-f7000000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/m68k-linux-user/qemu-m68k 
/home/voipio/linaro/qemu-smoke/m68k/busybox cat /proc/self/maps
80000000-80126000 r-xp 00000000 fe:00 8784884          
/home/voipio/linaro/qemu-smoke/m68k/busybox
80126000-80128000 rw-p 00124000 fe:00 8784884          
/home/voipio/linaro/qemu-smoke/m68k/busybox
80128000-80150000 rw-p 00000000 00:00 0
f67fe000-f6800000 ---p 00000000 00:00 0
f6800000-f7000000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/microblazeel-linux-user/qemu-microblazeel 
/home/voipio/linaro/qemu-smoke/mblzel/busybox cat /proc/self/maps
10000000-101dc000 r-xp 00000000 fe:00 8784880          
/home/voipio/linaro/qemu-smoke/mblzel/busybox
101dc000-101e0000 rw-p 001dc000 fe:00 8784880          
/home/voipio/linaro/qemu-smoke/mblzel/busybox
101e0000-10206000 rw-p 00000000 00:00 0
f67ff000-f6800000 ---p 00000000 00:00 0
f6800000-f7000000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/microblaze-linux-user/qemu-microblaze 
/home/voipio/linaro/qemu-smoke/mblz/busybox cat /proc/self/maps
10000000-101dd000 r-xp 00000000 fe:00 8787324          
/home/voipio/linaro/qemu-smoke/mblz/busybox
101dd000-101e1000 rw-p 001dd000 fe:00 8787324          
/home/voipio/linaro/qemu-smoke/mblz/busybox
101e1000-10207000 rw-p 00000000 00:00 0
f67ff000-f6800000 ---p 00000000 00:00 0
f6800000-f7000000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/mipsel-linux-user/qemu-mipsel 
/home/voipio/linaro/qemu-smoke/mipsel/busybox cat /proc/self/maps
00400000-005a3000 r-xp 00000000 fe:00 8784898          
/home/voipio/linaro/qemu-smoke/mipsel/busybox
005b3000-005bc000 rw-p 001a3000 fe:00 8784898          
/home/voipio/linaro/qemu-smoke/mipsel/busybox
005bc000-005e2000 rw-p 00000000 00:00 0
767ff000-76800000 ---p 00000000 00:00 0
76800000-77000000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/mips-linux-user/qemu-mips 
/home/voipio/linaro/qemu-smoke/mips/busybox cat /proc/self/maps
00400000-005a2000 r-xp 00000000 fe:00 8784907          
/home/voipio/linaro/qemu-smoke/mips/busybox
005b2000-005bb000 rw-p 001a2000 fe:00 8784907          
/home/voipio/linaro/qemu-smoke/mips/busybox
005bb000-005e1000 rw-p 00000000 00:00 0
767ff000-76800000 ---p 00000000 00:00 0
76800000-77000000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/mips64el-linux-user/qemu-mips64el 
/home/voipio/linaro/qemu-smoke/mips64el/busybox cat /proc/self/maps
0000000120000000-00000001200eb000 r-xp 00000000 fe:00 8784909          
/home/voipio/linaro/qemu-smoke/mips64el/busybox
00000001200fb000-0000000120100000 rw-p 000eb000 fe:00 8784909          
/home/voipio/linaro/qemu-smoke/mips64el/busybox
0000000120100000-0000000120107000 rw-p 00000000 00:00 0
0000004000000000-0000004000001000 ---p 00000000 00:00 0
0000004000001000-0000004000801000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/mips64-linux-user/qemu-mips64 
/home/voipio/linaro/qemu-smoke/mips64/busybox cat /proc/self/maps
0000000120000000-00000001200eb000 r-xp 00000000 fe:00 8784896          
/home/voipio/linaro/qemu-smoke/mips64/busybox
00000001200fb000-0000000120100000 rw-p 000eb000 fe:00 8784896          
/home/voipio/linaro/qemu-smoke/mips64/busybox
0000000120100000-0000000120107000 rw-p 00000000 00:00 0
0000004000000000-0000004000001000 ---p 00000000 00:00 0
0000004000001000-0000004000801000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/or32-linux-user/qemu-or32 
/home/voipio/linaro/qemu-smoke/or32/busybox cat /proc/self/maps
7fe12b32f000-7fe12b330000 ---p 00000000 00:00 0
7fe12b330000-7fe12b47e000 r-xp 00002000 fe:00 8784874                    
/home/voipio/linaro/qemu-smoke/or32/busybox
7fe12b47e000-7fe12b484000 rw-p 00000000 00:00 0
7fe12b484000-7fe221b2e000 ---p 00000000 00:00 0
7fe221b2e000-7fe221b30000 ---p 00000000 00:00 0
7fe221b30000-7fe222330000 rw-p 00000000 00:00 0
7fe222330000-7fe222331000 ---p 00000000 00:00 0
7fe222331000-7fe225731000 rw-p 00000000 00:00 0
7fe225731000-7fe22578c000 r-xp 00000000 fe:00 5242918                    
/lib/x86_64-linux-gnu/libpcre.so.3.13.1
7fe22578c000-7fe22598c000 ---p 0005b000 fe:00 5242918                    
/lib/x86_64-linux-gnu/libpcre.so.3.13.1
7fe22598c000-7fe22598d000 rw-p 0005b000 fe:00 5242918                    
/lib/x86_64-linux-gnu/libpcre.so.3.13.1
7fe22598d000-7fe225b2c000 r-xp 00000000 fe:00 5248993                    
/lib/x86_64-linux-gnu/libc-2.19.so
7fe225b2c000-7fe225d2c000 ---p 0019f000 fe:00 5248993                    
/lib/x86_64-linux-gnu/libc-2.19.so
7fe225d2c000-7fe225d30000 r--p 0019f000 fe:00 5248993                    
/lib/x86_64-linux-gnu/libc-2.19.so
7fe225d30000-7fe225d32000 rw-p 001a3000 fe:00 5248993                    
/lib/x86_64-linux-gnu/libc-2.19.so
7fe225d32000-7fe225d36000 rw-p 00000000 00:00 0
7fe225d36000-7fe225d4e000 r-xp 00000000 fe:00 5247493                    
/lib/x86_64-linux-gnu/libpthread-2.19.so
7fe225d4e000-7fe225f4d000 ---p 00018000 fe:00 5247493                    
/lib/x86_64-linux-gnu/libpthread-2.19.so
7fe225f4d000-7fe225f4e000 r--p 00017000 fe:00 5247493                    
/lib/x86_64-linux-gnu/libpthread-2.19.so
7fe225f4e000-7fe225f4f000 rw-p 00018000 fe:00 5247493                    
/lib/x86_64-linux-gnu/libpthread-2.19.so
7fe225f4f000-7fe225f53000 rw-p 00000000 00:00 0
7fe225f53000-7fe225f69000 r-xp 00000000 fe:00 5242894                    
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fe225f69000-7fe226168000 ---p 00016000 fe:00 5242894                    
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fe226168000-7fe226169000 rw-p 00015000 fe:00 5242894                    
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fe226169000-7fe226269000 r-xp 00000000 fe:00 5248997                    
/lib/x86_64-linux-gnu/libm-2.19.so
7fe226269000-7fe226468000 ---p 00100000 fe:00 5248997                    
/lib/x86_64-linux-gnu/libm-2.19.so
7fe226468000-7fe226469000 r--p 000ff000 fe:00 5248997                    
/lib/x86_64-linux-gnu/libm-2.19.so
7fe226469000-7fe22646a000 rw-p 00100000 fe:00 5248997                    
/lib/x86_64-linux-gnu/libm-2.19.so
7fe22646a000-7fe226556000 r-xp 00000000 fe:00 5111819                    
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20
7fe226556000-7fe226756000 ---p 000ec000 fe:00 5111819                    
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20
7fe226756000-7fe22675e000 r--p 000ec000 fe:00 5111819                    
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20
7fe22675e000-7fe226760000 rw-p 000f4000 fe:00 5111819                    
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20
7fe226760000-7fe226775000 rw-p 00000000 00:00 0
7fe226775000-7fe22677c000 r-xp 00000000 fe:00 5249008                    
/lib/x86_64-linux-gnu/librt-2.19.so
7fe22677c000-7fe22697b000 ---p 00007000 fe:00 5249008                    
/lib/x86_64-linux-gnu/librt-2.19.so
7fe22697b000-7fe22697c000 r--p 00006000 fe:00 5249008                    
/lib/x86_64-linux-gnu/librt-2.19.so
7fe22697c000-7fe22697d000 rw-p 00007000 fe:00 5249008                    
/lib/x86_64-linux-gnu/librt-2.19.so
7fe22697d000-7fe226994000 r-xp 00000000 fe:00 5242967                    
/lib/x86_64-linux-gnu/libz.so.1.2.8
7fe226994000-7fe226b93000 ---p 00017000 fe:00 5242967                    
/lib/x86_64-linux-gnu/libz.so.1.2.8
7fe226b93000-7fe226b94000 r--p 00016000 fe:00 5242967                    
/lib/x86_64-linux-gnu/libz.so.1.2.8
7fe226b94000-7fe226b95000 rw-p 00017000 fe:00 5242967                    
/lib/x86_64-linux-gnu/libz.so.1.2.8
7fe226b95000-7fe226c9b000 r-xp 00000000 fe:00 5247512                    
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4000.0
7fe226c9b000-7fe226e9a000 ---p 00106000 fe:00 5247512                    
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4000.0
7fe226e9a000-7fe226e9b000 r--p 00105000 fe:00 5247512                    
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4000.0
7fe226e9b000-7fe226e9c000 rw-p 00106000 fe:00 5247512                    
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4000.0
7fe226e9c000-7fe226e9d000 rw-p 00000000 00:00 0
7fe226e9d000-7fe226e9e000 r-xp 00000000 fe:00 5119090                    
/usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.4000.0
7fe226e9e000-7fe22709d000 ---p 00001000 fe:00 5119090                    
/usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.4000.0
7fe22709d000-7fe22709e000 r--p 00000000 fe:00 5119090                    
/usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.4000.0
7fe22709e000-7fe22709f000 rw-p 00001000 fe:00 5119090                    
/usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.4000.0
7fe22709f000-7fe2270bf000 r-xp 00000000 fe:00 5248990                    
/lib/x86_64-linux-gnu/ld-2.19.so
7fe227272000-7fe2272a7000 rw-p 00000000 00:00 0
7fe2272ad000-7fe2272bf000 rw-p 00000000 00:00 0
7fe2272bf000-7fe2272c0000 r--p 00020000 fe:00 5248990                    
/lib/x86_64-linux-gnu/ld-2.19.so
7fe2272c0000-7fe2272c1000 rw-p 00021000 fe:00 5248990                    
/lib/x86_64-linux-gnu/ld-2.19.so
7fe2272c1000-7fe2272c2000 rw-p 00000000 00:00 0
7fe2272c2000-7fe227397000 r-xp 00000000 fe:00 8782511                    
/home/voipio/linaro/qemu/obj/or32-linux-user/qemu-or32
7fe227596000-7fe2275be000 r--p 000d4000 fe:00 8782511                    
/home/voipio/linaro/qemu/obj/or32-linux-user/qemu-or32
7fe2275be000-7fe2275c5000 rw-p 000fc000 fe:00 8782511                    
/home/voipio/linaro/qemu/obj/or32-linux-user/qemu-or32
7fe2275c5000-7fe227619000 rw-p 00000000 00:00 0
7fe227619000-7fe22961a000 rwxp 00000000 00:00 0
7fe22961a000-7fe229625000 rw-p 00000000 00:00 0
7fe2297dd000-7fe2297fe000 rw-p 00000000 00:00 0                          [heap]
7fff48b01000-7fff48b22000 rw-p 00000000 00:00 0                          [stack]
7fff48bfe000-7fff48c00000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  
[vsyscall]
+ /home/voipio/linaro/qemu/obj/ppc-linux-user/qemu-ppc 
/home/voipio/linaro/qemu-smoke/powerpc/busybox cat /proc/self/maps
10000000-1016d000 r-xp 00000000 fe:00 8787322          
/home/voipio/linaro/qemu-smoke/powerpc/busybox
1017d000-1017e000 rw-p 0016d000 fe:00 8787322          
/home/voipio/linaro/qemu-smoke/powerpc/busybox
1017e000-101a5000 rw-p 00000000 00:00 0
f67ff000-f6800000 ---p 00000000 00:00 0
f6800000-f7000000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/ppc64-linux-user/qemu-ppc64 
/home/voipio/linaro/qemu-smoke/ppc64/busybox cat /proc/self/maps
0000000010000000-0000000010004000 r-xp 00000000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
0000000010004000-0000000010013000 rwxp 00004000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
0000000010013000-0000000010015000 r-xp 00013000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
0000000010015000-0000000010016000 rwxp 00015000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
0000000010016000-0000000010018000 r-xp 00016000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
0000000010018000-0000000010019000 rwxp 00018000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
0000000010019000-000000001001a000 r-xp 00019000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001001a000-000000001001b000 rwxp 0001a000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001001b000-000000001001c000 r-xp 0001b000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001001c000-000000001002b000 rwxp 0001c000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001002b000-000000001002c000 r-xp 0002b000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001002c000-0000000010030000 rwxp 0002c000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
0000000010030000-0000000010033000 r-xp 00030000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
0000000010033000-0000000010048000 rwxp 00033000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
0000000010048000-0000000010049000 r-xp 00048000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
0000000010049000-000000001004a000 rwxp 00049000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001004a000-000000001004b000 r-xp 0004a000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001004b000-000000001004d000 rwxp 0004b000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001004d000-000000001004e000 r-xp 0004d000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001004e000-000000001004f000 rwxp 0004e000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001004f000-0000000010050000 r-xp 0004f000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
0000000010050000-000000001006a000 rwxp 00050000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001006a000-000000001006d000 r-xp 0006a000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001006d000-000000001007d000 rwxp 0006d000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001007d000-000000001007e000 r-xp 0007d000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001007e000-00000000100a0000 rwxp 0007e000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
00000000100a0000-00000000100a1000 r-xp 000a0000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
00000000100a1000-00000000100bc000 rwxp 000a1000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
00000000100bc000-00000000100c0000 r-xp 000bc000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
00000000100c0000-000000001013a000 rwxp 000c0000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001013a000-000000001013b000 r-xp 0013a000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001013b000-000000001016d000 rwxp 0013b000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001016d000-000000001016e000 r-xp 0016d000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001016e000-000000001017c000 rwxp 0016e000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001017c000-000000001017d000 r-xp 0017c000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001017d000-000000001017e000 rwxp 0017d000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
000000001017e000-0000000010181000 r-xp 0017e000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
0000000010181000-0000000010186000 rwxp 00181000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
0000000010186000-0000000010188000 r-xp 00186000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
0000000010188000-00000000101f0000 rwxp 00188000 fe:00 8784886          
/home/voipio/linaro/qemu-smoke/ppc64/busybox
00000000101f0000-00000000101f7000 rwxp 00000000 00:00 0
00000000101f7000-0000000010219000 rw-p 00000000 00:00 0
0000004000000000-0000004000001000 ---p 00000000 00:00 0
0000004000001000-0000004000801000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/ppc64abi32-linux-user/qemu-ppc64abi32 
/home/voipio/linaro/qemu-smoke/powerpc/busybox cat /proc/self/maps
10000000-1016d000 r-xp 00000000 fe:00 8787322          
/home/voipio/linaro/qemu-smoke/powerpc/busybox
1017d000-1017e000 rw-p 0016d000 fe:00 8787322          
/home/voipio/linaro/qemu-smoke/powerpc/busybox
1017e000-101a5000 rw-p 00000000 00:00 0
40000000-40001000 ---p 00000000 00:00 0
40001000-40801000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/sh4-linux-user/qemu-sh4 
/home/voipio/linaro/qemu-smoke/sh4/busybox cat /proc/self/maps
00400000-00548000 r-xp 00000000 fe:00 8784878          
/home/voipio/linaro/qemu-smoke/sh4/busybox
00557000-00559000 rw-p 00147000 fe:00 8784878          
/home/voipio/linaro/qemu-smoke/sh4/busybox
00559000-0057f000 rw-p 00000000 00:00 0
f67ff000-f6800000 ---p 00000000 00:00 0
f6800000-f7000000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/sh4eb-linux-user/qemu-sh4eb 
/home/voipio/linaro/qemu-smoke/sh4eb/busybox cat /proc/self/maps
00400000-004ab000 r-xp 00000000 fe:00 8784903          
/home/voipio/linaro/qemu-smoke/sh4eb/busybox
004ba000-004bb000 rw-p 000aa000 fe:00 8784903          
/home/voipio/linaro/qemu-smoke/sh4eb/busybox
004bb000-004c1000 rw-p 00000000 00:00 0
f67ff000-f6800000 ---p 00000000 00:00 0
f6800000-f7000000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/s390x-linux-user/qemu-s390x 
/home/voipio/linaro/qemu-smoke/s390x/busybox cat /proc/self/maps
0000000080000000-0000000080233000 r-xp 00000000 fe:00 8784870          
/home/voipio/linaro/qemu-smoke/s390x/busybox
0000000080233000-0000000080235000 rw-p 00232000 fe:00 8784870          
/home/voipio/linaro/qemu-smoke/s390x/busybox
0000000080235000-000000008025e000 rw-p 00000000 00:00 0
0000004000000000-0000004000001000 ---p 00000000 00:00 0
0000004000001000-0000004000801000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/sparc64-linux-user/qemu-sparc64 
/home/voipio/linaro/qemu-smoke/sparc64/busybox cat /proc/self/maps
0000000000100000-0000000000266000 r-xp 00000000 fe:00 8784872          
/home/voipio/linaro/qemu-smoke/sparc64/busybox
0000000000364000-0000000000366000 rw-p 00164000 fe:00 8784872          
/home/voipio/linaro/qemu-smoke/sparc64/busybox
0000000000366000-0000000000390000 rw-p 00000000 00:00 0
0000004000000000-0000004000002000 ---p 00000000 00:00 0
0000004000002000-0000004000802000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/sparc32plus-linux-user/qemu-sparc32plus 
/home/voipio/linaro/qemu-smoke/sparc/busybox cat /proc/self/maps
00010000-0017a000 r-xp 00000000 fe:00 8784864          
/home/voipio/linaro/qemu-smoke/sparc/busybox
00188000-00189000 rw-p 00168000 fe:00 8784864          
/home/voipio/linaro/qemu-smoke/sparc/busybox
00189000-001b2000 rw-p 00000000 00:00 0
40000000-40002000 ---p 00000000 00:00 0
40002000-40802000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/i386-linux-user/qemu-i386 
/home/voipio/linaro/qemu-smoke/i386/busybox cat /proc/self/maps
08048000-0817d000 r-xp 00000000 fe:00 8784913          
/home/voipio/linaro/qemu-smoke/i386/busybox
0817d000-0817f000 rw-p 00134000 fe:00 8784913          
/home/voipio/linaro/qemu-smoke/i386/busybox
0817f000-081a5000 rw-p 00000000 00:00 0
f67fd000-f67ff000 rw-p 00000000 00:00 0
f67ff000-f6800000 ---p 00000000 00:00 0
f6800000-f7000000 rw-p 00000000 00:00 0                [stack]
+ /home/voipio/linaro/qemu/obj/x86_64-linux-user/qemu-x86_64 
/home/voipio/linaro/qemu-smoke/amd64/busybox cat /proc/self/maps
0000000000400000-0000000000572000 r-xp 00000000 fe:00 8787320          
/home/voipio/linaro/qemu-smoke/amd64/busybox
0000000000772000-0000000000774000 rw-p 00172000 fe:00 8787320          
/home/voipio/linaro/qemu-smoke/amd64/busybox
0000000000774000-000000000079d000 rw-p 00000000 00:00 0
0000004000000000-0000004000001000 ---p 00000000 00:00 0
0000004000001000-0000004000803000 rw-p 00000000 00:00 0                [stack]



Signed-off-by: Mikhail Ilyin <address@hidden>
---
  include/exec/cpu-all.h |  2 ++
  linux-user/syscall.c   | 25 ++++++++++---------------
  2 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
index f91581f..f9d132f 100644
--- a/include/exec/cpu-all.h
+++ b/include/exec/cpu-all.h
@@ -198,6 +198,8 @@ extern unsigned long reserved_va;
  #define RESERVED_VA 0ul
  #endif

+#define GUEST_ADDR_MAX (RESERVED_VA ? RESERVED_VA : \
+                                    (1ul << TARGET_VIRT_ADDR_SPACE_BITS) - 1)
  #endif

  /* page related stuff */
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index a50229d..189a8c0 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -5092,10 +5092,8 @@ static int open_self_cmdline(void *cpu_env, int fd)

  static int open_self_maps(void *cpu_env, int fd)
  {
-#if defined(TARGET_ARM) || defined(TARGET_M68K) || defined(TARGET_UNICORE32)
      CPUState *cpu = ENV_GET_CPU((CPUArchState *)cpu_env);
      TaskState *ts = cpu->opaque;
-#endif
      FILE *fp;
      char *line = NULL;
      size_t len = 0;
@@ -5118,13 +5116,18 @@ static int open_self_maps(void *cpu_env, int fd)
          if ((fields < 10) || (fields > 11)) {
              continue;
          }
-        if (!strncmp(path, "[stack]", 7)) {
-            continue;
-        }
-        if (h2g_valid(min) && h2g_valid(max)) {
+        if (h2g_valid(min)) {
+            int flags = page_get_flags(h2g(min));
+            max = h2g_valid(max - 1) ? max : (uint64_t)g2h(GUEST_ADDR_MAX);
+            if (page_check_range(h2g(min), max - min, flags) == -1) {
+                continue;
+            }
+            if (h2g(min) == ts->info->stack_limit) {
+                pstrcpy(path, sizeof(path), "      [stack]");
+            }
              dprintf(fd, TARGET_ABI_FMT_lx "-" TARGET_ABI_FMT_lx
                      " %c%c%c%c %08" PRIx64 " %02x:%02x %d %s%s\n",
-                    h2g(min), h2g(max), flag_r, flag_w,
+                    h2g(min), h2g(max - 1) + 1, flag_r, flag_w,
                      flag_x, flag_p, offset, dev_maj, dev_min, inode,
                      path[0] ? "         " : "", path);
          }
@@ -5133,14 +5136,6 @@ static int open_self_maps(void *cpu_env, int fd)
      free(line);
      fclose(fp);

-#if defined(TARGET_ARM) || defined(TARGET_M68K) || defined(TARGET_UNICORE32)
-    dprintf(fd, "%08llx-%08llx rw-p %08llx 00:00 0          [stack]\n",
-                (unsigned long long)ts->info->stack_limit,
-                (unsigned long long)(ts->info->start_stack +
-                                     (TARGET_PAGE_SIZE - 1)) & 
TARGET_PAGE_MASK,
-                (unsigned long long)0);
-#endif
-
      return 0;
  }

--
1.9.1





reply via email to

[Prev in Thread] Current Thread [Next in Thread]