include/opcode/
[deliverable/binutils-gdb.git] / gdb / exec.c
index 7648b0317a6f3030597b55db4aa171bf2542b64c..0bfad94757cc66366995c895dbb345ce1a95b5fc 100644 (file)
@@ -31,7 +31,7 @@
 #include "value.h"
 #include "exec.h"
 #include "observer.h"
-#include "arch-utils.c"
+#include "arch-utils.h"
 
 #include <fcntl.h>
 #include "readline/readline.h"
@@ -69,6 +69,7 @@ struct target_ops exec_ops;
 /* The Binary File Descriptor handle for the executable file.  */
 
 bfd *exec_bfd = NULL;
+long exec_bfd_mtime = 0;
 
 /* Whether to open exec and core files read-only or read-write.  */
 
@@ -136,6 +137,7 @@ exec_close (int quitting)
                 name, bfd_errmsg (bfd_get_error ()));
       xfree (name);
       exec_bfd = NULL;
+      exec_bfd_mtime = 0;
     }
 
   if (exec_ops.to_sections)
@@ -260,6 +262,8 @@ exec_file_attach (char *filename, int from_tty)
                 scratch_pathname, bfd_errmsg (bfd_get_error ()));
        }
 
+      exec_bfd_mtime = bfd_get_mtime (exec_bfd);
+
       validate_files ();
 
       set_gdbarch_from_file (exec_bfd);
@@ -539,10 +543,8 @@ print_section_info (struct target_ops *t, bfd *abfd)
   wrap_here ("        ");
   printf_filtered (_("file type %s.\n"), bfd_get_target (abfd));
   if (abfd == exec_bfd)
-    {
-      printf_filtered (_("\tEntry point: "));
-      fputs_filtered (paddress (bfd_get_start_address (abfd)), gdb_stdout);
-    }
+    printf_filtered (_("\tEntry point: %s\n"),
+                     paddress (bfd_get_start_address (abfd)));
   for (p = t->to_sections; p < t->to_sections_end; p++)
     {
       printf_filtered ("\t%s", hex_string_custom (p->addr, wid));
@@ -594,42 +596,6 @@ exec_files_info (struct target_ops *t)
     }
 }
 
-/* msnyder 5/21/99:
-   exec_set_section_offsets sets the offsets of all the sections
-   in the exec objfile.  */
-
-void
-exec_set_section_offsets (bfd_signed_vma text_off, bfd_signed_vma data_off,
-                         bfd_signed_vma bss_off)
-{
-  struct section_table *sect;
-
-  for (sect = exec_ops.to_sections;
-       sect < exec_ops.to_sections_end;
-       sect++)
-    {
-      flagword flags;
-
-      flags = bfd_get_section_flags (exec_bfd, sect->the_bfd_section);
-
-      if (flags & SEC_CODE)
-       {
-         sect->addr += text_off;
-         sect->endaddr += text_off;
-       }
-      else if (flags & (SEC_DATA | SEC_LOAD))
-       {
-         sect->addr += data_off;
-         sect->endaddr += data_off;
-       }
-      else if (flags & SEC_ALLOC)
-       {
-         sect->addr += bss_off;
-         sect->endaddr += bss_off;
-       }
-    }
-}
-
 static void
 set_section_command (char *args, int from_tty)
 {
@@ -670,9 +636,8 @@ set_section_command (char *args, int from_tty)
   error (_("Section %s not found"), secprint);
 }
 
-/* If we can find a section in FILENAME with BFD index INDEX, and the
-   user has not assigned an address to it yet (via "set section"), adjust it
-   to ADDRESS.  */
+/* If we can find a section in FILENAME with BFD index INDEX, adjust
+   it to ADDRESS.  */
 
 void
 exec_set_section_address (const char *filename, int index, CORE_ADDR address)
@@ -682,11 +647,10 @@ exec_set_section_address (const char *filename, int index, CORE_ADDR address)
   for (p = exec_ops.to_sections; p < exec_ops.to_sections_end; p++)
     {
       if (strcmp (filename, p->bfd->filename) == 0
-         && index == p->the_bfd_section->index
-         && p->addr == 0)
+         && index == p->the_bfd_section->index)
        {
+         p->endaddr += address - p->addr;
          p->addr = address;
-         p->endaddr += address;
        }
     }
 }
This page took 0.025368 seconds and 4 git commands to generate.