This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB 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]

RE: sh4 abi doc


Clarke, Stephen writes:
 > 
 > 
 > > From: Elena Zannoni [mailto:ezannoni@redhat.com] 
 > > Sent: Thursday, September 26, 2002 9:51 AM
 > 
 > > in the meantime, do you know what is the official rule for returning
 > > results on the stack, instead of in the return register?
 > > Seems that gdb and gcc are disagreeing on this.
 > > Gdb expects structs to be returned on the stack if their size is > 1.
 > 
 > Here's what we have:
 > 
 > "Aggregate types not bigger than 8 bytes that have the same size and
 > alignment as one of the integer scalar types are returned in the same
 > registers as the integer type they match.
 > 
 > "For example, a 2-byte aligned structure with size 2 bytes has the
 > same size and alignment as a short int, and will be returned in R0.
 > A 4-byte aligned structure with size 8 bytes has the same size and
 > alignment as a long long int, and will be returned in R0 and R1.
 > 
 > "When an aggregate type is returned in R0 and R1, R0 contains the first
 > four bytes of the aggregate, and R1 contains the remainder. If the size
 > of the aggregate type is not a multiple of 4 bytes, the aggregate is
 > tail-padded up to a multiple of 4 bytes. The value of the padding is
 > undefined.
 > 
 > "All other aggregate types are returned by address. The caller function
 > passes the address of an area large enough to hold the aggregate value
 > in R2. The called function stores the result in this location."
 > 

Ah, so gdb is wrong. The cutoff is 8 bytes.

 > I hope that makes sense, it was difficult to describe both clearly and
 > accurately!  
 > 

yes. except for BE/LE differences. But you clarified that already.

 > Actually, the SH-4 ABI documentation that Red Hat supplies with
 > the gnupro tools says the same thing in fewer words, but (IMO)
 > not as clearly.
 > 

Doh, I should have thought about that. 

Elena


 > Steve.


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