Remove the exec_bfd macro
authorTom Tromey <tom@tromey.com>
Thu, 29 Oct 2020 21:04:33 +0000 (15:04 -0600)
committerTom Tromey <tom@tromey.com>
Thu, 29 Oct 2020 21:04:36 +0000 (15:04 -0600)
This removes the exec_bfd macro, in favor of new accessors on
program_space.  In one spot the accessor can't be used; but this is
still a big improvement over the macro, IMO.

gdb/ChangeLog
2020-10-29  Tom Tromey  <tom@tromey.com>

* windows-tdep.c (windows_solib_create_inferior_hook): Update.
* symfile.c (reread_symbols): Update.
* symfile-mem.c (add_symbol_file_from_memory_command)
(add_vsyscall_page): Update.
* source-cache.c (source_cache::get_plain_source_lines): Update.
* solib-svr4.c (find_program_interpreter, elf_locate_base)
(svr4_current_sos_direct, svr4_exec_displacement)
(svr4_relocate_main_executable): Update.
(svr4_iterate_over_objfiles_in_search_order): Update.
* solib-frv.c (enable_break2, enable_break): Update.
* solib-dsbt.c (lm_base, enable_break): Update.
* solib-darwin.c (find_program_interpreter)
(darwin_solib_create_inferior_hook): Update.
* sol-thread.c (rw_common, ps_pdmodel): Update.
* rs6000-nat.c (rs6000_nat_target::create_inferior): Update.
* remote.c (compare_sections_command)
(remote_target::trace_set_readonly_regions): Update.
* remote-sim.c (get_sim_inferior_data)
(gdbsim_target::create_inferior, gdbsim_target::create_inferior): Update.
(gdbsim_target_open, gdbsim_target::files_info): Update.
* exec.h (exec_bfd): Remove macro.
* progspace.c (initialize_progspace): Update.
* proc-service.c (ps_addr_to_core_addr, core_addr_to_ps_addr):
Update.
* nto-procfs.c (nto_procfs_target::post_attach)
(nto_procfs_target::create_inferior): Update.
* maint.c (maintenance_info_sections): Update.
* linux-thread-db.c (thread_db_target::get_thread_local_address):
Update.
* infcmd.c (post_create_inferior): Update.
* gcore.c (default_gcore_arch, default_gcore_target): Update.
(objfile_find_memory_regions): Update.
* exec.c (validate_exec_file, exec_file_attach)
(exec_read_partial_read_only, print_section_info): Update.
* corelow.c (core_target_open): Update.
* corefile.c (reopen_exec_file, validate_files): Update.
* arm-tdep.c (gdb_print_insn_arm): Update.
* arch-utils.c (gdbarch_update_p, default_print_insn): Update.
* progspace.h (struct program_space) <exec_bfd, set_exec_bfd>: New
methods.

28 files changed:
gdb/ChangeLog
gdb/arch-utils.c
gdb/arm-tdep.c
gdb/corefile.c
gdb/corelow.c
gdb/exec.c
gdb/exec.h
gdb/gcore.c
gdb/infcmd.c
gdb/linux-thread-db.c
gdb/maint.c
gdb/nto-procfs.c
gdb/proc-service.c
gdb/progspace.c
gdb/progspace.h
gdb/remote-sim.c
gdb/remote.c
gdb/rs6000-nat.c
gdb/sol-thread.c
gdb/solib-darwin.c
gdb/solib-dsbt.c
gdb/solib-frv.c
gdb/solib-svr4.c
gdb/source-cache.c
gdb/symfile-mem.c
gdb/symfile.c
gdb/tracefile-tfile.c
gdb/windows-tdep.c

index 3ab3564b75248d55b1547f3718c8db86e5bb0110..028329e7988aef61c8bbbadbd6d6ea1c8a50ee4b 100644 (file)
@@ -1,3 +1,46 @@
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+       * windows-tdep.c (windows_solib_create_inferior_hook): Update.
+       * symfile.c (reread_symbols): Update.
+       * symfile-mem.c (add_symbol_file_from_memory_command)
+       (add_vsyscall_page): Update.
+       * source-cache.c (source_cache::get_plain_source_lines): Update.
+       * solib-svr4.c (find_program_interpreter, elf_locate_base)
+       (svr4_current_sos_direct, svr4_exec_displacement)
+       (svr4_relocate_main_executable): Update.
+       (svr4_iterate_over_objfiles_in_search_order): Update.
+       * solib-frv.c (enable_break2, enable_break): Update.
+       * solib-dsbt.c (lm_base, enable_break): Update.
+       * solib-darwin.c (find_program_interpreter)
+       (darwin_solib_create_inferior_hook): Update.
+       * sol-thread.c (rw_common, ps_pdmodel): Update.
+       * rs6000-nat.c (rs6000_nat_target::create_inferior): Update.
+       * remote.c (compare_sections_command)
+       (remote_target::trace_set_readonly_regions): Update.
+       * remote-sim.c (get_sim_inferior_data)
+       (gdbsim_target::create_inferior, gdbsim_target::create_inferior): Update.
+       (gdbsim_target_open, gdbsim_target::files_info): Update.
+       * exec.h (exec_bfd): Remove macro.
+       * progspace.c (initialize_progspace): Update.
+       * proc-service.c (ps_addr_to_core_addr, core_addr_to_ps_addr):
+       Update.
+       * nto-procfs.c (nto_procfs_target::post_attach)
+       (nto_procfs_target::create_inferior): Update.
+       * maint.c (maintenance_info_sections): Update.
+       * linux-thread-db.c (thread_db_target::get_thread_local_address):
+       Update.
+       * infcmd.c (post_create_inferior): Update.
+       * gcore.c (default_gcore_arch, default_gcore_target): Update.
+       (objfile_find_memory_regions): Update.
+       * exec.c (validate_exec_file, exec_file_attach)
+       (exec_read_partial_read_only, print_section_info): Update.
+       * corelow.c (core_target_open): Update.
+       * corefile.c (reopen_exec_file, validate_files): Update.
+       * arm-tdep.c (gdb_print_insn_arm): Update.
+       * arch-utils.c (gdbarch_update_p, default_print_insn): Update.
+       * progspace.h (struct program_space) <exec_bfd, set_exec_bfd>: New
+       methods.
+
 2020-10-29  Tom Tromey  <tom@tromey.com>
 
        * progspace.h (current_target_sections): Remove macro.
index 27ac2f7232885da7fbc9041da789b5b24443414d..1f66e0384a0b25901b84ba899ea45a2c48ca933f 100644 (file)
@@ -527,7 +527,7 @@ gdbarch_update_p (struct gdbarch_info info)
 
   /* Check for the current file.  */
   if (info.abfd == NULL)
