Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何修改GNU链接器,使其具有独立的';RWE&x27;PT_负载段_Linux_Gcc_Linker_Executable_Elf - Fatal编程技术网

Linux 如何修改GNU链接器,使其具有独立的';RWE&x27;PT_负载段

Linux 如何修改GNU链接器,使其具有独立的';RWE&x27;PT_负载段,linux,gcc,linker,executable,elf,Linux,Gcc,Linker,Executable,Elf,我有一个程序,当使用deafult选项转换成二进制时,我得到了这个 >readelf -lW /tmp/sample Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x000000 0x0000000000400000 0x0000000000400000 0x13e33f 0x13e

我有一个程序,当使用deafult选项转换成二进制时,我得到了这个

>readelf -lW /tmp/sample

Program Headers:
  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align
  LOAD           0x000000 0x0000000000400000 0x0000000000400000 0x13e33f 0x13e33f R E 0x200000
  LOAD           0x13e510 0x000000000073e510 0x000000000073e510 0x005160 0x007cc8 RW  0x200000
我希望在上面显示的带有RW的加载段(即数据段)之后,有一个具有RWE权限的单独加载段。实现这一点的一种方法是修改定制GNU链接器脚本,以选择我的新部分,并将它们放在bss段之后的单独段中。这将使其显示为第三个加载段

在链接器脚本中的bss结束后添加此

 .my_section = .;
 .my_section : { *(.my_section)}
这就是它的样子

>readelf -lW /tmp/sample

Program Headers:
  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align
  LOAD           0x000000 0x0000000000400000 0x0000000000400000 0x13e33f 0x13e33f R E 0x200000
  LOAD           0x13e510 0x000000000073e510 0x000000000073e510 0x005160 0x007cc8 RW  0x200000
  LOAD           0x13f000 0x000000000073f000 0x000000000073f000 0x0d6b00 0x0d6b00 RW  0x200000

如何在此段中获得可执行权限?我需要对链接器脚本做哪些更改?

我想这是因为你的.my_部分没有SHF_EXECINSTR。我认为你需要使用
PHDRS