Har*_*nry 6 linker gcc arm ld linker-scripts
我想在虚拟内存的末尾创建一个带有特殊部分的程序.所以我想做一个像这样的链接器脚本:
/* ... */
.section_x 0xffff0000 : {
_start_section_x = .;
. = . + 0xffff;
_end_section_x = .;
}
Run Code Online (Sandbox Code Playgroud)
的问题是,GCC/LD/glibc的似乎在该位置处由默认32位应用程序加载堆栈,即使它重叠的已知部分.上面的代码为0,导致异常.有没有办法告诉链接器为堆栈使用另一个VM内存位置?(同样,我想确保堆不会跨越虚拟内存的这一部分......).
我讨厌那些假设甚至询问问题是否错误的答案,但是,如果您需要 64k 段,为什么不能在启动时分配一个段呢?
为什么您的进程地址空间中可能需要一个固定地址?近 30 年来,我一直在进行各种不同类型的编码,自从受保护内存出现以来,我还没有看到需要固定地址。