gdb: remove BLOCK_FUNCTION macro
[binutils-gdb.git] / gdb / solib-darwin.c
index 172b1e20829c9cd044ccea1d7515554433129cd8..d7789f68dfecbfa6a63976a9771ef7322f6d2d4a 100644 (file)
@@ -1,6 +1,6 @@
 /* Handle Darwin shared libraries for GDB, the GNU Debugger.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2022 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -199,8 +199,8 @@ find_program_interpreter (void)
       bfd_mach_o_load_command *cmd;
 
       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;
+                                    BFD_MACH_O_LC_LOAD_DYLINKER, &cmd) == 1)
+       return cmd->command.dylinker.name_str;
     }
 
   /* If we didn't find it, read from memory.
@@ -265,14 +265,14 @@ darwin_current_sos (void)
        break;
       /* Discard wrong magic numbers.  Shouldn't happen.  */
       hdr_val = extract_unsigned_integer
-        (hdr.magic, sizeof (hdr.magic), byte_order);
+       (hdr.magic, sizeof (hdr.magic), byte_order);
       if (hdr_val != BFD_MACH_O_MH_MAGIC && hdr_val != BFD_MACH_O_MH_MAGIC_64)
-        continue;
+       continue;
       /* Discard executable.  Should happen only once.  */
       hdr_val = extract_unsigned_integer
-        (hdr.filetype, sizeof (hdr.filetype), byte_order);
+       (hdr.filetype, sizeof (hdr.filetype), byte_order);
       if (hdr_val == BFD_MACH_O_MH_EXECUTE)
-        continue;
+       continue;
 
       gdb::unique_xmalloc_ptr<char> file_path
        = target_read_string (path_addr, SO_NAME_MAX_PATH_SIZE - 1);
@@ -462,7 +462,7 @@ darwin_solib_get_all_image_info_addr_at_init (struct darwin_info *info)
      the current pc (which should point at the entry point for the
      dynamic linker) and subtracting the offset of the entry point.  */
   load_addr = (regcache_read_pc (get_current_regcache ())
-               - bfd_get_start_address (dyld_bfd.get ()));
+              - bfd_get_start_address (dyld_bfd.get ()));
 
   /* Now try to set a breakpoint in the dynamic linker.  */
   info->all_image_addr =
@@ -488,7 +488,8 @@ darwin_solib_read_all_image_info_addr (struct darwin_info *info)
   if (TYPE_LENGTH (ptr_type) > sizeof (buf))
     return;
 
-  len = target_read (current_top_target (), TARGET_OBJECT_DARWIN_DYLD_INFO,
+  len = target_read (current_inferior ()->top_target (),
+                    TARGET_OBJECT_DARWIN_DYLD_INFO,
                     NULL, buf, 0, TYPE_LENGTH (ptr_type));
   if (len <= 0)
     return;
@@ -503,6 +504,10 @@ darwin_solib_read_all_image_info_addr (struct darwin_info *info)
 static void
 darwin_solib_create_inferior_hook (int from_tty)
 {
+  /* Everything below only makes sense if we have a running inferior.  */
+  if (!target_has_execution ())
+    return;
+
   struct darwin_info *info = get_darwin_info ();
   CORE_ADDR load_addr;
 
@@ -564,31 +569,31 @@ darwin_solib_create_inferior_hook (int from_tty)
       if (start == 0)
        notifier = 0;
       else
-        {
-          gdb_bfd_ref_ptr dyld_bfd = darwin_get_dyld_bfd ();
-          if (dyld_bfd != NULL)
-            {
-              CORE_ADDR dyld_bfd_start_address;
-              CORE_ADDR dyld_relocated_base_address;
-              CORE_ADDR pc;
-
-              dyld_bfd_start_address = bfd_get_start_address (dyld_bfd.get());
-
-              /* We find the dynamic linker's base address by examining
-                 the current pc (which should point at the entry point
-                 for the dynamic linker) and subtracting the offset of
-                 the entry point.  */
-
-              pc = regcache_read_pc (get_current_regcache ());
-              dyld_relocated_base_address = pc - dyld_bfd_start_address;
-
-              /* We get the proper notifier relocated address by
-                 adding the dyld relocated base address to the current
-                 notifier offset value.  */
-
-              notifier += dyld_relocated_base_address;
-            }
-        }
+       {
+         gdb_bfd_ref_ptr dyld_bfd = darwin_get_dyld_bfd ();
+         if (dyld_bfd != NULL)
+           {
+             CORE_ADDR dyld_bfd_start_address;
+             CORE_ADDR dyld_relocated_base_address;
+             CORE_ADDR pc;
+
+             dyld_bfd_start_address = bfd_get_start_address (dyld_bfd.get());
+
+             /* We find the dynamic linker's base address by examining
+                the current pc (which should point at the entry point
+                for the dynamic linker) and subtracting the offset of
+                the entry point.  */
+
+             pc = regcache_read_pc (get_current_regcache ());
+             dyld_relocated_base_address = pc - dyld_bfd_start_address;
+
+             /* We get the proper notifier relocated address by
+                adding the dyld relocated base address to the current
+                notifier offset value.  */
+
+             notifier += dyld_relocated_base_address;
+           }
+       }
     }
 
   /* Add the breakpoint which is hit by dyld when the list of solib is