* frv-tdep.c (frv_skip_main_prologue): New function.
[deliverable/binutils-gdb.git] / gdb / solib-frv.c
index 189fbe02224078d141c0c4b59f8dabb9ec6e18f8..a8ef73ba45fc18ee247ef7fe0cf4fa4136b4ee67 100644 (file)
@@ -124,6 +124,9 @@ fetch_loadmap (CORE_ADDR ldmaddr)
   nsegs = extract_unsigned_integer (ext_ldmbuf_partial.nsegs,
                                     sizeof ext_ldmbuf_partial.nsegs);
 
+  if (nsegs <= 0)
+    return NULL;
+
   /* Allocate space for the complete (external) loadmap.  */
   ext_ldmbuf_size = sizeof (struct ext_elf32_fdpic_loadmap)
                + (nsegs - 1) * sizeof (struct ext_elf32_fdpic_loadseg);
@@ -860,16 +863,17 @@ static void
 frv_relocate_main_executable (void)
 {
   int status;
-  CORE_ADDR exec_addr;
+  CORE_ADDR exec_addr, interp_addr;
   struct int_elf32_fdpic_loadmap *ldm;
   struct cleanup *old_chain;
   struct section_offsets *new_offsets;
   int changed;
   struct obj_section *osect;
 
-  status = frv_fdpic_loadmap_addresses (target_gdbarch, 0, &exec_addr);
+  status = frv_fdpic_loadmap_addresses (target_gdbarch,
+                                        &interp_addr, &exec_addr);
 
-  if (status < 0)
+  if (status < 0 || (exec_addr == 0 && interp_addr == 0))
     {
       /* Not using FDPIC ABI, so do nothing.  */
       return;
This page took 0.023914 seconds and 4 git commands to generate.