Richard Earnshaw wrote: > > This patch cleans up the way the ARM tdep code handles extracting and > storing return values. Not only does it convert the methods to the new > regcache abstraction but it also fixes (at least I hope it fixes) the > big-endian problems that Michael was reporting on a big-endian ARM. > > Michael, I've only run this through a little-endian testsuite. Could you > let me know if it solves the problems you were reporting. > > R. > > 2002-12-14 Richard Earnshaw > > * arm-tdep.c (convert_from_extended): New argument to hold the > type of floating point result we want to convert to. Make input > argument const. Fix all callers. > (convert_to_extended): Similarly. > (arm_extract_return_value): Now takes a regcache argument. Change > code to use regcache accessor functions. Correctly extract > smaller-than-word results on big-endian machines. > (arm_store_return_value): Now takes a regcache argument. Change > code to use regcache accessor functions. Correctly zero/sign extend > smaller than word results before storing into r0. > (arm_gdbarch_init): Register new-style extract_return_value and > store_return_value functions. Hi Richard, I do appologize for the delay -- I haven't had occasion to build an arm simulator until now. Now that I have, I can report that these changes do fix two fails for big-endian running callfuncs.exp. One of the fails was returning a one-byte struct, the other a two-byte struct. There were no other fails in callfuncs.exp. Alas, I do not remember what problems I was reporting earlier. I'll try to look them up in the morning. Meanwhile I wanted to share the positive results, and to say I see no reason not to commit your change. As is, they conflict with some of Elena's vector changes, but I've massaged them into closer conformance with a more recent revision. Here's my merged patch (not entirely up to date, but more recent than what appears here).