<div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial">Dear all,<br><br>This is the Program Header for "cat" info:<br><br>================================<br>readelf -l /bin/cat <br>...<br>Program Headers:<br>&nbsp; Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Offset&nbsp;&nbsp; VirtAddr&nbsp;&nbsp; PhysAddr&nbsp;&nbsp; FileSiz MemSiz&nbsp; Flg Align<br>&nbsp; PHDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x000034 0x08048034 0x08048034 0x00120 0x00120 R E 0x4<br>&nbsp; INTERP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x000154 0x08048154 0x08048154 0x00013 0x00013 R&nbsp;&nbsp; 0x1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Requesting program interpreter: /lib/ld-linux.so.2]<br>&nbsp; LOAD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x000000 0x08048000 0x08048000 0x0a00c 0x0a00c R E 0x1000<br>&nbsp; LOAD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x00af04 0x08053f04 0x08053f04 0x00258 0x00820 RW&nbsp; 0x1000<br>&nbsp; DYNAMIC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x00af10 0x08053f10 0x08053f10 0x000e8 0x000e8 RW&nbsp; 0x4<br>&nbsp; NOTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x000168 0x08048168 0x08048168 0x00044 0x00044 R&nbsp;&nbsp; 0x4<br>&nbsp; GNU_EH_FRAME&nbsp;&nbsp; 0x009008 0x08051008 0x08051008 0x002d4 0x002d4 R&nbsp;&nbsp; 0x4<br>&nbsp; GNU_STACK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW&nbsp; 0x4<br>&nbsp; GNU_RELRO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x00af04 0x08053f04 0x08053f04 0x000fc 0x000fc R&nbsp;&nbsp; 0x1<br>==============================<br><br>So there are just 2 PT_LOAD segments. But why kernel maps 3 memory regions ? The following is the maps output:<br><br>============================<br>cat /proc/self/maps <br><br>08048000-08053000 r-xp 00000000 08:01 261656&nbsp;&nbsp;&nbsp;&nbsp; /bin/cat<br>08053000-08054000 r--p 0000a000 08:01 261656&nbsp;&nbsp;&nbsp;&nbsp; /bin/cat<br>08054000-08055000 rw-p 0000b000 08:01 261656&nbsp;&nbsp;&nbsp;&nbsp; /bin/cat<br>09b58000-09b79000 rw-p 00000000 00:00 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [heap]<br>b75bd000-b75be000 rw-p 00000000 00:00 0 <br>b75be000-b7761000 r-xp 00000000 08:01 523958&nbsp;&nbsp;&nbsp;&nbsp; /lib/i386-linux-gnu/libc-2.15.so<br>...<br>==================<br><br>The above output, there are 3 memory regions for "/bin/cat", and what is the following segment:<br><br>08053000-08054000 r--p 0000a000 08:01 261656&nbsp;&nbsp;&nbsp;&nbsp; /bin/cat<br><br>According the 'cat' program header, there is no "r" segment.<br><br><br>Regards,<br>Jacky<br><br><br>&nbsp;<br><br><br><br><br><br><br></div><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span>