gdb/bfd-target.c - gdb
Data types defined
Functions defined
Source code
- #include "defs.h"
- #include "target.h"
- #include "bfd-target.h"
- #include "exec.h"
- #include "gdb_bfd.h"
- struct target_bfd_data
- {
-
- struct bfd *bfd;
-
- struct target_section_table table;
- };
- static enum target_xfer_status
- target_bfd_xfer_partial (struct target_ops *ops,
- enum target_object object,
- const char *annex, gdb_byte *readbuf,
- const gdb_byte *writebuf,
- ULONGEST offset, ULONGEST len,
- ULONGEST *xfered_len)
- {
- switch (object)
- {
- case TARGET_OBJECT_MEMORY:
- {
- struct target_bfd_data *data = ops->to_data;
- return section_table_xfer_memory_partial (readbuf, writebuf,
- offset, len, xfered_len,
- data->table.sections,
- data->table.sections_end,
- NULL);
- }
- default:
- return TARGET_XFER_E_IO;
- }
- }
- static struct target_section_table *
- target_bfd_get_section_table (struct target_ops *ops)
- {
- struct target_bfd_data *data = ops->to_data;
- return &data->table;
- }
- static void
- target_bfd_xclose (struct target_ops *t)
- {
- struct target_bfd_data *data = t->to_data;
- gdb_bfd_unref (data->bfd);
- xfree (data->table.sections);
- xfree (data);
- xfree (t);
- }
- struct target_ops *
- target_bfd_reopen (struct bfd *abfd)
- {
- struct target_ops *t;
- struct target_bfd_data *data;
- data = XCNEW (struct target_bfd_data);
- data->bfd = abfd;
- gdb_bfd_ref (abfd);
- build_section_table (abfd, &data->table.sections, &data->table.sections_end);
- t = XCNEW (struct target_ops);
- t->to_shortname = "bfd";
- t->to_longname = _("BFD backed target");
- t->to_doc = _("You should never see this");
- t->to_get_section_table = target_bfd_get_section_table;
- t->to_xfer_partial = target_bfd_xfer_partial;
- t->to_xclose = target_bfd_xclose;
- t->to_data = data;
- t->to_magic = OPS_MAGIC;
- return t;
- }