输入文件:
section .data
db 0
section .text
nop
nop
命令:
nasm -felf32 -o main.o main.asm
objdump -S main.o
输出:
00000000 <.text>:
0: 90 nop
11: Address 0x0000000000000011 is out of bounds.
为什么会说:Address 0x0000000000000011 is out of bounds.
?
有效的方法:
objdump -d
删除.data
部分
将.data
部分放在.text
部分
使用GAS代替:
.data
.byte 0
.text
nop
nop
和
as --32 -o main.o main.S
与readelf -a
唯一有意义的区别在于nasm
将.text
对齐设置为16,将.data
设置为4
,而GAS将两者设置为1。这是罪魁祸首?
使用NASM 2.10.09,Binutils 2.24,Ubuntu 14.04 AMD64进行测试。
更新:从最近的提交bba037e0aef1f3b17cc6cf6fd041ed6110cc375a
构建时我无法重现,所以这可能已修复了吗?如果是这种情况,剩下的就是将修正提交一分为二。