Hi Kenijor, On Wed, Oct 12, 2011 at 7:08 PM, KenjiroNakayama <nakayamakennjirou@gmail.com> wrote:
I want to know about /proc/<PID>/maps. Whenever I looked at /proc/maps, it is mapping as many types of access permissions.
For example: /bin/cat => r-wp and rw-p access permissions /lib64/ld-2.14.so => r-wp, r-xp and some access permissions)
Why does it need to map some permissions? ( in my opinion,as it maps into VM space, it just needs write permission...)
Well, /proc/maps is showing each memory region and what type of permissions are granted. Code requires read and execute. Data requires read, and write. Constant data only requires read.
$ cat /proc/self/maps
00400000-0040b000 r-xp 00000000 fd:01 925242 /bin/cat #
If you examine the /bin/cat elf file (using objdump -p /bin/cat and objdump -h /bin/cat) objdump -p shows the information used by the loader. You'll notice that the segments have permissions, and these permissions will correspond to stuff in /proc/self/maps (particularly the sections that have the LOAD attribute). You can correlate the virtual addresses from the -p output with the individual sections shown in the -h ouput. The r-xp corresponds to code (readable, non writable, executable, private)
0060a000-0060b000 rw-p 0000a000 fd:01 925242 /bin/cat # <= why does it need two type?!
The rw-p will corrspond to data (readable, writable, not executable, private)
0060b000-0060c000 rw-p 00000000 00:00 0 0080a000-0080b000 rw-p 0000a000 fd:01 925242 /bin/cat # <= furthermore, it comes again!!!!
This is just an additional memory region with a different set of addresses from the previous one.
02144000-02165000 rw-p 00000000 00:00 0 [heap] 3ca7600000-3ca761f000 r-xp 00000000 fd:01 1058940 /lib64/ld-2.14.so 3ca781e000-3ca781f000 r--p 0001e000 fd:01 1058940 /lib64/ld-2.14.so 3ca781f000-3ca7820000 rw-p 0001f000 fd:01 1058940 /lib64/ld-2.14.so ## <= why three types of access permissions?!
Repeat, except this is for a shared-library which has been loaded into the /bin/cat process space. Shared libraries have code, data, etc.
3ca7820000-3ca7821000 rw-p 00000000 00:00 0 3ca7e00000-3ca7f8f000 r-xp 00000000 fd:01 1058941 /lib64/libc-2.14.so 3ca7f8f000-3ca818f000 ---p 0018f000 fd:01 1058941 /lib64/libc-2.14.so 3ca818f000-3ca8193000 r--p 0018f000 fd:01 1058941 /lib64/libc-2.14.so 3ca8193000-3ca8194000 rw-p 00193000 fd:01 1058941 /lib64/libc-2.14.so
-- Dave Hylands Shuswap, BC, Canada http://www.davehylands.com