*** empty log message ***
[deliverable/binutils-gdb.git] / gdb / bfd-target.c
CommitLineData
bba2d28d
AC
1/* Very simple "bfd" target, for GDB, the GNU debugger.
2
0fb0cc75 3 Copyright (C) 2003, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
bba2d28d
AC
4
5 This file is part of GDB.
6
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
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
bba2d28d
AC
10 (at your option) any later version.
11
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.
16
17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
bba2d28d
AC
19
20#include "defs.h"
21#include "target.h"
22#include "bfd-target.h"
348f8c02 23#include "exec.h"
bba2d28d 24
2c0b251b 25static LONGEST
bba2d28d
AC
26target_bfd_xfer_partial (struct target_ops *ops,
27 enum target_object object,
961cb7b5
MK
28 const char *annex, gdb_byte *readbuf,
29 const gdb_byte *writebuf,
30 ULONGEST offset, LONGEST len)
bba2d28d
AC
31{
32 switch (object)
33 {
34 case TARGET_OBJECT_MEMORY:
07b82ea5
PA
35 {
36 struct target_section_table *table = ops->to_data;
37 return section_table_xfer_memory_partial (readbuf, writebuf, offset, len,
38 table->sections,
39 table->sections_end,
40 NULL);
41 }
bba2d28d
AC
42 default:
43 return -1;
44 }
45}
46
07b82ea5
PA
47static struct target_section_table *
48target_bfd_get_section_table (struct target_ops *ops)
49{
50 return ops->to_data;
51}
52
2c0b251b 53static void
bba2d28d
AC
54target_bfd_xclose (struct target_ops *t, int quitting)
55{
07b82ea5
PA
56 struct target_section_table *table = t->to_data;
57 if (table->sections)
58 bfd_close (table->sections->bfd);
59 xfree (table->sections);
60 xfree (table);
bba2d28d
AC
61 xfree (t);
62}
63
64struct target_ops *
65target_bfd_reopen (struct bfd *bfd)
66{
07b82ea5
PA
67 struct target_ops *t;
68 struct target_section_table *table;
69
70 table = XZALLOC (struct target_section_table);
71 build_section_table (bfd, &table->sections, &table->sections_end);
72
73 t = XZALLOC (struct target_ops);
bba2d28d 74 t->to_shortname = "bfd";
3d263c1d
BI
75 t->to_longname = _("BFD backed target");
76 t->to_doc = _("You should never see this");
07b82ea5 77 t->to_get_section_table = target_bfd_get_section_table;
bba2d28d
AC
78 t->to_xfer_partial = target_bfd_xfer_partial;
79 t->to_xclose = target_bfd_xclose;
07b82ea5 80 t->to_data = table;
348f8c02 81
bba2d28d
AC
82 return t;
83}
This page took 0.318316 seconds and 4 git commands to generate.