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;
 
- }