2004-07-26 Andrew Cagney <cagney@gnu.org>
[deliverable/binutils-gdb.git] / gdb / i386-cygwin-tdep.c
CommitLineData
1762d96d 1/* Target-dependent code for Cygwin running on i386's, for GDB.
acd5c798 2
1762d96d
CV
3 Copyright 2003 Free Software Foundation, Inc.
4
acd5c798 5 This file is part of GDB.
1762d96d 6
acd5c798
MK
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
1762d96d 11
acd5c798
MK
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
1762d96d 16
acd5c798
MK
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. */
1762d96d
CV
21
22#include "defs.h"
1762d96d 23#include "osabi.h"
f870b49b 24
acd5c798 25#include "gdb_string.h"
f870b49b 26
acd5c798 27#include "i386-tdep.h"
1762d96d 28
f7948b5f
JB
29static CORE_ADDR
30i386_cygwin_skip_trampoline_code (CORE_ADDR pc)
31{
32 return i386_pe_skip_trampoline_code (pc, NULL);
33}
34
35static int
36i386_cygwin_in_solib_call_trampoline (CORE_ADDR pc, char *name)
37{
38 return (i386_pe_skip_trampoline_code (pc, name) != 0);
39}
40
1762d96d
CV
41static void
42i386_cygwin_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
43{
44 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
45
f7948b5f
JB
46 set_gdbarch_in_solib_call_trampoline (gdbarch,
47 i386_cygwin_in_solib_call_trampoline);
48 set_gdbarch_skip_trampoline_code (gdbarch, i386_cygwin_skip_trampoline_code);
49
1762d96d
CV
50 tdep->struct_return = reg_struct_return;
51}
52
53static enum gdb_osabi
54i386_cygwin_osabi_sniffer (bfd * abfd)
55{
56 char *target_name = bfd_get_target (abfd);
57
58 /* Interix also uses pei-i386.
59 We need a way to distinguish between the two. */
60 if (strcmp (target_name, "pei-i386") == 0)
61 return GDB_OSABI_CYGWIN;
62
63 return GDB_OSABI_UNKNOWN;
64}
65
acd5c798
MK
66/* Provide a prototype to silence -Wmissing-prototypes. */
67void _initialize_i386_cygwin_tdep (void);
68
1762d96d
CV
69void
70_initialize_i386_cygwin_tdep (void)
71{
72 gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_coff_flavour,
73 i386_cygwin_osabi_sniffer);
74
75 gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_CYGWIN,
76 i386_cygwin_init_abi);
77}
This page took 0.148658 seconds and 4 git commands to generate.