Fix bugs related to inferior function calls on FRV using the FDPIC ABI.
authorKevin Buettner <kevinb@redhat.com>
Fri, 29 Apr 2005 21:48:28 +0000 (21:48 +0000)
committerKevin Buettner <kevinb@redhat.com>
Fri, 29 Apr 2005 21:48:28 +0000 (21:48 +0000)
gdb/ChangeLog
gdb/frv-tdep.c
gdb/solib-frv.c

index 0759dc7..40ed552 100644 (file)
@@ -1,3 +1,10 @@
+2005-04-29  Kevin Buettner  <kevinb@redhat.com>
+
+       * frv-tdep.c (find_func_descr): Verify that entry point can be
+       found in symbol table prior to looking up its function descriptor.
+       * solib-frv.c (find_canonical_descriptor_in_load_object): Add
+       test for non-NULL link map.
+
 2005-04-29  Corinna Vinschen  <vinschen@redhat.com>
 
        * MAINTAINERS: Revert h8300 state to un-deleted.
index 20b4427..e597037 100644 (file)
@@ -1079,6 +1079,13 @@ find_func_descr (struct gdbarch *gdbarch, CORE_ADDR entry_point)
 {
   CORE_ADDR descr;
   char valbuf[4];
+  CORE_ADDR start_addr;
+
+  /* If we can't find the function in the symbol table, then we assume
+     that the function address is already in descriptor form.  */
+  if (!find_pc_partial_function (entry_point, NULL, &start_addr, NULL)
+      || entry_point != start_addr)
+    return entry_point;
 
   descr = frv_fdpic_find_canonical_descriptor (entry_point);
 
index ecc791a..4647b95 100644 (file)
@@ -1109,6 +1109,10 @@ find_canonical_descriptor_in_load_object
   if (abfd == 0)
     return 0;
 
+  /* Nothing to do if no link map.  */
+  if (lm == 0)
+    return 0;
+
   /* We want to scan the dynamic relocs for R_FRV_FUNCDESC relocations.
      (More about this later.)  But in order to fetch the relocs, we
      need to first fetch the dynamic symbols.  These symbols need to