-    info.abfd = exec_bfd;
+    info.abfd = current_program_space->exec_bfd ();
   if (info.abfd == NULL)
     info.abfd = core_bfd;
 
@@ -989,7 +989,7 @@ default_print_insn (bfd_vma memaddr, disassemble_info *info)
   disassembler_ftype disassemble_fn;
 
   disassemble_fn = disassembler (info->arch, info->endian == BFD_ENDIAN_BIG,
-                                info->mach, exec_bfd);
+                                info->mach, current_program_space->exec_bfd ());
 
   gdb_assert (disassemble_fn != NULL);
   return (*disassemble_fn) (memaddr, info);
index a214f22d7ad10740c67509c4018b4494c5e7f7fe..c007a3865c6d68841a69c88d2cc24c73e4790f9a 100644 (file)
@@ -7756,9 +7756,10 @@ gdb_print_insn_arm (bfd_vma memaddr, disassemble_info *info)
   /* GDB is able to get bfd_mach from the exe_bfd, info->mach is
      accurate, so mark USER_SPECIFIED_MACHINE_TYPE bit.  Otherwise,
      opcodes/arm-dis.c:print_insn reset info->mach, and it will trigger
-     the assert on the mismatch of info->mach and bfd_get_mach (exec_bfd)
-     in default_print_insn.  */
-  if (exec_bfd != NULL)
+     the assert on the mismatch of info->mach and
+     bfd_get_mach (current_program_space->exec_bfd ()) in
+     default_print_insn.  */
+  if (current_program_space->exec_bfd () != NULL)
     info->flags |= USER_SPECIFIED_MACHINE_TYPE;
 
   return default_print_insn (memaddr, info);
index 1586e9f175a0476e3a141f33378bcc88b7483607..78abbd0716ee61574d0a2fa61fdc7c020c2a5134 100644 (file)
@@ -108,11 +108,11 @@ reopen_exec_file (void)
   struct stat st;
 
   /* Don't do anything if there isn't an exec file.  */
-  if (exec_bfd == NULL)
+  if (current_program_space->exec_bfd () == NULL)
     return;
 
   /* If the timestamp of the exec file has changed, reopen it.  */
-  std::string filename = bfd_get_filename (exec_bfd);
+  std::string filename = bfd_get_filename (current_program_space->exec_bfd ());
   res = stat (filename.c_str (), &st);
 
   if (res == 0
@@ -132,11 +132,13 @@ reopen_exec_file (void)
 void
 validate_files (void)
 {
-  if (exec_bfd && core_bfd)
+  if (current_program_space->exec_bfd () && core_bfd)
     {
-      if (!core_file_matches_executable_p (core_bfd, exec_bfd))
+      if (!core_file_matches_executable_p (core_bfd,
+                                          current_program_space->exec_bfd ()))
        warning (_("core file may not match specified executable file."));
-      else if (bfd_get_mtime (exec_bfd) > bfd_get_mtime (core_bfd))
+      else if (bfd_get_mtime (current_program_space->exec_bfd ())
+              > bfd_get_mtime (core_bfd))
        warning (_("exec file is newer than core file."));
     }
 }
index 4f3c88020205133bf4ed2a7ffef878c0ca4e7539..e284efcac71819af20e33fcb6664dea1797ff4d3 100644 (file)
@@ -454,7 +454,7 @@ core_target_open (const char *arg, int from_tty)
      core file.  We don't do this unconditionally since an exec file
      typically contains more information that helps us determine the
      architecture than a core file.  */
-  if (!exec_bfd)
+  if (!current_program_space->exec_bfd ())
     set_gdbarch_from_file (core_bfd);
 
   push_target (std::move (target_holder));
@@ -495,7 +495,7 @@ core_target_open (const char *arg, int from_tty)
       switch_to_thread (thread);
     }
 
-  if (exec_bfd == nullptr)
+  if (current_program_space->exec_bfd () == nullptr)
     locate_exec_from_corefile_build_id (core_bfd, from_tty);
 
   post_create_inferior (from_tty);
index 2db207aafab74ab57ceca8ada26e9617f4cec273..2c93391791f157865799753ac3f30b715e426c4c 100644 (file)
@@ -240,7 +240,8 @@ validate_exec_file (int from_tty)
   reopen_exec_file ();
   current_exec_file = get_exec_file (0);
 
-  const bfd_build_id *exec_file_build_id = build_id_bfd_get (exec_bfd);
+  const bfd_build_id *exec_file_build_id
+    = build_id_bfd_get (current_program_space->exec_bfd ());
   if (exec_file_build_id != nullptr)
     {
       /* Prepend the target prefix, to force gdb_bfd_open to open the
@@ -367,10 +368,11 @@ exec_file_locate_attach (int pid, int defer_bp_reset, int from_tty)
 void
 exec_file_attach (const char *filename, int from_tty)
 {
-  /* First, acquire a reference to the current exec_bfd.  We release
+  /* First, acquire a reference to the exec_bfd.  We release
      this at the end of the function; but acquiring it now lets the
      BFD cache return it if this call refers to the same file.  */
-  gdb_bfd_ref_ptr exec_bfd_holder = gdb_bfd_ref_ptr::new_reference (exec_bfd);
+  gdb_bfd_ref_ptr exec_bfd_holder
+    = gdb_bfd_ref_ptr::new_reference (current_program_space->exec_bfd ());
 
   /* Remove any previous exec file.  */
   current_program_space->exec_close ();
@@ -451,9 +453,9 @@ exec_file_attach (const char *filename, int from_tty)
                              FOPEN_RUB, scratch_chan);
       else
        temp = gdb_bfd_open (canonical_pathname, gnutarget, scratch_chan);
-      exec_bfd = temp.release ();
+      current_program_space->set_exec_bfd (temp.release ());
 
