PROT_NONE mappings

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

 



Good day!
Can someone explain to me why in the x86_64 libraries with 0x200000 alignment in the output of pmap sometimes I see PROT_NONE mappings 2048k, sometimes 2044k? Where is lost 4k(MINPAGESIZE?)?
For example:
libvirt:
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align PHDR 0x000040 0x0000003f42e00040 0x0000003f42e00040 0x0001f8 0x0001f8 R E 0x8 INTERP 0x005660 0x0000003f42e05660 0x0000003f42e05660 0x00001c 0x00001c R 0x10
      [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
LOAD 0x000000 0x0000003f42e00000 0x0000003f42e00000 0x00680c 0x00680c R E 0x200000 LOAD 0x006d88 0x0000003f43006d88 0x0000003f43006d88 0x0004c4 0x000e28 RW 0x200000 DYNAMIC 0x006dc8 0x0000003f43006dc8 0x0000003f43006dc8 0x0001f0 0x0001f0 RW 0x8 NOTE 0x000238 0x0000003f42e00238 0x0000003f42e00238 0x000044 0x000044 R 0x4 GNU_EH_FRAME 0x00567c 0x0000003f42e0567c 0x0000003f42e0567c 0x000234 0x000234 R 0x4 GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0x8 GNU_RELRO 0x006d88 0x0000003f43006d88 0x0000003f43006d88 0x000278 0x000278 R 0x1
in process map:
00007fee3c00d000     28K r-x--  /lib64/librt-2.12.so
00007fee3c014000   2044K -----  /lib64/librt-2.12.so
00007fee3c213000      4K r----  /lib64/librt-2.12.so
00007fee3c214000      4K rw---  /lib64/librt-2.12.so
there is 2044k PROT_NONE mapping.

libc:
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align PHDR 0x000040 0x0000003f41e00040 0x0000003f41e00040 0x000230 0x000230 R E 0x8 INTERP 0x168140 0x0000003f41f68140 0x0000003f41f68140 0x00001c 0x00001c R 0x10
      [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
LOAD 0x000000 0x0000003f41e00000 0x0000003f41e00000 0x196fc8 0x196fc8 R E 0x200000 LOAD 0x197718 0x0000003f42197718 0x0000003f42197718 0x004680 0x009190 RW 0x200000 DYNAMIC 0x19ab40 0x0000003f4219ab40 0x0000003f4219ab40 0x0001f0 0x0001f0 RW 0x8 NOTE 0x000270 0x0000003f41e00270 0x0000003f41e00270 0x000044 0x000044 R 0x4 TLS 0x197718 0x0000003f42197718 0x0000003f42197718 0x000010 0x000068 R 0x8 GNU_EH_FRAME 0x16815c 0x0000003f41f6815c 0x0000003f41f6815c 0x00658c 0x00658c R 0x4 GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0x8 GNU_RELRO 0x197718 0x0000003f42197718 0x0000003f42197718 0x0038e8 0x0038e8 R 0x1
in process map:
00007fee39674000   1628K r-x--  /lib64/libc-2.12.so
00007fee3980b000   2048K -----  /lib64/libc-2.12.so
00007fee39a0b000     16K r----  /lib64/libc-2.12.so
00007fee39a0f000      4K rw---  /lib64/libc-2.12.so
there is 2048k PROT_NONE mapping.

I read what beetween text and data must be PROT_NONE MAXPAGESIZE(2048k default for x86_64), why it is 2044k?
I cant understant. Please explain who understand.
And if possible please detailed explain for what reason we must use PROT_NONE mappings beetween text and data segments on x86_64.

--
To unsubscribe from this list: send the line "unsubscribe linux-x86_64" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux ia64]     [Linux Kernel]     [DCCP]     [Linux ARM]     [Yosemite News]     [Linux SCSI]     [Linux Hams]
  Powered by Linux