static void arm_wince_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); windows_init_abi (info, gdbarch); tdep->arm_breakpoint = arm_wince_le_breakpoint; tdep->arm_breakpoint_size = sizeof (arm_wince_le_breakpoint); tdep->thumb_breakpoint = arm_wince_thumb_le_breakpoint; tdep->thumb_breakpoint_size = sizeof (arm_wince_thumb_le_breakpoint); tdep->struct_return = pcc_struct_return; tdep->fp_model = ARM_FLOAT_SOFT_VFP; tdep->jb_pc = ARM_WINCE_JB_PC; tdep->jb_elt_size = ARM_WINCE_JB_ELEMENT_SIZE; /* On ARM WinCE char defaults to signed. */ set_gdbarch_char_signed (gdbarch, 1); /* Shared library handling. */ set_gdbarch_skip_trampoline_code (gdbarch, arm_pe_skip_trampoline_code); /* Single stepping. */ set_gdbarch_software_single_step (gdbarch, arm_software_single_step); /* Skip call to __gccmain that gcc places in main. */ set_gdbarch_skip_main_prologue (gdbarch, arm_wince_skip_main_prologue); }
static void i386_cygwin_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); windows_init_abi (info, gdbarch); set_gdbarch_skip_trampoline_code (gdbarch, i386_cygwin_skip_trampoline_code); set_gdbarch_skip_main_prologue (gdbarch, i386_skip_main_prologue); tdep->struct_return = reg_struct_return; tdep->gregset_reg_offset = i386_windows_gregset_reg_offset; tdep->gregset_num_regs = ARRAY_SIZE (i386_windows_gregset_reg_offset); tdep->sizeof_gregset = I386_WINDOWS_SIZEOF_GREGSET; tdep->sizeof_fpregset = 0; /* Core file support. */ set_gdbarch_core_xfer_shared_libraries (gdbarch, windows_core_xfer_shared_libraries); set_gdbarch_core_pid_to_str (gdbarch, i386_windows_core_pid_to_str); set_gdbarch_auto_wide_charset (gdbarch, i386_cygwin_auto_wide_charset); }
static void amd64_windows_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* The dwarf2 unwinder (appended very early by i386_gdbarch_init) is preferred over the SEH one. The reasons are: - binaries without SEH but with dwarf2 debug info are correcly handled (although they aren't ABI compliant, gcc before 4.7 didn't emit SEH info). - dwarf3 DW_OP_call_frame_cfa is correctly handled (it can only be handled if the dwarf2 unwinder is used). The call to amd64_init_abi appends default unwinders, that aren't compatible with the SEH one. */ frame_unwind_append_unwinder (gdbarch, &amd64_windows_frame_unwind); amd64_init_abi (info, gdbarch); windows_init_abi (info, gdbarch); /* On Windows, "long"s are only 32bit. */ set_gdbarch_long_bit (gdbarch, 32); /* Function calls. */ set_gdbarch_push_dummy_call (gdbarch, amd64_windows_push_dummy_call); set_gdbarch_return_value (gdbarch, amd64_windows_return_value); set_gdbarch_skip_main_prologue (gdbarch, amd64_skip_main_prologue); set_gdbarch_skip_trampoline_code (gdbarch, amd64_windows_skip_trampoline_code); set_gdbarch_skip_prologue (gdbarch, amd64_windows_skip_prologue); set_gdbarch_auto_wide_charset (gdbarch, amd64_windows_auto_wide_charset); }