public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/37520]  New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
@ 2008-09-14 20:47 gerald at pfeifer dot com
  2008-09-14 20:48 ` [Bug target/37520] " gerald at pfeifer dot com
                   ` (21 more replies)
  0 siblings, 22 replies; 23+ messages in thread
From: gerald at pfeifer dot com @ 2008-09-14 20:47 UTC (permalink / raw)
  To: gcc-bugs

Looking at my testsuite runs on i386-unknown-freebsd6.3 I noticed the
following testsuite failure.

FAIL: 23_containers/deque/init-list.cc (test for excess errors)
Excess errors:
/var/tmp//ccHEu2Vp.s:5429: Error: junk `(,%eax,4)' after expression
/var/tmp//ccHEu2Vp.s:5429: Error: suffix or operands invalid for `lea'

I'll attach *.ii and *.s files in a minute.


-- 
           Summary: junk `(,%eax,4)' after expression / suffix or operands
                    invalid for `lea' for libstdc++ deque/init-list.cc
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: gerald at pfeifer dot com
  GCC host triplet: i386-unknown-freebsd6.3


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
@ 2008-09-14 20:48 ` gerald at pfeifer dot com
  2008-09-14 20:49 ` gerald at pfeifer dot com
                   ` (20 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: gerald at pfeifer dot com @ 2008-09-14 20:48 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from gerald at pfeifer dot com  2008-09-14 20:47 -------
Created an attachment (id=16319)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16319&action=view)
init-list.ii


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
  2008-09-14 20:48 ` [Bug target/37520] " gerald at pfeifer dot com
