]> Git Repo - binutils.git/blobdiff - gdb/hppa-tdep.c
* Makefile.in (dcache_h): Remove redundant definition.
[binutils.git] / gdb / hppa-tdep.c
index b55f40f9c40904300f854c44b668efffaf704b6a..34c4c47b67d8b6caa81678237e3d4a9554fa8525 100644 (file)
@@ -379,6 +379,11 @@ read_unwind_info (objfile)
       elf_unwind_size = bfd_section_size (objfile->obfd, elf_unwind_sec);
       elf_unwind_entries = elf_unwind_size / UNWIND_ENTRY_SIZE;
     }
+  else
+    {
+      elf_unwind_size = 0;
+      elf_unwind_entries = 0;
+    }
 
   if (stub_unwind_sec)
     {
@@ -1135,7 +1140,7 @@ hppa_pop_frame ()
 
   /* Else use the value in %rp to set the new PC.  */
   else 
-    target_write_pc (read_register (RP_REGNUM));
+    target_write_pc (read_register (RP_REGNUM), 0);
 
   write_register (FP_REGNUM, read_memory_integer (fp, 4));
 
@@ -1368,7 +1373,8 @@ hppa_fix_call_dummy (dummy, pc, fun, nargs, args, type, gcc_p)
 /* Get the PC from %r31 if currently in a syscall.  Also mask out privilege
    bits.  */
 CORE_ADDR
-target_read_pc ()
+target_read_pc (pid)
+     int pid;
 {
   int flags = read_register (FLAGS_REGNUM);
 
@@ -1380,8 +1386,9 @@ target_read_pc ()
 /* Write out the PC.  If currently in a syscall, then also write the new
    PC value into %r31.  */
 void
-target_write_pc (v)
+target_write_pc (v, pid)
      CORE_ADDR v;
+     int pid;
 {
   int flags = read_register (FLAGS_REGNUM);
 
@@ -1613,7 +1620,7 @@ skip_trampoline_code (pc, name)
        {
          /* Yup.  See if the previous instruction loaded
             a value into %r1.  If so compute and return the jump address.  */
-         if ((prev_inst & 0xffe00000) == 0x20202000)
+         if ((prev_inst & 0xffe0e000) == 0x20202000)
            return (extract_21 (prev_inst) + extract_17 (curr_inst)) & ~0x3;
          else
            {
@@ -1622,9 +1629,10 @@ skip_trampoline_code (pc, name)
            }
        }
 
-      /* Does it look like bl X,rp?  Another way to do a branch from the
-        stub to the actual function.  */
-      else if ((curr_inst & 0xffe0e000) == 0xe8400000)
+      /* Does it look like bl X,%rp or bl X,%r0?  Another way to do a
+        branch from the stub to the actual function.  */
+      else if ((curr_inst & 0xffe0e000) == 0xe8400000
+              || (curr_inst & 0xffe0e000) == 0xe8000000)
        return (loc + extract_17 (curr_inst) + 8) & ~0x3;
 
       /* Does it look like bv (rp)?   Note this depends on the
This page took 0.022737 seconds and 4 git commands to generate.