This is the mail archive of the gas2@sourceware.cygnus.com mailing list for the gas2 project.


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

Re: A PREFIX_SEPARATOR bug in binutils 2.9


> 
>    From: hjl@lucon.org (H.J. Lu)
>    Date: Tue, 21 Apr 1998 11:41:32 -0700 (PDT)
> 
>    In binutils, PREFIX_SEPARATOR is defined as '/' for x86. But there
>    is
> 
>    #if defined (TE_I386AIX) || defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
>    const char comment_chars[] = "#/";
>    #else
>    const char comment_chars[] = "#";
>    #endif
> 
>    in config/tc-i386.c. It makes '/' to start a comment. It won't work.
> 
> Why do you say ``it won't work?''  What do you mean?  That code has

PREFIX_SEPARATOR indicates a prefix, like

	data16PREFIX_SEPARATORmov foo,%eax

But '/' is also used to start a comment. So

	data16/mov foo,%eax

becomes

	data16

after preprocessing.

> been there since May 1993, so clearly it can work.
> 

Apparently, noone tried to use it or reported it.

>    We can define PREFIX_SEPARATOR as
> 
>    #if defined (TE_I386AIX) || defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
>    #define PREFIX_SEPARATOR '\\'
>    #else
>    #define PREFIX_SEPARATOR '/'
>    #endif
> 
>    But I don't like it. Any suggestion how to fix it?
> 
> What is the actual problem you are trying to solve?
> 

Can you try the code below on x86/elf?

# gcc -v x.s -c
# objdump -d x.o
# gcc -v x.s -c -Wa,-f
# objdump -d x.o

H.J.
----x.s--
/xmxmmmmmmmx
	data16/mov 	foo,%ax