> > http://msdn.microsoft.com/en-us/library/zthk2dkh(v=vs.80).aspx > > Reading that document, I think you're much much better off just > implementing your own versons of _return_value(), _push_dummy_call() > for Windows. The complication of "classifying" the parameters makes > very little sense on Windows, and the hookds you're adding (and that > have been added in the past) only complicate the generic ABI code. Makes sense indeed. Attached is a patch that adds a standalone implementation of that ABI. If it looks good to you, I'll finish the work by deleting all the hooks that should now be unnecessary. Overall, the Windows ABI seems to be simpler than the sysV one, and I suspect the new implementation will fix some bugs (without, hopefully, introducing too many! :-)). For instance, I noticed during testing that calling functions with long double now works properly. For the _return_value gdbarch routine, it's already independent of the notion of classifying (and independent of the code in amd64-tdep, so we should be OK there). gdb/ChangeLog: * amd64-tdep.c: #include "value.h" (amd64_windows_classify): Delete. (amd64_windows_passed_by_integer_register) (amd64_windows_passed_by_xmm_register) (amd64_windows_passed_by_pointer) (amd64_windows_adjust_args_passed_by_pointer) (amd64_windows_store_arg_in_reg, amd64_windows_push_arguments) (amd64_windows_push_dummy_call): New functions. (amd64_windows_init_abi): Remove setting of tdep->call_dummy_num_integer_regs, tdep->call_dummy_integer_regs, tdep->classify, tdep->memory_args_by_pointer and tdep->integer_param_regs_saved_in_caller_frame. Add call to set_gdbarch_push_dummy_call. OK to commit? Thanks, -- Joel