2004-10-25 David Mosberger-Tang <davidm@hpl.hp.com>
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 25 Oct 2004 15:47:52 +0000 (15:47 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 25 Oct 2004 15:47:52 +0000 (15:47 +0000)
* config/tc-ia64.c (fixup_unw_records): Don't let the "t" value
in an epilogue directive go negative.

gas/ChangeLog
gas/config/tc-ia64.c

index 0840103a329ecf68f701c378188370a755796dbc..22fe267b7a276be1cfd78d6790ae5a97ecb2b51d 100644 (file)
@@ -1,3 +1,8 @@
+2004-10-25  David Mosberger-Tang  <davidm@hpl.hp.com>
+
+       * config/tc-ia64.c (fixup_unw_records): Don't let the "t" value 
+       in an epilogue directive go negative.
+
 2004-10-25  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR 474
index b18b0ea0c856410e69afb163787383126e3e3c50..fb1be78f536b64b949ad3441916f17846a25d360 100644 (file)
@@ -2747,7 +2747,13 @@ fixup_unw_records (list, before_relax)
            break;
          }
        case epilogue:
-         ptr->r.record.b.t = rlen - 1 - t;
+         if (t < rlen)
+           ptr->r.record.b.t = rlen - 1 - t;
+         else
+           /* This happens when a memory-stack-less procedure uses a
+              ".restore sp" directive at the end of a region to pop
+              the frame state.  */
+           ptr->r.record.b.t = 0;
          break;
 
        case mem_stack_f: