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 0759dc74a93a6c212b78ee8243901c6a30fc2ffa..40ed55257221403a56d2f42b68daf216b7bd6c9a 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 20b4427c9c3c2552c39a78cb69b68b85393fe546..e597037b9122c5088464185f10fe2f1595da528b 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 ecc791a33799fa649d3b19968423eb22812e7ccd..4647b955c5e18101dd21c57bd396f111882d7864 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