public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: dong_geming@hotmail.com
To: gcc-gnats@gcc.gnu.org
Cc: nickc@redhat.com
Subject: c/10834: GCC for ARM 3.3 still generates incorrect instructions for functions with __attribute__ ((interrupt ("IRQ")))
Date: Sat, 17 May 2003 09:26:00 -0000	[thread overview]
Message-ID: <20030517091713.1387.qmail@sources.redhat.com> (raw)


>Number:         10834
>Category:       c
>Synopsis:       GCC for ARM 3.3 still generates incorrect instructions for functions with __attribute__ ((interrupt ("IRQ")))
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Sat May 17 09:26:01 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Adam Dong
>Release:        GCC 3.3
>Organization:
>Environment:
cygwin --host=i686-pc-cygwin  --target=arm-elf
>Description:
I cmopiled the following file with gcc 3.3 for ARM.

  /* begin of file ext_irq.c */
void ext_IRQ0_handler(void) __attribute__ ((interrupt ("IRQ")));
void ext_IRQ0_handler(void)
{
   int i = 0;
   i = i++;
}
  /* end of file ext_irq.c */

If it was Compiled with the following command:
    arm-elf-gcc -gdwarf ext_irq.c -o.\debug\ext_irq.o
then Dump the ext_irq.o, and we can get the following code:

00000000 <ext_IRQ0_handler>:
   0:	e52dc004 	str	ip, [sp, -#4]!
   4:	e1a0c00d 	mov	ip, sp
   8:	e24ee004 	sub	lr, lr, #4	; 0x4
   c:	e92dd80e 	stmdb	sp!, {r1, r2, r3, fp, ip, lr, pc}
  10:	e24cb004 	sub	fp, ip, #4	; 0x4
  14:	e24dd004 	sub	sp, sp, #4	; 0x4
  18:	e3a03000 	mov	r3, #0	; 0x0
  1c:	e50b3020 	str	r3, [fp, -#32]
  20:	e24b1020 	sub	r1, fp, #32	; 0x20
  24:	e5913000 	ldr	r3, [r1]
  28:	e1a02003 	mov	r2, r3
  2c:	e50b2020 	str	r2, [fp, -#32]
  30:	e2833001 	add	r3, r3, #1	; 0x1
  34:	e5813000 	str	r3, [r1]
  38:	e95b980e 	ldmdb	fp, {r1, r2, r3, fp, ip, pc}^


On the other way, If it was Compiled with the following command:
    arm-elf-gcc -mthumb-interwork -gdwarf ext_irq.c -o.\debug\ext_irq.o
then Dump the ext_irq.o, and we can get the following code:

00000000 <ext_IRQ0_handler>:
   0:	e52dc004 	str	ip, [sp, -#4]!
   4:	e1a0c00d 	mov	ip, sp
   8:	e24ee004 	sub	lr, lr, #4	; 0x4
   c:	e92dd80e 	stmdb	sp!, {r1, r2, r3, fp, ip, lr, pc}
  10:	e24cb004 	sub	fp, ip, #4	; 0x4
  14:	e24dd004 	sub	sp, sp, #4	; 0x4
  18:	e3a03000 	mov	r3, #0	; 0x0
  1c:	e50b3020 	str	r3, [fp, -#32]
  20:	e24b1020 	sub	r1, fp, #32	; 0x20
  24:	e5913000 	ldr	r3, [r1]
  28:	e1a02003 	mov	r2, r3
  2c:	e50b2020 	str	r2, [fp, -#32]
  30:	e2833001 	add	r3, r3, #1	; 0x1
  34:	e5813000 	str	r3, [r1]
  38:	e91b680e 	ldmdb	fp, {r1, r2, r3, fp, sp, lr}
  3c:	e89d1000 	ldmia	sp, {ip}
  40:	e25ef004 	subs	pc, lr, #4	; 0x4

*******************************
***********PROBLEM*************
*******************************
   Both of the compiled results are not correct. Because
the "sp" register is not restored correctly, It can be 
discovered easily, if we debug this codes on a E.V. board.
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:


                 reply	other threads:[~2003-05-17  9:26 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20030517091713.1387.qmail@sources.redhat.com \
    --to=dong_geming@hotmail.com \
    --cc=gcc-gnats@gcc.gnu.org \
    --cc=nickc@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).