This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug debug/31004] New: arm ABI bug in transfer structure on the 4th parameter
- From: "h_happy at 263 dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 1 Mar 2007 03:39:53 -0000
- Subject: [Bug debug/31004] New: arm ABI bug in transfer structure on the 4th parameter
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Hi all,
I try to debug this in -g -O0 option. But the subfunc debug info all goes
wrong.
#include "stdio.h"
typedef struct _x{
int y;
int z;
}X;
int subfunc(int a,int b,int c,X d)//i=>r0 j=>r1 k=>r2 l.y & l.z =>stack
{
printf("a %x b %x c %x d.y %x d.z %x\n",a,b,c,d.y,d.z);
}
int main()
{
int i=0,j=1,k=2;
X l={3,4};
printf("i %x j %x k %x l.y %x l.z %x\n",i,j,k,l.y,l.z);
subfunc(i,j,k,l); //i=>r0 j=>r1 k=>r2 l.y=>r3 l.z=>stack
return 1;
}
When I try to put struct l into the fourth parameter. gcc4.1.1 put l.y into r3
and l.z into stack and then call subfunc. In the subfunc gcc4.1.1 use stack
directly.
And parameter sequence in subfunc will be wrong in the debuger. b's address is
a. c's address is b , a & d are any unknown value.
But it'll only give your problem on debug. The result is correct.
Calilon Huang
Beijing
--
Summary: arm ABI bug in transfer structure on the 4th parameter
Product: gcc
Version: 4.1.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: debug
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: h_happy at 263 dot net
GCC build triplet: elf
GCC host triplet: x86
GCC target triplet: arm
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31004