public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/38085]  New: gcc -m64 -pg generates invalid assembler code on Solaris 10/x86
@ 2008-11-11 20:07 ro at gcc dot gnu dot org
  2009-05-28 21:02 ` [Bug target/38085] " mcintosh_shane at emc dot com
                   ` (13 more replies)
  0 siblings, 14 replies; 15+ messages in thread
From: ro at gcc dot gnu dot org @ 2008-11-11 20:07 UTC (permalink / raw)
  To: gcc-bugs

gcc -m64 -pg always generates invalid assembler code on Solaris 10/x86:

int
main (void)
{
}

% ./xgcc -B./ -m64 -pg -c ptest.c
/var/tmp//cc4kvaG9.s: Assembler messages:
/var/tmp//cc4kvaG9.s:18: Error: junk `@' after expression

Line 18 of the output file is
        leaq    .LP0@(%rip),%r11

This happens both with gas 2.15 (/usr/ccs/bin/gas) and with gas 2.19.50 (CVS
version 2.19.50.20081009).

The bug has been present since the introduction of x86_64 profiling support by
this patch:

Fri Nov 15 14:54:19 CET 2002  Jan Hubicka  <jh@suse.cz>

        * i386-protos.h (x86_function_profiler): New function
        * i386.h (MCOUNT_NAME): New.
        (PROFILE_COUNT_REGISTER): New.
        (FUNCTION_PROFILER): Move offline to ...
        * i386.c (x86_function_profiler) ... here; fix 64bit support

I have no idea what was intended here.


-- 
           Summary: gcc -m64 -pg generates invalid assembler code on Solaris
                    10/x86
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: hubicka at gcc dot gnu dot org
        ReportedBy: ro at gcc dot gnu dot org
 GCC build triplet: i386-pc-solaris2.10
  GCC host triplet: i386-pc-solaris2.10
GCC target triplet: i386-pc-solaris2.10


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


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

* [Bug target/38085] gcc -m64 -pg generates invalid assembler code on Solaris 10/x86
  2008-11-11 20:07 [Bug target/38085] New: gcc -m64 -pg generates invalid assembler code on Solaris 10/x86 ro at gcc dot gnu dot org
@ 2009-05-28 21:02 ` mcintosh_shane at emc dot com
  2009-07-29 22:12 ` bennett dot schneider at yahoo dot com
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: mcintosh_shane at emc dot com @ 2009-05-28 21:02 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from mcintosh_shane at emc dot com  2009-05-28 21:01 -------
I can confirm this bug exists when generating position independent code:

-bash-3.00$ uname -a
SunOS bu-navel 5.10 Generic_118855-33 i86pc i386

-bash-3.00$ /usr/sfw/bin/gcc --version
gcc (GCC) 3.4.3 (csl-sol210-3_4-branch+sol_rpath)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

-bash-3.00$ cat test.c
int
main(void)
{
}

-bash-3.00$ gcc -fPIC -m64 -pg -o test test.c
/var/tmp//ccAhFbgE.s: Assembler messages:
/var/tmp//ccAhFbgE.s:16: Error: junk `@' after expression

-bash-3.00$ /usr/sfw/bin/gcc -S -fPIC -m64 -pg -o test.s test.c

-bash-3.00$ cat test.s
        .file   "test.c"
        .text
.globl main
        .type   main, @function
main:
.LFB2:
        pushq   %rbp
.LCFI0:
        movq    %rsp, %rbp
.LCFI1:
        .data
        .align 8
.LP2:
        .quad   0
        .text
        leaq    .LP2@(%rip),%r11
        call    *_mcount@GOTPCREL(%rip)
        leave
        ret
.LFE2:
        .size   main, .-main
        .section        .eh_frame,"a",@unwind
.Lframe1:
        .long   .LECIE1-.LSCIE1
