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