@ 2008-09-14 20:49 ` gerald at pfeifer dot com
  2008-09-14 22:25 ` pinskia at gcc dot gnu dot org
                   ` (19 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: gerald at pfeifer dot com @ 2008-09-14 20:49 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from gerald at pfeifer dot com  2008-09-14 20:47 -------
Created an attachment (id=16320)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16320&action=view)
init-list.s


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
  2008-09-14 20:48 ` [Bug target/37520] " gerald at pfeifer dot com
  2008-09-14 20:49 ` gerald at pfeifer dot com
@ 2008-09-14 22:25 ` pinskia at gcc dot gnu dot org
  2008-09-15  9:02 ` ubizjak at gmail dot com
                   ` (18 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2008-09-14 22:25 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from pinskia at gcc dot gnu dot org  2008-09-14 22:24 -------
        leal    $_48(,%eax,4), %eax
...
        subl    $$_48, %eax

Hmm

Looks like someone forgot a $ encoding in some cases.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|junk `(,%eax,4)' after      |junk `(,%eax,4)' after
                   |expression / suffix or      |expression / suffix or
                   |operands invalid for `lea'  |operands invalid for `lea'
                   |for libstdc++ deque/init-   |for libstdc++ deque/init-
                   |list.cc                     |list.cc


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (2 preceding siblings ...)
  2008-09-14 22:25 ` pinskia at gcc dot gnu dot org
@ 2008-09-15  9:02 ` ubizjak at gmail dot com
  2008-09-21 10:16 ` gerald at pfeifer dot com
                   ` (17 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: ubizjak at gmail dot com @ 2008-09-15  9:02 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from ubizjak at gmail dot com  2008-09-15 09:01 -------
IMO, you need to define NO_DOLLAR_IN_LABEL in your configuration files.


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (3 preceding siblings ...)
  2008-09-15  9:02 ` ubizjak at gmail dot com
@ 2008-09-21 10:16 ` gerald at pfeifer dot com
  2009-01-05 20:02 ` bkoz at gcc dot gnu dot org
                   ` (16 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: gerald at pfeifer dot com @ 2008-09-21 10:16 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from gerald at pfeifer dot com  2008-09-21 10:15 -------
Uros, looking at this again, after manually changing
  leal    $_48(,%eax,4), %eax
to
  leal    _48(,%eax,4), %eax
things build again with the label being defined as
        .type   $_48, @object
        .size   $_48, 12
  $_48:
and used like
  cmpl    $$_48+12, %eax
without problems.

Do you believe this is a bug for leal in the older version of binutils
(2.15) FreeBSD ships?  I am surprised that it works when I remove the $.


I am not a gcc/config expert but can give NO_DOLLAR_IN_LABEL a try.

However, will this change ABI?  That is, if I know enable this in GCC, how
will this interact with an existing (FreeBSD) system where libraries likely
have been built with a system compiler that does not have this set?


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (4 preceding siblings ...)
  2008-09-21 10:16 ` gerald at pfeifer dot com
@ 2009-01-05 20:02 ` bkoz at gcc dot gnu dot org
  2009-01-05 20:23 ` bkoz at gcc dot gnu dot org
                   ` (15 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: bkoz at gcc dot gnu dot org @ 2009-01-05 20:02 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from bkoz at gcc dot gnu dot org  2009-01-05 20:01 -------

Adding 4.4.x reported against, as this testcase is not in 4.3.x.


-- 

bkoz at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bkoz at gcc dot gnu dot org
            Version|unknown                     |4.4.0


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (5 preceding siblings ...)
  2009-01-05 20:02 ` bkoz at gcc dot gnu dot org
@ 2009-01-05 20:23 ` bkoz at gcc dot gnu dot org
  2009-02-02 18:26 ` bkoz at gcc dot gnu dot org
                   ` (14 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: bkoz at gcc dot gnu dot org @ 2009-01-05 20:23 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from bkoz at gcc dot gnu dot org  2009-01-05 20:23 -------

The other kind of freebsd6.3 fail in libstdc++ is:

testsuite/25_algorithms/max/3.cc

/sw/test/GCC/trunk/libstdc++-v3/testsuite/25_algorithms/max/3.cc:26: undefined
reference to `_47'

/var/tmp//ccInT4La.o(.text._Z6test01v+0xb):/sw/test/GCC/trunk/libstdc++-v3/testsuite/25_algorithms/max/3.cc:26:
undefined reference to `_47'


On linux I see these in the linked binary:

0000000000600b58 d ._65
0000000000600b64 d ._66
0000000000600b70 d ._67
0000000000600b7c d ._68
0000000000600b88 d ._69
0000000000600b94 d ._70

So assuming this would be ._48 or '.' used instead of '$'. Does BSD already
define NO_DOT_IN_LABEL? Although I am not quite sure what is going on it
appears as if the freebsd config (and or assember) for correct linking of some
of these C++ entities is off.

Anyway. I thought NO_DOT_IN_LABEL/NO_DOLLAR_IN_LABEL will change the name of
exported symbols and is ABI-breaking.

IMHO figuring this out before the 4.4.0 release seems advisable. 


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (6 preceding siblings ...)
  2009-01-05 20:23 ` bkoz at gcc dot gnu dot org
@ 2009-02-02 18:26 ` bkoz at gcc dot gnu dot org
  2009-02-24 17:56 ` [Bug target/37520] [4.4 Regression] " bkoz at gcc dot gnu dot org
                   ` (13 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: bkoz at gcc dot gnu dot org @ 2009-02-02 18:26 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from bkoz at gcc dot gnu dot org  2009-02-02 18:26 -------

This looks like it happens on FreeBSD 7.1 as well:
http://gcc.gnu.org/ml/gcc-testresults/2009-02/msg00142.html

Any news on what is going on here? 

Please note that i386-bsd is a primary platform for a release, as per:
http://gcc.gnu.org/gcc-4.4/criteria.html

Thus, this should really be a higher priority than P3.


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] [4.4 Regression] junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (7 preceding siblings ...)
  2009-02-02 18:26 ` bkoz at gcc dot gnu dot org
@ 2009-02-24 17:56 ` bkoz at gcc dot gnu dot org
  2009-02-25  7:33 ` ubizjak at gmail dot com
                   ` (12 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: bkoz at gcc dot gnu dot org @ 2009-02-24 17:56 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from bkoz at gcc dot gnu dot org  2009-02-24 17:56 -------

Changed title for 4.4 regression.


-- 

bkoz at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to work|                            |4.3.1
            Summary|junk `(,%eax,4)' after      |[4.4 Regression] junk
                   |expression / suffix or      |`(,%eax,4)' after expression
                   |operands invalid for `lea'  |/ suffix or operands invalid
                   |for libstdc++ deque/init-   |for `lea' for libstdc++
                   |list.cc                     |deque/init-list.cc


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] [4.4 Regression] junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (8 preceding siblings ...)
  2009-02-24 17:56 ` [Bug target/37520] [4.4 Regression] " bkoz at gcc dot gnu dot org
@ 2009-02-25  7:33 ` ubizjak at gmail dot com
  2009-02-25  8:57 ` rguenth at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: ubizjak at gmail dot com @ 2009-02-25  7:33 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from ubizjak at gmail dot com  2009-02-25 07:33 -------
Confirmed.


-- 

ubizjak at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2009-02-25 07:33:36
               date|                            |
   Target Milestone|---                         |4.4.0


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] [4.4 Regression] junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (9 preceding siblings ...)
  2009-02-25  7:33 ` ubizjak at gmail dot com
@ 2009-02-25  8:57 ` rguenth at gcc dot gnu dot org
  2009-03-01 13:03 ` gerald at pfeifer dot com
                   ` (10 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-02-25  8:57 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from rguenth at gcc dot gnu dot org  2009-02-25 08:57 -------
Let's make this P1 until we are sure it is not an ABI problem.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P1


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] [4.4 Regression] junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (10 preceding siblings ...)
  2009-02-25  8:57 ` rguenth at gcc dot gnu dot org
@ 2009-03-01 13:03 ` gerald at pfeifer dot com
  2009-03-01 19:16 ` ubizjak at gmail dot com
                   ` (9 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: gerald at pfeifer dot com @ 2009-03-01 13:03 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from gerald at pfeifer dot com  2009-03-01 13:03 -------
(In reply to comment #8)
> This looks like it happens on FreeBSD 7.1 as well:
> http://gcc.gnu.org/ml/gcc-testresults/2009-02/msg00142.html
> 
> Any news on what is going on here? 

Yes, I have updated my nightly tester to see whether this may be specific
to that older versions.  Alas, no difference.

I also built GNU binutils 2.19, alas this does not seem to make a difference
either.

If anyone has any ideas / patches to verify, I will be happy to do my best.


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] [4.4 Regression] junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (11 preceding siblings ...)
  2009-03-01 13:03 ` gerald at pfeifer dot com
@ 2009-03-01 19:16 ` ubizjak at gmail dot com
  2009-03-01 20:13 ` ubizjak at gmail dot com
                   ` (8 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: ubizjak at gmail dot com @ 2009-03-01 19:16 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from ubizjak at gmail dot com  2009-03-01 19:16 -------
(In reply to comment #12)

> If anyone has any ideas / patches to verify, I will be happy to do my best.

Is there an ABI documentation that says which prefixes are correct for certain
cases? It is easy to fix this issue by setting a bunch of macros, but until
some document clearly says, which approach is correct, I think that we will be
just shooting in the dark.

Looking at Comment #5 and Comment #7, it is not clear even if we want to follow
some published ABI or we want to be compatible with existing system libraries.


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] [4.4 Regression] junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (12 preceding siblings ...)
  2009-03-01 19:16 ` ubizjak at gmail dot com
@ 2009-03-01 20:13 ` ubizjak at gmail dot com
  2009-03-01 20:20 ` hjl dot tools at gmail dot com
                   ` (7 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: ubizjak at gmail dot com @ 2009-03-01 20:13 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from ubizjak at gmail dot com  2009-03-01 20:13 -------
(In reply to comment #5)
> Uros, looking at this again, after manually changing
>   leal    $_48(,%eax,4), %eax
> to
>   leal    _48(,%eax,4), %eax
> things build again with the label being defined as
>         .type   $_48, @object
>         .size   $_48, 12
>   $_48:
> and used like
>   cmpl    $$_48+12, %eax
> without problems.
> 
> Do you believe this is a bug for leal in the older version of binutils
> (2.15) FreeBSD ships?  I am surprised that it works when I remove the $.

It works only because "_48" will create a relocation to an external object. You
can see this by using 'objdump -dr init-list.o", where init-list.o is created
with "gcc -O2 -m32 -c -std=gnu++0x"

When this part is assembled (on linux!):

        ja      .L306
        leal    ._48(,%eax,4), %eax
        movl    %eax, 44(%esp)
        subl    $._48, %eax
        sarl    $2, %eax

An offset to an object in .data section is calculated at assembly time, so you
will get:

...
 579:   0f 87 01 02 00 00       ja     780 <main+0x780>
 57f:   8d 04 85 18 00 00 00    lea    0x18(,%eax,4),%eax
                        582: R_386_32   .data
 586:   89 44 24 2c             mov    %eax,0x2c(%esp)
 58a:   2d 18 00 00 00          sub    $0x18,%eax
                        58b: R_386_32   .data
 58f:   c1 f8 02                sar    $0x2,%eax
...

while removing "." (equivalent to removing "$" on BSD) from the lea operand
leaves an relocation to external symbol:

...
 579:   0f 87 01 02 00 00       ja     780 <main+0x780>
 57f:   8d 04 85 00 00 00 00    lea    0x0(,%eax,4),%eax
                        582: R_386_32   _48
 586:   89 44 24 2c             mov    %eax,0x2c(%esp)
 58a:   2d 18 00 00 00          sub    $0x18,%eax
                        58b: R_386_32   .data
 58f:   c1 f8 02                sar    $0x2,%eax

I found much more interesting the fact, that both:

        subl    ._48, %eax
and
        subl    $._48, %eax

produce the same result, while changing:

        leal    ._48(,%eax,4), %eax
to
        leal    $._48(,%eax,4), %eax

produces:

init-list.s: Assembler messages:
init-list.s:2664: Error: junk `(,%eax,4)' after expression
init-list.s:2664: Error: suffix or operands invalid for `lea'

I think that H.J. can explain the reason for this inconsistency in the
assembler.


-- 

ubizjak at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |hjl dot tools at gmail dot
                   |                            |com


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] [4.4 Regression] junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (13 preceding siblings ...)
  2009-03-01 20:13 ` ubizjak at gmail dot com
@ 2009-03-01 20:20 ` hjl dot tools at gmail dot com
  2009-03-01 20:23 ` hjl dot tools at gmail dot com
                   ` (6 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: hjl dot tools at gmail dot com @ 2009-03-01 20:20 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from hjl dot tools at gmail dot com  2009-03-01 20:20 -------
(In reply to comment #14)
> I think that H.J. can explain the reason for this inconsistency in the
> assembler.
> 

LOCAL_LABELS_DOLLAR never really works completely for x86 assembler.
When assembler sees $foo, it can't tell if $foo is a label or the value
of symbol foo. I do have a hack for x86 assembler, which assumes $_XXX
is a local label if LOCAL_LABELS_DOLLAR is defined. But it won't work
when _XXX is a real label.


-- 

hjl dot tools at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|2009-02-25 07:33:36         |2009-03-01 20:20:05
               date|                            |


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] [4.4 Regression] junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (14 preceding siblings ...)
  2009-03-01 20:20 ` hjl dot tools at gmail dot com
@ 2009-03-01 20:23 ` hjl dot tools at gmail dot com
  2009-03-01 20:40 ` [Bug target/37520] NO_DOLLAR_IN_LABEL doesn't work on FreeBSD/x86 hjl dot tools at gmail dot com
                   ` (5 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: hjl dot tools at gmail dot com @ 2009-03-01 20:23 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #16 from hjl dot tools at gmail dot com  2009-03-01 20:23 -------
I posted a patch at:

http://gcc.gnu.org/ml/gcc-patches/2009-03/msg00049.html

It may breaks ABI for platforms where NO_DOLLAR_IN_LABEL
is undefined:

bash-3.2$ grep NO_DOLLAR_IN_LABEL *.h */*.h | grep undef
freebsd.h:#undef NO_DOLLAR_IN_LABEL
vx-common.h:#undef NO_DOLLAR_IN_LABEL
i386/openbsdelf.h:#undef NO_DOLLAR_IN_LABEL
xtensa/elf.h:#undef NO_DOLLAR_IN_LABEL


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] NO_DOLLAR_IN_LABEL doesn't work on FreeBSD/x86
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (15 preceding siblings ...)
  2009-03-01 20:23 ` hjl dot tools at gmail dot com
@ 2009-03-01 20:40 ` hjl dot tools at gmail dot com
  2009-03-01 21:54 ` [Bug target/37520] Undefine " hjl dot tools at gmail dot com
                   ` (4 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: hjl dot tools at gmail dot com @ 2009-03-01 20:40 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #17 from hjl dot tools at gmail dot com  2009-03-01 20:40 -------
I opened an assembler bug:

http://sourceware.org/bugzilla/show_bug.cgi?id=9915

I believe it is a mistake to define LOCAL_LABELS_DOLLAR for any
x86 targets where '$' is used as the immediate prefix. If it worked
on such a x86 target before, it was a pure luck.


-- 

hjl dot tools at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[4.4 Regression] junk       |NO_DOLLAR_IN_LABEL doesn't
                   |`(,%eax,4)' after expression|work on FreeBSD/x86
                   |/ suffix or operands invalid|
                   |for `lea' for libstdc++     |
                   |deque/init-list.cc          |


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] Undefine NO_DOLLAR_IN_LABEL doesn't work on FreeBSD/x86
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (16 preceding siblings ...)
  2009-03-01 20:40 ` [Bug target/37520] NO_DOLLAR_IN_LABEL doesn't work on FreeBSD/x86 hjl dot tools at gmail dot com
@ 2009-03-01 21:54 ` hjl dot tools at gmail dot com
  2009-03-02  3:20 ` [Bug target/37520] NO_DOLLAR_IN_LABEL should be defined on x86 targets hjl dot tools at gmail dot com
                   ` (3 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: hjl dot tools at gmail dot com @ 2009-03-01 21:54 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #18 from hjl dot tools at gmail dot com  2009-03-01 21:53 -------
I will check in a patch:

http://sourceware.org/ml/binutils/2009-03/msg00008.html

to undefine LOCAL_LABELS_DOLLAR for x86 assembler. I suggest that
gcc should define NO_DOLLAR_IN_LABEL for all x86 targets.


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] NO_DOLLAR_IN_LABEL should be defined on x86 targets
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (17 preceding siblings ...)
  2009-03-01 21:54 ` [Bug target/37520] Undefine " hjl dot tools at gmail dot com
@ 2009-03-02  3:20 ` hjl dot tools at gmail dot com
  2009-03-02 10:08 ` rguenth at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: hjl dot tools at gmail dot com @ 2009-03-02  3:20 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #19 from hjl dot tools at gmail dot com  2009-03-02 03:20 -------
A patch is posted at

http://gcc.gnu.org/ml/gcc-patches/2009-03/msg00061.html


-- 

hjl dot tools at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                URL|                            |http://gcc.gnu.org/ml/gcc-
                   |                            |patches/2009-
                   |                            |03/msg00061.html


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] NO_DOLLAR_IN_LABEL should be defined on x86 targets
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (18 preceding siblings ...)
  2009-03-02  3:20 ` [Bug target/37520] NO_DOLLAR_IN_LABEL should be defined on x86 targets hjl dot tools at gmail dot com
@ 2009-03-02 10:08 ` rguenth at gcc dot gnu dot org
  2009-03-07  1:47 ` hjl at gcc dot gnu dot org
  2009-03-07  1:48 ` hjl dot tools at gmail dot com
  21 siblings, 0 replies; 23+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-03-02 10:08 UTC (permalink / raw)
  To: gcc-bugs



-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P1                          |P3
   Target Milestone|4.4.0                       |---


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] NO_DOLLAR_IN_LABEL should be defined on x86 targets
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (19 preceding siblings ...)
  2009-03-02 10:08 ` rguenth at gcc dot gnu dot org
@ 2009-03-07  1:47 ` hjl at gcc dot gnu dot org
  2009-03-07  1:48 ` hjl dot tools at gmail dot com
  21 siblings, 0 replies; 23+ messages in thread
From: hjl at gcc dot gnu dot org @ 2009-03-07  1:47 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #20 from hjl at gcc dot gnu dot org  2009-03-07 01:47 -------
Subject: Bug 37520

Author: hjl
Date: Sat Mar  7 01:47:25 2009
New Revision: 144692

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=144692
Log:
2009-03-06  H.J. Lu  <hongjiu.lu@intel.com>

        PR c++/37520
        * cp-tree.h: Check NO_DOT_IN_LABEL before NO_DOLLAR_IN_LABEL
        when mangling symbols.

Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/cp-tree.h


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug target/37520] NO_DOLLAR_IN_LABEL should be defined on x86 targets
  2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
                   ` (20 preceding siblings ...)
  2009-03-07  1:47 ` hjl at gcc dot gnu dot org
@ 2009-03-07  1:48 ` hjl dot tools at gmail dot com
  21 siblings, 0 replies; 23+ messages in thread
From: hjl dot tools at gmail dot com @ 2009-03-07  1:48 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #21 from hjl dot tools at gmail dot com  2009-03-07 01:48 -------
Fixed.


-- 

hjl dot tools at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|---                         |4.4.0


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2009-03-07  1:48 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-09-14 20:47 [Bug target/37520] New: junk `(,%eax,4)' after expression / suffix or operands invalid for `lea' for libstdc++ deque/init-list.cc gerald at pfeifer dot com
2008-09-14 20:48 ` [Bug target/37520] " gerald at pfeifer dot com
2008-09-14 20:49 ` gerald at pfeifer dot com
2008-09-14 22:25 ` pinskia at gcc dot gnu dot org
2008-09-15  9:02 ` ubizjak at gmail dot com
2008-09-21 10:16 ` gerald at pfeifer dot com
2009-01-05 20:02 ` bkoz at gcc dot gnu dot org
2009-01-05 20:23 ` bkoz at gcc dot gnu dot org
2009-02-02 18:26 ` bkoz at gcc dot gnu dot org
2009-02-24 17:56 ` [Bug target/37520] [4.4 Regression] " bkoz at gcc dot gnu dot org
2009-02-25  7:33 ` ubizjak at gmail dot com
2009-02-25  8:57 ` rguenth at gcc dot gnu dot org
2009-03-01 13:03 ` gerald at pfeifer dot com
2009-03-01 19:16 ` ubizjak at gmail dot com
2009-03-01 20:13 ` ubizjak at gmail dot com
2009-03-01 20:20 ` hjl dot tools at gmail dot com
2009-03-01 20:23 ` hjl dot tools at gmail dot com
2009-03-01 20:40 ` [Bug target/37520] NO_DOLLAR_IN_LABEL doesn't work on FreeBSD/x86 hjl dot tools at gmail dot com
2009-03-01 21:54 ` [Bug target/37520] Undefine " hjl dot tools at gmail dot com
2009-03-02  3:20 ` [Bug target/37520] NO_DOLLAR_IN_LABEL should be defined on x86 targets hjl dot tools at gmail dot com
2009-03-02 10:08 ` rguenth at gcc dot gnu dot org
2009-03-07  1:47 ` hjl at gcc dot gnu dot org
2009-03-07  1:48 ` hjl dot tools at gmail dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).