.LSCIE1:
        .long   0x0
        .byte   0x1
        .string "zR"
        .uleb128 0x1
        .sleb128 -8
        .byte   0x10
        .uleb128 0x1
        .byte   0x1b
        .byte   0xc
        .uleb128 0x7
        .uleb128 0x8
        .byte   0x90
        .uleb128 0x1
        .align 8
.LECIE1:
.LSFDE1:
        .long   .LEFDE1-.LASFDE1
.LASFDE1:
        .long   .LASFDE1-.Lframe1
        .long   .LFB2-.
        .long   .LFE2-.LFB2
        .uleb128 0x0
        .byte   0x4
        .long   .LCFI0-.LFB2
        .byte   0xe
        .uleb128 0x10
        .byte   0x86
        .uleb128 0x2
        .byte   0x4
        .long   .LCFI1-.LCFI0
        .byte   0xd
        .uleb128 0x6
        .align 8
.LEFDE1:
        .ident  "GCC: (GNU) 3.4.3 (csl-sol210-3_4-branch+sol_rpath)"


-- 


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


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

* [Bug target/38085] gcc -m64 -pg generates invalid assembler code on Solaris 10/x86
  2008-11-11 20:07 [Bug target/38085] New: gcc -m64 -pg generates invalid assembler code on Solaris 10/x86 ro at gcc dot gnu dot org
  2009-05-28 21:02 ` [Bug target/38085] " mcintosh_shane at emc dot com
@ 2009-07-29 22:12 ` bennett dot schneider at yahoo dot com
  2009-07-30 13:07 ` bennett dot schneider at yahoo dot com
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: bennett dot schneider at yahoo dot com @ 2009-07-29 22:12 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from bennett dot schneider at yahoo dot com  2009-07-29 22:11 -------
I've seen the same behaviour and was able to fix two separate issues.  First,
the @ symbol on the leaq instruction is not necessary.  This code is being
inserted because NO_PROFILE_COUNTERS is not defined ( See x86_function_profiler
in http://gcc.gnu.org/viewcvs/trunk/gcc/config/i386/i386.c?revision=150062).

After fixing the assembly, the programs compile successfully, but crash on
execution.  This seems to be related to code in the assembly header of _mcount
http://gcc.gnu.org/viewcvs/trunk/gcc/config/i386/gmon-sol2.c?revision=138078

The original code as copied from glibc doesn't match the present contents.  In
particular:
diff -u gcc/config/i386/gmon-sol2.c.orig gcc/config/i386/gmon-sol2.c
--- gcc/config/i386/gmon-sol2.c.orig    Wed Jul 29 08:57:15 2009
+++ gcc/config/i386/gmon-sol2.c Wed Jul 29 16:44:36 2009
@@ -266,8 +266,8 @@
     "\tmovq\t%r9,0x30(%rsp)\n"
     /* Get SELFPC (pushed by the call to this function) and
        FROMPCINDEX (via the frame pointer.  */
-    "\tmovq\t0x38(%rsp),%rdi\n"
-    "\tmovq\t0x8(%rbp),%rsi\n"
+    "\tmovq\t0x38(%rsp),%rsi\n"
+    "\tmovq\t0x8(%rbp),%rdi\n"
     "\tcallq\tinternal_mcount\n"
     /* Restore the saved registers.  */
     "\tmovq\t0x30(%rsp),%r9\n"
@@ -275,7 +275,7 @@
     "\tmovq\t0x20(%rsp),%rdi\n"
     "\tmovq\t0x18(%rsp),%rsi\n"
     "\tmovq\t0x10(%rsp),%rdx\n"
-    "\tmovq\t0x08(%rsp),%rdx\n"
+    "\tmovq\t0x08(%rsp),%rcx\n"
     "\tmovq\t(%rsp),%rax\n"
     "\taddq\t$0x38,%rsp\n"
     "\tretq\n"


After making this change, executables produce gmon.out, but I'm not sure the
output is completely correct.  The call graph output is correct (the parents
and children seem to be reversed), so there may also be descrepancies in
internal_mcount.


-- 

bennett dot schneider at yahoo dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bennett dot schneider at
                   |                            |yahoo dot com


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


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

* [Bug target/38085] gcc -m64 -pg generates invalid assembler code on Solaris 10/x86
  2008-11-11 20:07 [Bug target/38085] New: gcc -m64 -pg generates invalid assembler code on Solaris 10/x86 ro at gcc dot gnu dot org
  2009-05-28 21:02 ` [Bug target/38085] " mcintosh_shane at emc dot com
  2009-07-29 22:12 ` bennett dot schneider at yahoo dot com
@ 2009-07-30 13:07 ` bennett dot schneider at yahoo dot com
  2009-09-24  9:50 ` hailijuan at gmail dot com
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: bennett dot schneider at yahoo dot com @ 2009-07-30 13:07 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from bennett dot schneider at yahoo dot com  2009-07-30 13:06 -------
internal_mcount's from and self arguments were reversed from glibc's version. 
Here's the full diff of gmon-sol2.c that produces correct output:
--- gcc/config/i386/gmon-sol2.c.orig    Wed Jul 29 08:57:15 2009
+++ gcc/config/i386/gmon-sol2.c Thu Jul 30 07:53:16 2009
@@ -66,7 +66,7 @@
 extern void _mcleanup (void);
 extern void internal_mcount (
 #ifdef __x86_64__
-                            char *, unsigned short *
+                            unsigned short *, char *
 #else
                             void
 #endif
@@ -266,8 +266,8 @@
     "\tmovq\t%r9,0x30(%rsp)\n"
     /* Get SELFPC (pushed by the call to this function) and
        FROMPCINDEX (via the frame pointer.  */
-    "\tmovq\t0x38(%rsp),%rdi\n"
-    "\tmovq\t0x8(%rbp),%rsi\n"
+    "\tmovq\t0x38(%rsp),%rsi\n"
+    "\tmovq\t0x8(%rbp),%rdi\n"
     "\tcallq\tinternal_mcount\n"
     /* Restore the saved registers.  */
     "\tmovq\t0x30(%rsp),%r9\n"
@@ -275,7 +275,7 @@
     "\tmovq\t0x20(%rsp),%rdi\n"
     "\tmovq\t0x18(%rsp),%rsi\n"
     "\tmovq\t0x10(%rsp),%rdx\n"
-    "\tmovq\t0x08(%rsp),%rdx\n"
+    "\tmovq\t0x08(%rsp),%rcx\n"
     "\tmovq\t(%rsp),%rax\n"
     "\taddq\t$0x38,%rsp\n"
     "\tretq\n"
@@ -290,8 +290,8 @@
 void
 internal_mcount (
 #ifdef __x86_64__
-                char *selfpc,
-                unsigned short *frompcindex
+                unsigned short *frompcindex,
+                char *selfpc
 #else
                 void
 #endif


-- 


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


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

* [Bug target/38085] gcc -m64 -pg generates invalid assembler code on Solaris 10/x86
  2008-11-11 20:07 [Bug target/38085] New: gcc -m64 -pg generates invalid assembler code on Solaris 10/x86 ro at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2009-07-30 13:07 ` bennett dot schneider at yahoo dot com
