This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug debug/31004] New: arm ABI bug in transfer structure on the 4th parameter


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]