* target-reloc.h (visibility_error): New inline function.
[deliverable/binutils-gdb.git] / gdb / solib-frv.c
index eec4e782661fd8b02425ac3d5b9ce79b87258ba7..0976c8352eacd49c4bd0d582d47b43c6fefab4a1 100644 (file)
@@ -1,5 +1,5 @@
 /* Handle FR-V (FDPIC) shared libraries for GDB, the GNU Debugger.
-   Copyright (C) 2004, 2007, 2008, 2009 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -822,30 +822,43 @@ enable_break (void)
      may have changed since the last time we ran the program.  */
   remove_solib_event_breakpoints ();
 
-  /* 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");
-
-  if (interp_sect)
+  if (symfile_objfile == NULL)
     {
-      enable_break1_done = 1;
-      create_solib_event_breakpoint (target_gdbarch,
-                                    symfile_objfile->ei.entry_point);
+      if (solib_frv_debug)
+       fprintf_unfiltered (gdb_stdlog,
+                           "enable_break: No symbol file found.\n");
+      return 0;
+    }
 
+  if (!symfile_objfile->ei.entry_point_p)
+    {
       if (solib_frv_debug)
        fprintf_unfiltered (gdb_stdlog,
-                           "enable_break: solib event breakpoint placed at entry point: %s\n",
-                           hex_string_custom
-                             (symfile_objfile->ei.entry_point, 8));
+                           "enable_break: Symbol file has no entry point.\n");
+      return 0;
     }
-  else
+
+  /* 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");
+
+  if (interp_sect == NULL)
     {
       if (solib_frv_debug)
        fprintf_unfiltered (gdb_stdlog,
-                           "enable_break: No .interp section found.\n");
+                           "enable_break: No .interp section found.\n");
+      return 0;
     }
 
+  enable_break1_done = 1;
+  create_solib_event_breakpoint (target_gdbarch,
+                                symfile_objfile->ei.entry_point);
+
+  if (solib_frv_debug)
+    fprintf_unfiltered (gdb_stdlog,
+                       "enable_break: solib event breakpoint placed at entry point: %s\n",
+                       hex_string_custom (symfile_objfile->ei.entry_point, 8));
   return 1;
 }
 
@@ -971,7 +984,7 @@ frv_relocate_main_executable (void)
  */
 
 static void
-frv_solib_create_inferior_hook (void)
+frv_solib_create_inferior_hook (int from_tty)
 {
   /* Relocate main executable.  */
   frv_relocate_main_executable ();
@@ -1300,6 +1313,7 @@ _initialize_frv_solib (void)
   frv_so_ops.current_sos = frv_current_sos;
   frv_so_ops.open_symbol_file_object = open_symbol_file_object;
   frv_so_ops.in_dynsym_resolve_code = frv_in_dynsym_resolve_code;
+  frv_so_ops.bfd_open = solib_bfd_open;
 
   /* Debug this file's internals.  */
   add_setshow_zinteger_cmd ("solib-frv", class_maintenance,
This page took 0.029056 seconds and 4 git commands to generate.