[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#121282: On i386, gcc-3.0 allows $ in indentifiers but not the asm



On Tue, Nov 27, 2001 at 07:18:43PM -0500, Christopher C. Chimelis wrote:
> 
> On Tue, 27 Nov 2001, Daniel Jacobowitz wrote:
> 
> > I look at this differently; it's our job to be accepting and GCC's job
> > to be conformant.  With Joseph and others actively deprecating
> > extensions, that seems a better place to take this up.
> 
> Agreed.  It's worth at least some discussion there before any decisions
> are made.  For now, I'll agree that other things need to be changed
> external to gcc (kernel code and/or Makefiles, etc) before flipping this
> option off, so we can just point at any further bug reports and say "bad
> code, please fix" and mark them wishlist until the issue is decided upon
> with upstream.
> 
> Ok, that makes sense to me then.  I guess I'll expect a few gas bugs to be
> filed sooner or later about this, but I can live with that :-)

It seems to me gcc output broken asm code, not just that gas does not handle
it correctly.

Here a new file that compiles and links OK but which produce
buggy output:

yellowpig% cat <<EOF >bug2.c
int $b=3;
int b=2;
main()
{
        printf("%d\n",$b);
}
EOF
yellowpig% gcc-3.0 bug.c
yellowpig% ./a.out
134518112


The offending asm instruction is of course
 movl $b,%eax

This is the same with gcc-2.95.

Also  gcc272 is (was?) the prefered compiler for the Linux kernel and, as I
previously reported,  Debian gcc272 does not allow dollars in identifiers by
default:

yellowpig% gcc272 bug2.c
bug2.c:1: parse error before `$'
bug2.c: In function `main':
bug2.c:5: parse error before `$'

(Also the NTFS code is not x86 specific, so it must also compile on platforms
where $ are forbidden.)

Cheers,

Bill. <ballombe@debian.org>

PS: Sorry to be so lame as to try to compile perl script with gcc:-) 



Reply to: