public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/43643]  New: gcc -m64 -pg corrupts %rdx / %rcx register
@ 2010-04-04 21:08 jrgn dot keil at googlemail dot com
  2010-04-04 21:16 ` [Bug target/43643] " jrgn dot keil at googlemail dot com
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: jrgn dot keil at googlemail dot com @ 2010-04-04 21:08 UTC (permalink / raw)
  To: gcc-bugs

When profiling a 64bit binary compiled from the following source,
the resulting binary crashes in strdup() / strlen(), 
gcc's 64bit x86 profiling code corrupts the contents of the
%rcx / %rdx register.

% /tmp/gcc4/bin/gcc --version
gcc (GCC) 4.5.0 20100401 (experimental)

% cat test.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void
func(char *a, char *b, char *c)
{
        strdup(a);
        strdup(b);
        strdup(c);
}

int
main(int argc, char **argv)
{
        func("a", "b", "c");
        exit(0);
}

% /tmp/gcc4/bin/gcc -m64 -pg -o test test.c

% file test
test:           ELF 64-bit LSB executable AMD64 Version 1, dynamically linked,
not stripped

% ./test                                                           
Memory fault(coredump)

% pstack core                                                      
core 'core' of 19120:   ./test
 fffffd7fff23fb94 strlen () + 14
 000000000040184c func () + 44
 000000000040187d main () + 2f
 0000000000401138 _start () + 98


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 !


-- 
           Summary: gcc -m64 -pg corrupts %rdx / %rcx register
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jrgn dot keil at googlemail dot com
 GCC build triplet: i386-pc-solaris2.11
  GCC host triplet: i386-pc-solaris2.11
GCC target triplet: i386-pc-solaris2.11


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


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

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

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-04-04 21:08 [Bug target/43643] New: gcc -m64 -pg corrupts %rdx / %rcx register jrgn dot keil at googlemail dot com
2010-04-04 21:16 ` [Bug target/43643] " jrgn dot keil at googlemail dot com
2010-04-05 10:06 ` rguenth at gcc dot gnu dot org
2010-04-08 14:46 ` ro at gcc dot gnu dot org
2010-04-08 14:49 ` ro at gcc dot gnu dot org
2010-04-08 14:51 ` ro at gcc dot gnu dot org
2010-04-08 15:10 ` ro at gcc dot gnu dot org
2010-04-08 15:12 ` 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).