-      if (!exec_bfd)
+      if (!current_program_space->exec_bfd ())
        {
          error (_("\"%ps\": could not open as an executable file: %s."),
                 styled_string (file_name_style.style (), scratch_pathname),
@@ -465,12 +467,14 @@ exec_file_attach (const char *filename, int from_tty)
       gdb_assert (current_program_space->exec_filename == nullptr);
       if (load_via_target)
        current_program_space->exec_filename
-         = make_unique_xstrdup (bfd_get_filename (exec_bfd));
+         = (make_unique_xstrdup
+            (bfd_get_filename (current_program_space->exec_bfd ())));
       else
        current_program_space->exec_filename
          = gdb_realpath_keepfile (scratch_pathname);
 
-      if (!bfd_check_format_matches (exec_bfd, bfd_object, &matching))
+      if (!bfd_check_format_matches (current_program_space->exec_bfd (),
+                                    bfd_object, &matching))
        {
          /* Make sure to close exec_bfd, or else "run" might try to use
             it.  */
@@ -480,18 +484,20 @@ exec_file_attach (const char *filename, int from_tty)
                 gdb_bfd_errmsg (bfd_get_error (), matching).c_str ());
        }
 
-      target_section_table sections = build_section_table (exec_bfd);
+         target_section_table sections
+         = build_section_table (current_program_space->exec_bfd ());
 
-      current_program_space->ebfd_mtime = bfd_get_mtime (exec_bfd);
+      current_program_space->ebfd_mtime
+       = bfd_get_mtime (current_program_space->exec_bfd ());
 
       validate_files ();
 
-      set_gdbarch_from_file (exec_bfd);
+      set_gdbarch_from_file (current_program_space->exec_bfd ());
 
       /* Add the executable's sections to the current address spaces'
         list of sections.  This possibly pushes the exec_ops
         target.  */
-      add_target_sections (&exec_bfd, sections);
+      add_target_sections (&current_program_space->ebfd, sections);
 
       /* Tell display code (if any) about the changed file name.  */
       if (deprecated_exec_file_display_hook)
@@ -701,13 +707,13 @@ exec_read_partial_read_only (gdb_byte *readbuf, ULONGEST offset,
   /* It's unduly pedantic to refuse to look at the executable for
      read-only pieces; so do the equivalent of readonly regions aka
      QTro packet.  */
-  if (exec_bfd != NULL)
+  if (current_program_space->exec_bfd () != NULL)
     {
       asection *s;
       bfd_size_type size;
       bfd_vma vma;
 
-      for (s = exec_bfd->sections; s; s = s->next)
+      for (s = current_program_space->exec_bfd ()->sections; s; s = s->next)
        {
          if ((s->flags & SEC_LOAD) == 0
              || (s->flags & SEC_READONLY) == 0)
@@ -723,7 +729,7 @@ exec_read_partial_read_only (gdb_byte *readbuf, ULONGEST offset,
              if (amt > len)
                amt = len;
 
-             amt = bfd_get_section_contents (exec_bfd, s,
+             amt = bfd_get_section_contents (current_program_space->exec_bfd (), s,
                                              readbuf, offset - vma, amt);
 
              if (amt == 0)
@@ -925,7 +931,7 @@ print_section_info (target_section_table *t, bfd *abfd)
                                  bfd_get_filename (abfd)));
   wrap_here ("        ");
   printf_filtered (_("file type %s.\n"), bfd_get_target (abfd));
-  if (abfd == exec_bfd)
+  if (abfd == current_program_space->exec_bfd ())
     {
       /* gcc-3.4 does not like the initialization in
         <p == t->sections_end>.  */
@@ -990,8 +996,9 @@ print_section_info (target_section_table *t, bfd *abfd)
 void
 exec_target::files_info ()
 {
-  if (exec_bfd)
-    print_section_info (&current_program_space->target_sections, exec_bfd);
+  if (current_program_space->exec_bfd ())
+    print_section_info (&current_program_space->target_sections,
+                       current_program_space->exec_bfd ());
   else
     puts_filtered (_("\t<no file loaded>\n"));
 }
index 658112a0f280f9b155a2f7bf6d485dcfeb364b36..8590e78710ac50efb2f6c509af490a15631ecde9 100644 (file)
@@ -30,8 +30,6 @@ struct target_ops;
 struct bfd;
 struct objfile;
 
-#define exec_bfd current_program_space->ebfd
-
 /* Builds a section table, given args BFD.  */
 
 extern target_section_table build_section_table (struct bfd *);
index 54b43aa96e0850a32479b40d47593cf5af150702..b97a54acb3f1cb642bb8ca78372d222419081cc8 100644 (file)
@@ -171,10 +171,10 @@ default_gcore_arch (void)
 
   if (bfdarch != NULL)
     return bfdarch->arch;
-  if (exec_bfd == NULL)
+  if (current_program_space->exec_bfd () == NULL)
     error (_("Can't find bfd architecture for corefile (need execfile)."));
 
-  return bfd_get_arch (exec_bfd);
+  return bfd_get_arch (current_program_space->exec_bfd ());
 }
 
 static const char *
@@ -184,12 +184,12 @@ default_gcore_target (void)
   if (gdbarch_gcore_bfd_target_p (target_gdbarch ()))
     return gdbarch_gcore_bfd_target (target_gdbarch ());
 
-  /* Otherwise, try to fall back to the exec_bfd target.  This will probably
+  /* Otherwise, try to fall back to the exec target.  This will probably
      not work for non-ELF targets.  */
-  if (exec_bfd == NULL)
+  if (current_program_space->exec_bfd () == NULL)
     return NULL;
   else
-    return bfd_get_target (exec_bfd);
+    return bfd_get_target (current_program_space->exec_bfd ());
 }
 
 /* Derive a reasonable stack segment by unwinding the target stack,
@@ -500,7 +500,8 @@ objfile_find_memory_regions (struct target_ops *self,
             obfd);
 
   /* Make a heap segment.  */
-  if (derive_heap_segment (exec_bfd, &temp_bottom, &temp_top))
+  if (derive_heap_segment (current_program_space->exec_bfd (), &temp_bottom,
+                          &temp_top))
     (*func) (temp_bottom, temp_top - temp_bottom,
             1, /* Heap section will be readable.  */
             1, /* Heap section will be writable.  */
index 068de96941a6af776b76095ed02da9b6cf5e1bc5..118049041cfe68860704ed55cc1217bb811f41ee 100644 (file)
@@ -308,7 +308,7 @@ post_create_inferior (int from_tty)
        throw;
     }
 
-  if (exec_bfd)
+  if (current_program_space->exec_bfd ())
     {
       const unsigned solib_add_generation
        = current_program_space->solib_add_generation;
index 7cbdfa5080d9461fd38169614ded16eabf7710b9..0af813ff1098b05224fa3c559565f90d173d396a 100644 (file)
@@ -1800,8 +1800,8 @@ thread_db_target::get_thread_local_address (ptid_t ptid,
 
       /* Cast assuming host == target.  Joy.  */
       /* Do proper sign extension for the target.  */
-      gdb_assert (exec_bfd);
-      return (bfd_get_sign_extend_vma (exec_bfd) > 0
+      gdb_assert (current_program_space->exec_bfd ());
+      return (bfd_get_sign_extend_vma (current_program_space->exec_bfd ()) > 0
              ? (CORE_ADDR) (intptr_t) address
              : (CORE_ADDR) (uintptr_t) address);
     }
index 46dd99f6ccf6b7d33fc19331f5294138429a86db..e8cdda3da0efff21627474698ad0ee4defb760d0 100644 (file)
@@ -380,14 +380,16 @@ print_bfd_section_info_maybe_relocated (bfd *abfd, asection *asect,
 static void
 maintenance_info_sections (const char *arg, int from_tty)
 {
-  if (exec_bfd)
+  if (current_program_space->exec_bfd ())
     {
       bool allobj = false;
 
       printf_filtered (_("Exec file:\n"));
-      printf_filtered ("    `%s', ", bfd_get_filename (exec_bfd));
+      printf_filtered ("    `%s', ",
+                      bfd_get_filename (current_program_space->exec_bfd ()));
       wrap_here ("        ");
-      printf_filtered (_("file type %s.\n"), bfd_get_target (exec_bfd));
+      printf_filtered (_("file type %s.\n"),
+                      bfd_get_target (current_program_space->exec_bfd ()));
 
       /* Only this function cares about the 'ALLOBJ' argument;
         if 'ALLOBJ' is the only argument, discard it rather than
@@ -404,7 +406,7 @@ maintenance_info_sections (const char *arg, int from_tty)
          if (allobj)
            printf_filtered (_("  Object file: %s\n"),
                             bfd_get_filename (ofile->obfd));
-         else if (ofile->obfd != exec_bfd)
+         else if (ofile->obfd != current_program_space->exec_bfd ())
            continue;
 
          int section_count = gdb_bfd_count_sections (ofile->obfd);
index ef1615df3e2cbea63569491f9ef6f5337f37569c..5ecf9b52c34754747c414ab5c13879c54bc71e13 100644 (file)
@@ -728,7 +728,7 @@ nto_procfs_target::attach (const char *args, int from_tty)
 void
 nto_procfs_target::post_attach (pid_t pid)
 {
-  if (exec_bfd)
+  if (current_program_space->exec_bfd ())
     solib_create_inferior_hook (0);
 }
 
@@ -1322,7 +1322,7 @@ nto_procfs_target::create_inferior (const char *exec_file,
     push_target (ops);
   target_terminal::init ();
 
-  if (exec_bfd != NULL
+  if (current_program_space->exec_bfd () != NULL
       || (symfile_objfile != NULL && symfile_objfile->obfd != NULL))
     solib_create_inferior_hook (0);
 }
index e0383700a1d711b682904d01dea2be6246c2f195..2025f3a66c5d9cd677d9a12daedf32bc93a36360 100644 (file)
@@ -42,7 +42,8 @@
 static CORE_ADDR
 ps_addr_to_core_addr (psaddr_t addr)
 {
-  if (exec_bfd && bfd_get_sign_extend_vma (exec_bfd))
+  if (current_program_space->exec_bfd ()
+      && bfd_get_sign_extend_vma (current_program_space->exec_bfd ()))
     return (intptr_t) addr;
   else
     return (uintptr_t) addr;
@@ -53,7 +54,8 @@ ps_addr_to_core_addr (psaddr_t addr)
 static psaddr_t
 core_addr_to_ps_addr (CORE_ADDR addr)
 {
-  if (exec_bfd && bfd_get_sign_extend_vma (exec_bfd))
+  if (current_program_space->exec_bfd ()
+      && bfd_get_sign_extend_vma (current_program_space->exec_bfd ()))
     return (psaddr_t) (intptr_t) addr;
   else
     return (psaddr_t) (uintptr_t) addr;
index 8a15c402c28e66d529f637ba0841439a5a90e2cc..57edc298da701477deaf7b77b1f7f0965a1dc656 100644 (file)
@@ -233,7 +233,7 @@ program_space::exec_close ()
       gdb_bfd_unref (ebfd);
 
       /* Removing target sections may close the exec_ops target.
-        Clear exec_bfd before doing so to prevent recursion.  */
+        Clear ebfd before doing so to prevent recursion.  */
       ebfd = NULL;
       ebfd_mtime = 0;
 
@@ -471,7 +471,7 @@ initialize_progspace (void)
      _initialize_foo routines may need to install their per-pspace
      data keys.  We can only allocate a progspace when all those
      modules have done that.  Do this before
-     initialize_current_architecture, because that accesses exec_bfd,
-     which in turn dereferences current_program_space.  */
+     initialize_current_architecture, because that accesses the ebfd
+     of current_program_space.  */
   current_program_space = new program_space (new_address_space ());
 }
index 03634034ba08030be11aa2e88beadc43da233678..5e49083884a754bd9aaf0a41e73a61e8068cb245 100644 (file)
@@ -276,6 +276,18 @@ struct program_space
      to read memory from, this unpushes the exec_ops target.  */
   void exec_close ();
 
+  /* Return the exec BFD for this program space.  */
+  bfd *exec_bfd () const
+  {
+    return ebfd;
+  }
+
+  /* Set the exec BFD for this program space to ABFD.  */
+  void set_exec_bfd (bfd *abfd)
+  {
+    ebfd = abfd;
+  }
+
   /* Unique ID number.  */
   int num = 0;
 
index 9e1c2b151c8552075a28727ce7ce4ccb21be0886..d0e19b0e061db5290daa75d8dcca73372e22e984 100644 (file)
@@ -211,7 +211,8 @@ get_sim_inferior_data (struct inferior *inf, int sim_instance_needed)
   if (sim_instance_needed == SIM_INSTANCE_NEEDED
       && (sim_data == NULL || sim_data->gdbsim_desc == NULL))
     {
-      sim_desc = sim_open (SIM_OPEN_DEBUG, &gdb_callback, exec_bfd, sim_argv);
+      sim_desc = sim_open (SIM_OPEN_DEBUG, &gdb_callback,
+                          current_program_space->exec_bfd (), sim_argv);
       if (sim_desc == NULL)
        error (_("Unable to create simulator instance for inferior %d."),
               inf->num);
@@ -620,7 +621,7 @@ gdbsim_target::create_inferior (const char *exec_file,
   char *arg_buf;
   const char *args = allargs.c_str ();
 
-  if (exec_file == 0 || exec_bfd == 0)
+  if (exec_file == 0 || current_program_space->exec_bfd () == 0)
     warning (_("No executable file specified."));
   if (!sim_data->program_loaded)
     warning (_("No program loaded."));
@@ -648,7 +649,8 @@ gdbsim_target::create_inferior (const char *exec_file,
       built_argv.reset (arg_buf);
     }
 
-  if (sim_create_inferior (sim_data->gdbsim_desc, exec_bfd,
+  if (sim_create_inferior (sim_data->gdbsim_desc,
+                          current_program_space->exec_bfd (),
                           built_argv.get (), env)
       != SIM_RC_OK)
     error (_("Unable to create sim inferior."));
@@ -738,7 +740,8 @@ gdbsim_target_open (const char *args, int from_tty)
   sim_argv = argv.release ();
 
   init_callbacks ();
-  gdbsim_desc = sim_open (SIM_OPEN_DEBUG, &gdb_callback, exec_bfd, sim_argv);
+  gdbsim_desc = sim_open (SIM_OPEN_DEBUG, &gdb_callback,
+                         current_program_space->exec_bfd (), sim_argv);
 
   if (gdbsim_desc == 0)
     {
@@ -1104,13 +1107,13 @@ gdbsim_target::files_info ()
     = get_sim_inferior_data (current_inferior (), SIM_INSTANCE_NEEDED);
   const char *file = "nothing";
 
-  if (exec_bfd)
-    file = bfd_get_filename (exec_bfd);
+  if (current_program_space->exec_bfd ())
+    file = bfd_get_filename (current_program_space->exec_bfd ());
 
   if (remote_debug)
     fprintf_unfiltered (gdb_stdlog, "gdbsim_files_info: file \"%s\"\n", file);
 
-  if (exec_bfd)
+  if (current_program_space->exec_bfd ())
     {
       fprintf_unfiltered (gdb_stdlog, "\tAttached to %s running program %s\n",
                          target_shortname, file);
index 9ee1e8cbcf9e9e1b9e3025d0ed94c23d06f4a2c6..291b7c6e7e5edb8aee5c9608e3516e069a3d8853 100644 (file)
@@ -56,7 +56,7 @@
 #include <signal.h>
 #include "serial.h"
 
-#include "gdbcore.h" /* for exec_bfd */
+#include "gdbcore.h"
 
 #include "remote-fileio.h"
 #include "gdb/fileio.h"
@@ -10770,7 +10770,7 @@ compare_sections_command (const char *args, int from_tty)
   int res;
   int read_only = 0;
 
-  if (!exec_bfd)
+  if (!current_program_space->exec_bfd ())
     error (_("command cannot be used without an exec file"));
 
   if (args != NULL && strcmp (args, "-r") == 0)
@@ -10779,7 +10779,7 @@ compare_sections_command (const char *args, int from_tty)
       args = NULL;
     }
 
-  for (s = exec_bfd->sections; s; s = s->next)
+  for (s = current_program_space->exec_bfd ()->sections; s; s = s->next)
     {
       if (!(s->flags & SEC_LOAD))
        continue;               /* Skip non-loadable section.  */
@@ -10799,7 +10799,8 @@ compare_sections_command (const char *args, int from_tty)
       lma = s->lma;
 
       gdb::byte_vector sectdata (size);
-      bfd_get_section_contents (exec_bfd, s, sectdata.data (), 0, size);
+      bfd_get_section_contents (current_program_space->exec_bfd (), s,
+                               sectdata.data (), 0, size);
 
       res = target_verify_memory (sectdata.data (), lma, size);
 
@@ -13180,14 +13181,14 @@ remote_target::trace_set_readonly_regions ()
   int anysecs = 0;
   int offset = 0;
 
-  if (!exec_bfd)
+  if (!current_program_space->exec_bfd ())
     return;                    /* No information to give.  */
 
   struct remote_state *rs = get_remote_state ();
 
   strcpy (rs->buf.data (), "QTro");
   offset = strlen (rs->buf.data ());
-  for (s = exec_bfd->sections; s; s = s->next)
+  for (s = current_program_space->exec_bfd ()->sections; s; s = s->next)
     {
       char tmp1[40], tmp2[40];
       int sec_length;
index c49e64b5a62330f50fb527cb55da556109b16519..82b7eff9574359ecab7d79cb6f00209274c2524b 100644 (file)
@@ -581,11 +581,12 @@ rs6000_nat_target::create_inferior (const char *exec_file,
      Blindly calling rs6000_gdbarch_init used to work in older versions of
      GDB, as rs6000_gdbarch_init incorrectly used the previous tdep to
      determine the wordsize.  */
-  if (exec_bfd)
+  if (current_program_space->exec_bfd ())
     {
       const struct bfd_arch_info *exec_bfd_arch_info;
 
-      exec_bfd_arch_info = bfd_get_arch_info (exec_bfd);
+      exec_bfd_arch_info
+       = bfd_get_arch_info (current_program_space->exec_bfd ());
       if (arch == exec_bfd_arch_info->arch)
        return;
     }
@@ -594,7 +595,7 @@ rs6000_nat_target::create_inferior (const char *exec_file,
 
   gdbarch_info_init (&info);
   info.bfd_arch_info = bfd_get_arch_info (&abfd);
-  info.abfd = exec_bfd;
+  info.abfd = current_program_space->exec_bfd ();
 
   if (!gdbarch_update_p (info))
     internal_error (__FILE__, __LINE__,
index bb33a20ea5227f552cd4e1cd835e71cfc1a92482..69a3ac113948bffbffeecf40a8efa76fce5fe680 100644 (file)
@@ -794,7 +794,7 @@ rw_common (int dowrite, const struct ps_prochandle *ph, psaddr_t addr,
 #if defined (__sparcv9)
   /* For Sparc64 cross Sparc32, make sure the address has not been
      accidentally sign-extended (or whatever) to beyond 32 bits.  */
-  if (bfd_get_arch_size (exec_bfd) == 32)
+  if (bfd_get_arch_size (current_program_space->exec_bfd ()) == 32)
     addr &= 0xffffffff;
 #endif
 
@@ -950,9 +950,9 @@ ps_lsetfpregs (struct ps_prochandle *ph, lwpid_t lwpid,
 ps_err_e
 ps_pdmodel (struct ps_prochandle *ph, int *data_model)
 {
-  if (exec_bfd == 0)
+  if (current_program_space->exec_bfd () == 0)
     *data_model = PR_MODEL_UNKNOWN;
-  else if (bfd_get_arch_size (exec_bfd) == 32)
+  else if (bfd_get_arch_size (current_program_space->exec_bfd ()) == 32)
     *data_model = PR_MODEL_ILP32;
   else
     *data_model = PR_MODEL_LP64;
index 3806c7e48cca59e96c0dfaa99dd1f548e9bd8eac..e784e5618a0568ab0dafb629315ed6ca769679fe 100644 (file)
@@ -192,12 +192,13 @@ find_program_interpreter (void)
 {
   char *buf = NULL;
 
-  /* If we have an exec_bfd, get the interpreter from the load commands.  */
-  if (exec_bfd)
+  /* If we have an current exec_bfd, get the interpreter from the load
+     commands.  */
+  if (current_program_space->exec_bfd ())
     {
       bfd_mach_o_load_command *cmd;
 
-      if (bfd_mach_o_lookup_command (exec_bfd,
+      if (bfd_mach_o_lookup_command (current_program_space->exec_bfd (),
                                      BFD_MACH_O_LC_LOAD_DYLINKER, &cmd) == 1)
         return cmd->command.dylinker.name_str;
     }
@@ -543,7 +544,7 @@ darwin_solib_create_inferior_hook (int from_tty)
       CORE_ADDR vmaddr;
 
       /* Find the base address of the executable.  */
-      vmaddr = bfd_mach_o_get_base_address (exec_bfd);
+      vmaddr = bfd_mach_o_get_base_address (current_program_space->exec_bfd ());
 
       /* Relocate.  */
       if (vmaddr != load_addr)
@@ -557,7 +558,8 @@ darwin_solib_create_inferior_hook (int from_tty)
     {
       /* Dyld hasn't yet relocated itself, so the notifier address may
         be incorrect (as it has to be relocated).  */
-      CORE_ADDR start = bfd_get_start_address (exec_bfd);
+      CORE_ADDR start
+       = bfd_get_start_address (current_program_space->exec_bfd ());
       if (start == 0)
        notifier = 0;
       else
index 6f610c511e0314359f3d5021c82a2a0c9801ef4b..8e1da5dd73d54822d9983070a34cfb78370262da 100644 (file)
@@ -562,7 +562,7 @@ lm_base (void)
                            "lm_base: get addr %x by _GLOBAL_OFFSET_TABLE_.\n",
                            (unsigned int) addr);
     }
-  else if (scan_dyntag (DT_PLTGOT, exec_bfd, &addr))
+  else if (scan_dyntag (DT_PLTGOT, current_program_space->exec_bfd (), &addr))
     {
       struct int_elf32_dsbt_loadmap *ldm;
 
@@ -778,7 +778,7 @@ enable_break (void)
   asection *interp_sect;
   struct dsbt_info *info;
 
-  if (exec_bfd == NULL)
+  if (current_program_space->exec_bfd () == NULL)
     return 0;
 
   if (!target_has_execution ())
@@ -793,7 +793,8 @@ enable_break (void)
 
   /* Find the .interp section; if not found, warn the user and drop
      into the old breakpoint at symbol code.  */
-  interp_sect = bfd_get_section_by_name (exec_bfd, ".interp");
+  interp_sect = bfd_get_section_by_name (current_program_space->exec_bfd (),
+                                        ".interp");
   if (interp_sect)
     {
       unsigned int interp_sect_size;
@@ -806,8 +807,8 @@ enable_break (void)
         the contents specify the dynamic linker this program uses.  */
       interp_sect_size = bfd_section_size (interp_sect);
       buf = (char *) alloca (interp_sect_size);
-      bfd_get_section_contents (exec_bfd, interp_sect,
-                               buf, 0, interp_sect_size);
+      bfd_get_section_contents (current_program_space->exec_bfd (),
+                               interp_sect, buf, 0, interp_sect_size);
 
       /* Now we need to figure out where the dynamic linker was
         loaded so that we can load its symbols and place a breakpoint
index bce33a3e4d61f287b05a98c755695b73425ed0e0..08c9cf7ca5c97dbba78fdd21e8541400c21c304a 100644 (file)
@@ -531,7 +531,8 @@ enable_break2 (void)
 
   /* Find the .interp section; if not found, warn the user and drop
      into the old breakpoint at symbol code.  */
-  interp_sect = bfd_get_section_by_name (exec_bfd, ".interp");
+  interp_sect = bfd_get_section_by_name (current_program_space->exec_bfd (),
+                                        ".interp");
   if (interp_sect)
     {
       unsigned int interp_sect_size;
@@ -545,8 +546,8 @@ enable_break2 (void)
          the contents specify the dynamic linker this program uses.  */
       interp_sect_size = bfd_section_size (interp_sect);
       buf = (char *) alloca (interp_sect_size);
-      bfd_get_section_contents (exec_bfd, interp_sect,
-                               buf, 0, interp_sect_size);
+      bfd_get_section_contents (current_program_space->exec_bfd (),
+                               interp_sect, buf, 0, interp_sect_size);
 
       /* Now we need to figure out where the dynamic linker was
          loaded so that we can load its symbols and place a breakpoint
@@ -735,7 +736,8 @@ enable_break (void)
   /* Check for the presence of a .interp section.  If there is no
      such section, the executable is statically linked.  */
 
-  interp_sect = bfd_get_section_by_name (exec_bfd, ".interp");
+  interp_sect = bfd_get_section_by_name (current_program_space->exec_bfd (),
+                                        ".interp");
 
   if (interp_sect == NULL)
     {
index faaba471a191718301ad1f5df5e9508fb7c8dd2f..637a0fcfac41162c9cb7cef6345b04e010957125 100644 (file)
@@ -554,20 +554,22 @@ read_program_header (int type, int *p_arch_size, CORE_ADDR *base_addr)
 static gdb::optional<gdb::byte_vector>
 find_program_interpreter (void)
 {
-  /* If we have an exec_bfd, use its section table.  */
-  if (exec_bfd
-      && bfd_get_flavour (exec_bfd) == bfd_target_elf_flavour)
+  /* If we have a current exec_bfd, use its section table.  */
+  if (current_program_space->exec_bfd ()
+      && (bfd_get_flavour (current_program_space->exec_bfd ())
+         == bfd_target_elf_flavour))
    {
      struct bfd_section *interp_sect;
 
-     interp_sect = bfd_get_section_by_name (exec_bfd, ".interp");
+     interp_sect = bfd_get_section_by_name (current_program_space->exec_bfd (),
+                                           ".interp");
      if (interp_sect != NULL)
       {
        int sect_size = bfd_section_size (interp_sect);
 
        gdb::byte_vector buf (sect_size);
-       bfd_get_section_contents (exec_bfd, interp_sect, buf.data (), 0,
-                                 sect_size);
+       bfd_get_section_contents (current_program_space->exec_bfd (),
+                                 interp_sect, buf.data (), 0, sect_size);
        return buf;
       }
    }
@@ -762,7 +764,8 @@ elf_locate_base (void)
   /* Look for DT_MIPS_RLD_MAP first.  MIPS executables use this
      instead of DT_DEBUG, although they sometimes contain an unused
      DT_DEBUG.  */
-  if (scan_dyntag (DT_MIPS_RLD_MAP, exec_bfd, &dyn_ptr, NULL)
+  if (scan_dyntag (DT_MIPS_RLD_MAP, current_program_space->exec_bfd (),
+                  &dyn_ptr, NULL)
       || scan_dyntag_auxv (DT_MIPS_RLD_MAP, &dyn_ptr, NULL))
     {
       struct type *ptr_type = builtin_type (target_gdbarch ())->builtin_data_ptr;
@@ -780,7 +783,8 @@ elf_locate_base (void)
   /* Then check DT_MIPS_RLD_MAP_REL.  MIPS executables now use this form
      because of needing to support PIE.  DT_MIPS_RLD_MAP will also exist
      in non-PIE.  */
-  if (scan_dyntag (DT_MIPS_RLD_MAP_REL, exec_bfd, &dyn_ptr, &dyn_ptr_addr)
+  if (scan_dyntag (DT_MIPS_RLD_MAP_REL, current_program_space->exec_bfd (),
+                  &dyn_ptr, &dyn_ptr_addr)
       || scan_dyntag_auxv (DT_MIPS_RLD_MAP_REL, &dyn_ptr, &dyn_ptr_addr))
     {
       struct type *ptr_type = builtin_type (target_gdbarch ())->builtin_data_ptr;
@@ -796,7 +800,7 @@ elf_locate_base (void)
     }
 
   /* Find DT_DEBUG.  */
-  if (scan_dyntag (DT_DEBUG, exec_bfd, &dyn_ptr, NULL)
+  if (scan_dyntag (DT_DEBUG, current_program_space->exec_bfd (), &dyn_ptr, NULL)
       || scan_dyntag_auxv (DT_DEBUG, &dyn_ptr, NULL))
     return dyn_ptr;
 
@@ -1399,7 +1403,9 @@ svr4_current_sos_direct (struct svr4_info *info)
 
   /* Assume that everything is a library if the dynamic loader was loaded
      late by a static executable.  */
-  if (exec_bfd && bfd_get_section_by_name (exec_bfd, ".dynamic") == NULL)
+  if (current_program_space->exec_bfd ()
+      && bfd_get_section_by_name (current_program_space->exec_bfd (),
+                                 ".dynamic") == NULL)
     ignore_first = 0;
   else
     ignore_first = 1;
@@ -2564,27 +2570,30 @@ svr4_exec_displacement (CORE_ADDR *displacementp)
      a call to gdbarch_convert_from_func_ptr_addr.  */
   CORE_ADDR entry_point, exec_displacement;
 
-  if (exec_bfd == NULL)
+  if (current_program_space->exec_bfd () == NULL)
     return 0;
 
   /* Therefore for ELF it is ET_EXEC and not ET_DYN.  Both shared libraries
      being executed themselves and PIE (Position Independent Executable)
      executables are ET_DYN.  */
 
-  if ((bfd_get_file_flags (exec_bfd) & DYNAMIC) == 0)
+  if ((bfd_get_file_flags (current_program_space->exec_bfd ()) & DYNAMIC) == 0)
     return 0;
 
   if (target_auxv_search (current_top_target (), AT_ENTRY, &entry_point) <= 0)
     return 0;
 
-  exec_displacement = entry_point - bfd_get_start_address (exec_bfd);
+  exec_displacement
+    = entry_point - bfd_get_start_address (current_program_space->exec_bfd ());
 
   /* Verify the EXEC_DISPLACEMENT candidate complies with the required page
      alignment.  It is cheaper than the program headers comparison below.  */
 
-  if (bfd_get_flavour (exec_bfd) == bfd_target_elf_flavour)
+  if (bfd_get_flavour (current_program_space->exec_bfd ())
+      == bfd_target_elf_flavour)
     {
-      const struct elf_backend_data *elf = get_elf_backend_data (exec_bfd);
+      const struct elf_backend_data *elf
+       = get_elf_backend_data (current_program_space->exec_bfd ());
 
       /* p_align of PT_LOAD segments does not specify any alignment but
         only congruency of addresses:
@@ -2601,7 +2610,8 @@ svr4_exec_displacement (CORE_ADDR *displacementp)
      looking at a different file than the one used by the kernel - for
      instance, "gdb program" connected to "gdbserver :PORT ld.so program".  */
 
-  if (bfd_get_flavour (exec_bfd) == bfd_target_elf_flavour)
+  if (bfd_get_flavour (current_program_space->exec_bfd ())
+      == bfd_target_elf_flavour)
     {
       /* Be optimistic and return 0 only if GDB was able to verify the headers
         really do not match.  */
@@ -2610,7 +2620,7 @@ svr4_exec_displacement (CORE_ADDR *displacementp)
       gdb::optional<gdb::byte_vector> phdrs_target
        = read_program_header (-1, &arch_size, NULL);
       gdb::optional<gdb::byte_vector> phdrs_binary
-       = read_program_headers_from_bfd (exec_bfd);
+       = read_program_headers_from_bfd (current_program_space->exec_bfd ());
       if (phdrs_target && phdrs_binary)
        {
          enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
@@ -2629,14 +2639,16 @@ svr4_exec_displacement (CORE_ADDR *displacementp)
             content offset for the verification purpose.  */
 
          if (phdrs_target->size () != phdrs_binary->size ()
-             || bfd_get_arch_size (exec_bfd) != arch_size)
+             || bfd_get_arch_size (current_program_space->exec_bfd ()) != arch_size)
            return 0;
          else if (arch_size == 32
                   && phdrs_target->size () >= sizeof (Elf32_External_Phdr)
                   && phdrs_target->size () % sizeof (Elf32_External_Phdr) == 0)
            {
-             Elf_Internal_Ehdr *ehdr2 = elf_tdata (exec_bfd)->elf_header;
-             Elf_Internal_Phdr *phdr2 = elf_tdata (exec_bfd)->phdr;
+             Elf_Internal_Ehdr *ehdr2
+               = elf_tdata (current_program_space->exec_bfd ())->elf_header;
+             Elf_Internal_Phdr *phdr2
+               = elf_tdata (current_program_space->exec_bfd ())->phdr;
              CORE_ADDR displacement = 0;
              int i;
 
@@ -2736,6 +2748,7 @@ svr4_exec_displacement (CORE_ADDR *displacementp)
                    }
 
                  /* prelink can convert .plt SHT_NOBITS to SHT_PROGBITS.  */
+                 bfd *exec_bfd = current_program_space->exec_bfd ();
                  plt2_asect = bfd_get_section_by_name (exec_bfd, ".plt");
                  if (plt2_asect)
                    {
@@ -2770,8 +2783,10 @@ svr4_exec_displacement (CORE_ADDR *displacementp)
                   && phdrs_target->size () >= sizeof (Elf64_External_Phdr)
                   && phdrs_target->size () % sizeof (Elf64_External_Phdr) == 0)
            {
-             Elf_Internal_Ehdr *ehdr2 = elf_tdata (exec_bfd)->elf_header;
-             Elf_Internal_Phdr *phdr2 = elf_tdata (exec_bfd)->phdr;
+             Elf_Internal_Ehdr *ehdr2
+               = elf_tdata (current_program_space->exec_bfd ())->elf_header;
+             Elf_Internal_Phdr *phdr2
+               = elf_tdata (current_program_space->exec_bfd ())->phdr;
              CORE_ADDR displacement = 0;
              int i;
 
@@ -2870,7 +2885,9 @@ svr4_exec_displacement (CORE_ADDR *displacementp)
                    }
 
                  /* prelink can convert .plt SHT_NOBITS to SHT_PROGBITS.  */
-                 plt2_asect = bfd_get_section_by_name (exec_bfd, ".plt");
+                 plt2_asect
+                   = bfd_get_section_by_name (current_program_space->exec_bfd (),
+                                              ".plt");
                  if (plt2_asect)
                    {
                      int content2;
@@ -2883,8 +2900,9 @@ svr4_exec_displacement (CORE_ADDR *displacementp)
                      filesz = extract_unsigned_integer (buf_filesz_p, 8,
                                                         byte_order);
 
-                     /* PLT2_ASECT is from on-disk file (exec_bfd) while
-                        FILESZ is from the in-memory image.  */
+                     /* PLT2_ASECT is from on-disk file (current
+                        exec_bfd) while FILESZ is from the in-memory
+                        image.  */
                      if (content2)
                        filesz += bfd_section_size (plt2_asect);
                      else
@@ -2914,7 +2932,7 @@ svr4_exec_displacement (CORE_ADDR *displacementp)
       printf_unfiltered (_("Using PIE (Position Independent Executable) "
                           "displacement %s for \"%s\".\n"),
                         paddress (target_gdbarch (), exec_displacement),
-                        bfd_get_filename (exec_bfd));
+                        bfd_get_filename (current_program_space->exec_bfd ()));
     }
 
   *displacementp = exec_displacement;
@@ -2969,10 +2987,11 @@ svr4_relocate_main_executable (void)
                                   displacement);
       objfile_relocate (symfile_objfile, new_offsets);
     }
-  else if (exec_bfd)
+  else if (current_program_space->exec_bfd ())
     {
       asection *asect;
 
+      bfd *exec_bfd = current_program_space->exec_bfd ();
       for (asect = exec_bfd->sections; asect != NULL; asect = asect->next)
        exec_set_section_address (bfd_get_filename (exec_bfd), asect->index,
                                  bfd_section_vma (asect) + displacement);
@@ -3228,7 +3247,7 @@ svr4_iterate_over_objfiles_in_search_order
         current_objfile = current_objfile->separate_debug_objfile_backlink;
 
       if (current_objfile == symfile_objfile)
-       abfd = exec_bfd;
+       abfd = current_program_space->exec_bfd ();
       else
        abfd = current_objfile->obfd;
 
index c67d087c76d1f45cf51276f5922c66ce3f3c2ab6..098fcf72e4e3334b7b2237c9eb799f640ffa0493 100644 (file)
@@ -68,7 +68,7 @@ source_cache::get_plain_source_lines (struct symtab *s,
   time_t mtime = 0;
   if (SYMTAB_OBJFILE (s) != NULL && SYMTAB_OBJFILE (s)->obfd != NULL)
     mtime = SYMTAB_OBJFILE (s)->mtime;
-  else if (exec_bfd)
+  else if (current_program_space->exec_bfd ())
     mtime = current_program_space->ebfd_mtime;
 
   if (mtime && mtime < st.st_mtime)
index 62c5664879fd54ab5b69f1a79f37b85e3d379c8c..02761df679af33e8bc4a60fd1cc27293a2ae5d4f 100644 (file)
@@ -146,7 +146,7 @@ add_symbol_file_from_memory_command (const char *args, int from_tty)
   if (symfile_objfile != NULL)
     templ = symfile_objfile->obfd;
   else
-    templ = exec_bfd;
+    templ = current_program_space->exec_bfd ();
   if (templ == NULL)
     error (_("Must use symbol-file or exec-file "
             "before add-symbol-file-from-memory."));
@@ -168,8 +168,8 @@ add_vsyscall_page (inferior *inf)
 
       if (core_bfd != NULL)
        bfd = core_bfd;
-      else if (exec_bfd != NULL)
-       bfd = exec_bfd;
+      else if (current_program_space->exec_bfd () != NULL)
+       bfd = current_program_space->exec_bfd ();
       else
        /* FIXME: cagney/2004-05-06: Should not require an existing
          BFD when trying to create a run-time BFD of the VSYSCALL
index 3332e7f69ff8152371a401c8fb351940b308a52e..434ecb9a667c49f4544d0572b8bb65b0e8ab8d95 100644 (file)
@@ -2460,9 +2460,9 @@ reread_symbols (void)
          /* We need to do this whenever any symbols go away.  */
          clear_symtab_users_cleanup defer_clear_users (0);
 
-         if (exec_bfd != NULL
+         if (current_program_space->exec_bfd () != NULL
              && filename_cmp (bfd_get_filename (objfile->obfd),
-                              bfd_get_filename (exec_bfd)) == 0)
+                              bfd_get_filename (current_program_space->exec_bfd ())) == 0)
            {
              /* Reload EXEC_BFD without asking anything.  */
 
index 9cf68c5cb6ec9204b41cb384674bb8a61e0816f6..c26d99a2765c4c27c21fe1b41db6a901f9f01f15 100644 (file)
@@ -25,7 +25,7 @@
 #include "regcache.h"
 #include "inferior.h"
 #include "gdbthread.h"
-#include "exec.h" /* exec_bfd */
+#include "exec.h"
 #include "completer.h"
 #include "filenames.h"
 #include "remote.h"
index 984f13941ce4796ebb3987dd7e20a6e515268656..5f2b10a8e04e8719f53631d69190b9991bda3176 100644 (file)
@@ -914,7 +914,8 @@ windows_solib_create_inferior_hook (int from_tty)
   /* Rebase executable if the base address changed because of ASLR.  */
   if (symfile_objfile != nullptr && exec_base != 0)
     {
-      CORE_ADDR vmaddr = pe_data (exec_bfd)->pe_opthdr.ImageBase;
+      CORE_ADDR vmaddr
+       = pe_data (current_program_space->exec_bfd ())->pe_opthdr.ImageBase;
       if (vmaddr != exec_base)
        objfile_rebase (symfile_objfile, exec_base - vmaddr);
     }