@ 2009-09-24  9:50 ` hailijuan at gmail dot com
  2010-03-05 20:04 ` ro at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: hailijuan at gmail dot com @ 2009-09-24  9:50 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from hailijuan at gmail dot com  2009-09-24 09:50 -------
There is another problem with "gcc -m64 -pg" since 4.4.0, seen from below:

# file
/import/dr3/i386/gcc-4.4.0/lib/gcc/i386-pc-solaris2.11/4.4.0/amd64/gmon.o
/import/dr3/i386/gcc-4.4.0/lib/gcc/i386-pc-solaris2.11/4.4.0/amd64/gmon.o:    
ELF 32-bit LSB relocatable 80386 Version 1

Seen from gcc building log, gcc didn't build gmon.o with m64 as expected. Since
4.4, gcc/config/i386/t-sol2 has been moved to libgcc/config/i386/t-sol2.
However the flags for gmon.o turned to be empty. 

Any comments on the issue? Thanks,
-- Lijuan


(In reply to comment #3)
> internal_mcount's from and self arguments were reversed from glibc's version. 
> Here's the full diff of gmon-sol2.c that produces correct output:
> --- gcc/config/i386/gmon-sol2.c.orig    Wed Jul 29 08:57:15 2009
> +++ gcc/config/i386/gmon-sol2.c Thu Jul 30 07:53:16 2009
> @@ -66,7 +66,7 @@
>  extern void _mcleanup (void);
>  extern void internal_mcount (
>  #ifdef __x86_64__
> -                            char *, unsigned short *
> +                            unsigned short *, char *
>  #else
>                              void
>  #endif
> @@ -266,8 +266,8 @@
>      "\tmovq\t%r9,0x30(%rsp)\n"
>      /* Get SELFPC (pushed by the call to this function) and
>         FROMPCINDEX (via the frame pointer.  */
> -    "\tmovq\t0x38(%rsp),%rdi\n"
> -    "\tmovq\t0x8(%rbp),%rsi\n"
> +    "\tmovq\t0x38(%rsp),%rsi\n"
> +    "\tmovq\t0x8(%rbp),%rdi\n"
>      "\tcallq\tinternal_mcount\n"
>      /* Restore the saved registers.  */
>      "\tmovq\t0x30(%rsp),%r9\n"
> @@ -275,7 +275,7 @@
>      "\tmovq\t0x20(%rsp),%rdi\n"
>      "\tmovq\t0x18(%rsp),%rsi\n"
>      "\tmovq\t0x10(%rsp),%rdx\n"
> -    "\tmovq\t0x08(%rsp),%rdx\n"
> +    "\tmovq\t0x08(%rsp),%rcx\n"
>      "\tmovq\t(%rsp),%rax\n"
>      "\taddq\t$0x38,%rsp\n"
>      "\tretq\n"
> @@ -290,8 +290,8 @@
>  void
>  internal_mcount (
>  #ifdef __x86_64__
> -                char *selfpc,
> -                unsigned short *frompcindex
> +                unsigned short *frompcindex,
> +                char *selfpc
>  #else
>                  void
>  #endif
> 


-- 

hailijuan at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |hailijuan at gmail dot com


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


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

* [Bug target/38085] gcc -m64 -pg generates invalid assembler code on Solaris 10/x86
  2008-11-11 20:07 [Bug target/38085] New: gcc -m64 -pg generates invalid assembler code on Solaris 10/x86 ro at gcc dot gnu dot org
                   ` (3 preceding siblings ...)
  2009-09-24  9:50 ` hailijuan at gmail dot com
@ 2010-03-05 20:04 ` ro at gcc dot gnu dot org
  2010-03-05 20:10 ` ro at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: ro at gcc dot gnu dot org @ 2010-03-05 20:04 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from ro at gcc dot gnu dot org  2010-03-05 20:04 -------
Mine.


-- 

ro at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|hubicka at gcc dot gnu dot  |ro at gcc dot gnu dot org
                   |org                         |
             Status|UNCONFIRMED                 |ASSIGNED
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2010-03-05 20:04:04
               date|                            |


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


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

* [Bug target/38085] gcc -m64 -pg generates invalid assembler code on Solaris 10/x86
  2008-11-11 20:07 [Bug target/38085] New: gcc -m64 -pg generates invalid assembler code on Solaris 10/x86 ro at gcc dot gnu dot org
                   ` (5 preceding siblings ...)
  2010-03-05 20:10 ` ro at gcc dot gnu dot org
@ 2010-03-05 20:10 ` ro at gcc dot gnu dot org
  2010-03-22 20:12 ` ro at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: ro at gcc dot gnu dot org @ 2010-03-05 20:10 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from ro at gcc dot gnu dot org  2010-03-05 20:10 -------
Created an attachment (id=20030)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20030&action=view)
proposed patch


-- 


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


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

* [Bug target/38085] gcc -m64 -pg generates invalid assembler code on Solaris 10/x86
  2008-11-11 20:07 [Bug target/38085] New: gcc -m64 -pg generates invalid assembler code on Solaris 10/x86 ro at gcc dot gnu dot org
                   ` (4 preceding siblings ...)
  2010-03-05 20:04 ` ro at gcc dot gnu dot org
@ 2010-03-05 20:10 ` ro at gcc dot gnu dot org
  2010-03-05 20:10 ` ro at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: ro at gcc dot gnu dot org @ 2010-03-05 20:10 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from ro at gcc dot gnu dot org  2010-03-05 20:09 -------
I found none of the changes to internal_mcount to be necessary: with the
attached
patch, I could both bootstrap mainline successfully on i386-pc-solaris2.11, the
-pg related testsuite failures were gone, and I could profile a small test
program
with gcc -pg -m64.  To be certain I hadn't done anything wrong, I've used Sun
Studio 12.1 cc -xpg -m64 to verify the profiling output, and apart from the
exact
times, the results were identical.

So unless you have a testcase that misbehaves with that patch, I plan to submit
it shortly.


-- 


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


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

* [Bug target/38085] gcc -m64 -pg generates invalid assembler code on Solaris 10/x86
  2008-11-11 20:07 [Bug target/38085] New: gcc -m64 -pg generates invalid assembler code on Solaris 10/x86 ro at gcc dot gnu dot org
                   ` (6 preceding siblings ...)
  2010-03-05 20:10 ` ro at gcc dot gnu dot org
@ 2010-03-22 20:12 ` ro at gcc dot gnu dot org
  2010-03-22 20:39 ` ro at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: ro at gcc dot gnu dot org @ 2010-03-22 20:12 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from ro at gcc dot gnu dot org  2010-03-22 20:12 -------
Subject: Bug 38085

Author: ro
Date: Mon Mar 22 20:12:34 2010
New Revision: 157648

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=157648
Log:
        gcc:
        PR target/38085
        * config/i386/i386.c (x86_function_profiler)
        [!NO_PROFILE_COUNTERS]: Fix typo.
        * config/i386/gmon-sol2.c (_mcleanup) [__x86_64__]: Use call
        instead of callq.

        libgcc:
        PR target/38085
        * config/i386/t-sol2 ($(T)gmon.o): Use CFLAGS instead of
        MULTILIB_CFLAGS.
        ($(T)gcrt1.o): Likewise.
        ($(T)crt1.o): Likewise.
        ($(T)crti.o): Likewise.
        ($(T)crtn.o): Likewise.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/gmon-sol2.c
    trunk/gcc/config/i386/i386.c
    trunk/libgcc/ChangeLog
    trunk/libgcc/config/i386/t-sol2


-- 


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


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

* [Bug target/38085] gcc -m64 -pg generates invalid assembler code on Solaris 10/x86
  2008-11-11 20:07 [Bug target/38085] New: gcc -m64 -pg generates invalid assembler code on Solaris 10/x86 ro at gcc dot gnu dot org
                   ` (7 preceding siblings ...)
  2010-03-22 20:12 ` ro at gcc dot gnu dot org
@ 2010-03-22 20:39 ` ro at gcc dot gnu dot org
  2010-04-04 19:02 ` jrgn dot keil at googlemail dot com
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: ro at gcc dot gnu dot org @ 2010-03-22 20:39 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from ro at gcc dot gnu dot org  2010-03-22 20:39 -------
Fixed for 4.5.0.


-- 

ro at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|---                         |4.5.0


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


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

* [Bug target/38085] gcc -m64 -pg generates invalid assembler code on Solaris 10/x86
  2008-11-11 20:07 [Bug target/38085] New: gcc -m64 -pg generates invalid assembler code on Solaris 10/x86 ro at gcc dot gnu dot org
                   ` (8 preceding siblings ...)
  2010-03-22 20:39 ` ro at gcc dot gnu dot org
@ 2010-04-04 19:02 ` jrgn dot keil at googlemail dot com
  2010-04-04 21:10 ` jrgn dot keil at googlemail dot com
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: jrgn dot keil at googlemail dot com @ 2010-04-04 19:02 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from jrgn dot keil at googlemail dot com  2010-04-04 19:02 -------
(In reply to comment #6)
> I found none of the changes to internal_mcount to be necessary: with the
> attached
> patch, I could both bootstrap mainline successfully on i386-pc-solaris2.11, the
> -pg related testsuite failures were gone, and I could profile a small test
> program
> with gcc -pg -m64.  

Hmm, what about the part in the suggested patch from comment 2
that fixed restoring the %rcx register; lines 275,7 in gmon-sol2.c ?

Without that change a 64bit compiled profiled function destroys
the contents of the %rdx parameter and might corrupt %rcx:

gmon-sol2.c:

260      "\tmovq\t%rax,(%rsp)\n"
261     "\tmovq\t%rcx,0x08(%rsp)\n"
262     "\tmovq\t%rdx,0x10(%rsp)\n" 
...
277      "\tmovq\t0x10(%rsp),%rdx\n"
278     "\tmovq\t0x08(%rsp),%rdx\n"   <<<<<<<<<<<<<<
279     "\tmovq\t(%rsp),%rax\n" 

Line 278 must restore to %rcx !  This should still be broken.


-- 

jrgn dot keil at googlemail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jrgn dot keil at googlemail
                   |                            |dot com


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


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

* [Bug target/38085] gcc -m64 -pg generates invalid assembler code on Solaris 10/x86
  2008-11-11 20:07 [Bug target/38085] New: gcc -m64 -pg generates invalid assembler code on Solaris 10/x86 ro at gcc dot gnu dot org
                   ` (9 preceding siblings ...)
  2010-04-04 19:02 ` jrgn dot keil at googlemail dot com
@ 2010-04-04 21:10 ` jrgn dot keil at googlemail dot com
  2010-04-08 15:10 ` ro at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: jrgn dot keil at googlemail dot com @ 2010-04-04 21:10 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from jrgn dot keil at googlemail dot com  2010-04-04 21:09 -------
(In reply to comment #10)

I've filed bug 43643 for this problem.


-- 


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


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

* [Bug target/38085] gcc -m64 -pg generates invalid assembler code on Solaris 10/x86
  2008-11-11 20:07 [Bug target/38085] New: gcc -m64 -pg generates invalid assembler code on Solaris 10/x86 ro at gcc dot gnu dot org
                   ` (10 preceding siblings ...)
  2010-04-04 21:10 ` jrgn dot keil at googlemail dot com
@ 2010-04-08 15:10 ` ro at gcc dot gnu dot org
  2010-04-08 15:13 ` ro at gcc dot gnu dot org
  2010-04-08 15:14 ` ro at gcc dot gnu dot org
  13 siblings, 0 replies; 15+ messages in thread
From: ro at gcc dot gnu dot org @ 2010-04-08 15:10 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from ro at gcc dot gnu dot org  2010-04-08 15:09 -------
Subject: Bug 38085

Author: ro
Date: Thu Apr  8 15:09:17 2010
New Revision: 158133

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=158133
Log:
        gcc:
        PR target/43643
        * config/i386/gmon-sol2.c [__x86_64__]: Properly restore %rcx.

        gcc/testsuite:
        PR target/43643
        * gcc.dg/pr43643.c: New test.

        gcc:
        Backport from mainline:
        2010-03-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

        PR target/38085
        * config/i386/i386.c (x86_function_profiler)
        [!NO_PROFILE_COUNTERS]: Fix typo.
        * config/i386/gmon-sol2.c (_mcleanup) [__x86_64__]: Use call
        instead of callq.

        libgcc:
        Backport from mainline:
        2010-03-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

        PR target/38085
        * config/i386/t-sol2 ($(T)gmon.o): Use CFLAGS instead of
        MULTILIB_CFLAGS.
        ($(T)gcrt1.o): Likewise.
        ($(T)crt1.o): Likewise.
        ($(T)crti.o): Likewise.
        ($(T)crtn.o): Likewise.

Added:
    branches/gcc-4_4-branch/gcc/testsuite/gcc.dg/pr43643.c
Modified:
    branches/gcc-4_4-branch/gcc/ChangeLog
    branches/gcc-4_4-branch/gcc/config/i386/gmon-sol2.c
    branches/gcc-4_4-branch/gcc/config/i386/i386.c
    branches/gcc-4_4-branch/gcc/testsuite/ChangeLog
    branches/gcc-4_4-branch/libgcc/ChangeLog
    branches/gcc-4_4-branch/libgcc/config/i386/t-sol2


-- 


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


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

* [Bug target/38085] gcc -m64 -pg generates invalid assembler code on Solaris 10/x86
  2008-11-11 20:07 [Bug target/38085] New: gcc -m64 -pg generates invalid assembler code on Solaris 10/x86 ro at gcc dot gnu dot org
                   ` (11 preceding siblings ...)
  2010-04-08 15:10 ` ro at gcc dot gnu dot org
@ 2010-04-08 15:13 ` ro at gcc dot gnu dot org
  2010-04-08 15:14 ` ro at gcc dot gnu dot org
  13 siblings, 0 replies; 15+ messages in thread
From: ro at gcc dot gnu dot org @ 2010-04-08 15:13 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from ro at gcc dot gnu dot org  2010-04-08 15:13 -------
Reopen to document backport.


-- 

ro at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|FIXED                       |


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


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

* [Bug target/38085] gcc -m64 -pg generates invalid assembler code on Solaris 10/x86
  2008-11-11 20:07 [Bug target/38085] New: gcc -m64 -pg generates invalid assembler code on Solaris 10/x86 ro at gcc dot gnu dot org
                   ` (12 preceding siblings ...)
  2010-04-08 15:13 ` ro at gcc dot gnu dot org
@ 2010-04-08 15:14 ` ro at gcc dot gnu dot org
  13 siblings, 0 replies; 15+ messages in thread
From: ro at gcc dot gnu dot org @ 2010-04-08 15:14 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from ro at gcc dot gnu dot org  2010-04-08 15:14 -------
Fixed for 4.4.4, 4.5.0.


-- 

ro at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                URL|                            |http://gcc.gnu.org/ml/gcc-
                   |                            |patches/2010-
                   |                            |03/msg00609.html
             Status|REOPENED                    |RESOLVED
           Keywords|                            |patch
      Known to work|                            |4.4.4 4.5.0
         Resolution|                            |FIXED


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


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

end of thread, other threads:[~2010-04-08 15:14 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-11-11 20:07 [Bug target/38085] New: gcc -m64 -pg generates invalid assembler code on Solaris 10/x86 ro at gcc dot gnu dot org
2009-05-28 21:02 ` [Bug target/38085] " mcintosh_shane at emc dot com
2009-07-29 22:12 ` bennett dot schneider at yahoo dot com
2009-07-30 13:07 ` bennett dot schneider at yahoo dot com
2009-09-24  9:50 ` hailijuan at gmail dot com
2010-03-05 20:04 ` ro at gcc dot gnu dot org
2010-03-05 20:10 ` ro at gcc dot gnu dot org
2010-03-05 20:10 ` ro at gcc dot gnu dot org
2010-03-22 20:12 ` ro at gcc dot gnu dot org
2010-03-22 20:39 ` ro at gcc dot gnu dot org
2010-04-04 19:02 ` jrgn dot keil at googlemail dot com
2010-04-04 21:10 ` jrgn dot keil at googlemail dot com
2010-04-08 15:10 ` ro at gcc dot gnu dot org
2010-04-08 15:13 ` ro at gcc dot gnu dot org
2010-04-08 15:14 ` ro at gcc dot gnu dot org

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).