This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Bad generation of jmp r/m32 with offset



>[snip]
> GNU as version 2.9.5 (BFD 2.9.5.0.22) issues no warning but instead
> assembles the jump incorectly as:
> 	FF6804	(JMP FAR mem)
> 
> Although it is the behavior of the assembler that has changed I
> believe this is a bug in gcc as it is emiting the wrong assembly.  If
> the jump instruction is changed from
> 		jmp 4(%eax)
> to
> 		jmp *4(%eax)
> 
> Then no warning is issued from as 2.9.1 and both assemblers generate
> the correct binary code.

This isn't a gcc bug, as I believe gcc has no way of knowing that a "*" is
needed for correct asm syntax.  You should provide the "*" in your asm
statement.

However, it *is* a bug in the 2.9.5.0.22 assembler, introduced when
.intel_mode syntax support was added.  It was fixed 1999-12-27,
and I see H.J. Lu has made a 2.9.5.0.24 release of the linux binutils at
ftp.varesearch.com/pub/support/hjl/binutils/

The new assembler will accept "jmp 4(%eax)" with a warning, and generate
the correct code.  Please test it out, and send assembler bug reports to
binutils@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]