Re: Jump addresses messed up with GNU as



Sebastien wrote:
Hello,

I'm trying to assemble the following program (ARM architecture) :

.text
  nop
1:
  nop
  nop
  nop
  bal 1b

GNU as produces the following code (read back with objdump -d) :
Disassembly of section .text:

00000000 <.text>:
   0:   e1a00000        nop                     (mov r0,r0)
   4:   e1a00000        nop                     (mov r0,r0)
   8:   e1a00000        nop                     (mov r0,r0)
   c:   e1a00000        nop                     (mov r0,r0)
  10:   eaffffff        b       14 <.text+0x14>

As you can see, the address for the jump is outside the program :(
I assemble with the following command :
arm-elf-as -mcpu=arm7tdmi -o myprog.o myprog.s

The problem's exactly the same when not using a local label.
Any ideas ?

I just wonder:

Which version is your objdump?

Mine produced the following output:

temp$ arm-elf-objdump -D xyz.o

xyz.o:     file format elf32-littlearm

Disassembly of section .text:

00000000 <.text>:
   0:	e1a00000 	nop			(mov r0,r0)
   4:	e1a00000 	nop			(mov r0,r0)
   8:	e1a00000 	nop			(mov r0,r0)
   c:	e1a00000 	nop			(mov r0,r0)
  10:	eaffffff 	b	0x4
Disassembly of section .data:

My assembler and other binary utilities are of version 2.14.

--

Tauno Voipio
tauno voipio (at) iki fi

.