[Bug target/46275] -masm=intel -fPIC causes global offset table issues

hezekiahehud at gmail dot com gcc-bugzilla@gcc.gnu.org
Tue Nov 2 19:08:00 GMT 2010


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46275

--- Comment #5 from hezekiahehud at gmail dot com 2010-11-02 19:08:32 UTC ---
The source code in question is for an anti-virus product, originally targeting
Windows.  It contains a great deal of inline assembly code, all of which is
written in Intel syntax.  The reason for the existing GCC + Intel compiler mix
is because the Intel compiler happily accepts the same Intel-style assembly
syntax and the same syntax for block-scoped assembly as MSVC.  However, we want
to move away from the Intel compiler.

So, we are working on a port to pure GCC and have worked our way around the
block-syntax and other MSVC-and-Intel-compiler-specific-syntax related issues,
but we cannot justify maintaining two copies of the same large set of inline
assembly code, one in AT&T and one in Intel syntax.  Hence, the requirement for
-masm=intel.

I realize that -masm=intel might not be a widely used option, but does that
really matter?  Ultimately, the compiler is producing bad output that will kill
any 32-bit program that uses globals compiled with -masm=intel -fPIC.  I once
again admit my ignorance of the relative severity of GCC bugs, but that seems
pretty bad to me.


(In reply to comment #4)
> -masm=intel is really only needed if you are going to do some post processing
> of the assembly code or want to read the assembly code in the Intel (non AT&T)
> format.  It should not change the code generation or the ABI.  Also it should
> be noted that the Intel compiler under GNU/Linux outputs assembly code in the
> AT&T format by default.  Also note the generated object files will be the same. 
> 
> From what you mentioned in comment #3, I don't see a reason to use -masm=intel.
>  Do you post process the assembly code?



More information about the Gcc-bugs mailing list