为什么objdump 2.24 -S说"地址超出范围"如果我在文本部分之前的数据部分中添加数据库,那么对于最小的NASM目标文件?

时间:2015-10-15 12:07:07

标签: assembly x86 nasm elf objdump

输入文件:

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构建时我无法重现,所以这可能已修复了吗?如果是这种情况,剩下的就是将修正提交一分为二。

0 个答案:

没有答案