This patch lets store_struct_address save the struct_addr in a LIFO queue, from which extract_struct_value_address can then pull it out. The value of SP is used as a confidence check, to make sure each struct_addr goes to the right stack frame. If the struct_addr isn't found on the queue, then the target can fall back to extracting it from a register. I'm pretty sure this works -- I've tested it on mips, arm, d10v and i386. Kevin, would you by any chance be in a position to test it on ia64 and/or rs6000? I've included patches for all of the targets that use the infamous "horrid kludge" from rs6000-tdep.c. Those will of course have to be approved by individual maintainers, but the shared code could go in before then. Andrew, OK for mips? Tested, of course... Michael