normal应该执行权限,所以是ubuntu 18.04的结果很奇怪,而不是相反。中可执行
orw
以下都是相关的:
输出来自
.bss
Kernel版本
输出来自
readelf -Wl orw
Emulator细节(如果使用某种模拟器)。我怀疑您使用仿真器,并设置为模拟pre-
cat /proc/cpuinfo
Impliedbit)。
W
X
是非初始化的全局变量的段,因此它通常不可执行(不需要)。 如果您希望它可执行(因为您要测试要测试的计算机代码),则可能需要选择一个特殊段或创建两个段(一个可执行文件和其他读/写)重叠以允许写入代码虽然您也可以执行它。 可以在您用于链接可执行文件的标准脚本中指定这一点(当然可以使用其他名称),或者如果没有为您完成,则可以指定允许创建这些脚本的链接脚本。 阅读Linker文档(完全,很抱歉),以了解链接器如何处理处理器体系结构的(和其他)特质。
我不知道您正在使用什么体系结构,但是例如,英特尔处理器在片段中具有执行位权限,因为它们已经读写,这意味着可执行的段的内存访问必须是OpCode Fetch访问而不是读取加载数据寄存器的数据访问。 如果要访问文本段以进行数据读数,则需要添加读取对文本段的访问,以便能够查看您正在执行的代码。