首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在将部分链接到最低2MB内存时终止?

问在将部分链接到最低2MB内存时终止?
EN

Stack Overflow用户
提问于 2015-06-13 20:56:01
回答 1查看 85关注 0票数 0

我正在学习LD链接器脚本,并且我注意到,如果我将.text部分(或任何部分)链接到低于2MB的地址,我的进程一运行就会立即被Linux杀死。下面是我使用的一个示例脚本:

代码语言:javascript
复制
SECTIONS
{
    . = 0x200000;    /* base for text section */
    .text : { *(.text) }
    . = 0x800000;
    .rodata : { *(.rodata) }
    .data : { *(.data) }
    .bss : { *(.bss) }
}

如果我将文本基设置为0x1FFFFF或更低版本,则程序在运行时会立即被Linux杀死:

代码语言:javascript
复制
$ ./main
Killed

0x200000很好。Linux是否为最低2MB的虚拟内存设置了某种类型的保护?

作为一个更普遍的问题,是否有关于在虚拟内存中哪些部分应该链接的规则,或者只要我没有踩到任何保留范围,那么任何地方都可以吗?

(显然,对于一个“真正的”程序,我只会使用默认的LD脚本,但我只是要求学习的目的)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-13 22:22:14

Linux是否为最低2MB的虚拟内存设置了某种类型的保护?

是的;mmap_min_addr sysctl值防止进程映射低内存页以防止某些类型的内核攻击。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30823448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档