public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/24528]  New: [ARM EB] strcpy() of small string constant produces wrong instructions
@ 2005-10-25 20:49 djohnson+gcc at sw dot starentnetworks dot com
  2005-10-25 21:40 ` [Bug target/24528] " pinskia at gcc dot gnu dot org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: djohnson+gcc at sw dot starentnetworks dot com @ 2005-10-25 20:49 UTC (permalink / raw)
  To: gcc-bugs

Given the following c code from sysvinit's init.c:

        if (ch->action == SYSINIT) strcpy(ch->rlevel, "#");

gcc is producing the correct set of instructions for little endian arm, but
incorrect set of instructions for big endian arm.


That line when compiled with -mlittle-endian (correct):

        ldr     r1, [r5, #40]
        cmp     r1, #13
        moveq   r3, #35
        moveq   r2, #0
        streqb  r3, [r5, #28]
        streqb  r2, [r5, #29]

That line when compiled with -mbig-endian (wrong):

        ldr     r1, [r5, #40]
        cmp     r1, #13
        moveq   r3, #0
        streqb  r3, [r5, #29]
        streqb  r3, [r5, #28]

This results in ch->rlevel[0] set to zero instead of '#'.

Offsets/enums are correct (40 for action, 28 for start of rlevel, and 13 for
SYSINIT).

I can post entire preprocessed and compiled output if needed.


compile line is:

arm-linux-gcc -c -mlong-calls -fPIC -mbig-endian -Wall -O2 -D_GNU_SOURCE init.c 

gcc version 3.3.6


-- 
           Summary: [ARM EB] strcpy() of small string constant produces
                    wrong instructions
           Product: gcc
           Version: 3.3.6
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: djohnson+gcc at sw dot starentnetworks dot com
 GCC build triplet: i686-linux
  GCC host triplet: i686-linux
GCC target triplet: arm-linux


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


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

end of thread, other threads:[~2005-10-26 12:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-10-25 20:49 [Bug c/24528] New: [ARM EB] strcpy() of small string constant produces wrong instructions djohnson+gcc at sw dot starentnetworks dot com
2005-10-25 21:40 ` [Bug target/24528] " pinskia at gcc dot gnu dot org
2005-10-25 21:43 ` djohnson+gcc at sw dot starentnetworks dot com
2005-10-25 22:05 ` djohnson+gcc at sw dot starentnetworks dot com
2005-10-26 12:33 ` rearnsha 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).