libunwind-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libunwind] Register spills with zero-length prolog: how will libunwind


From: Patil, Harish
Subject: [libunwind] Register spills with zero-length prolog: how will libunwind handl e them?
Date: Wed, 6 Mar 2002 19:25:23 -0800

Hi:

This is a generic question about IA64/Linux unwind info and only slightly
related to libunwind. I apologize for that and hope that some unwinding
expert reading this list can give me some insights.

Background:
------------------

Consider the following code transformation by a binary optimizer:

INITIAL CODE:

  proc foo:
    s1;
    s2'
    s3;
    s4;

FINAL CODE:

   proc foo_parent:
      s1;
      br foo_clone;
   L1: s4;

   proc foo_clone:
       s2;
       s3;
       br L1;

Provided the prolog region in INITIAL CODE covers only s1 then unwind info
for foo_clone could simply be 'inherited' from foo_parent in FINAL CODE. So
the optimizer could generate a zero-length prolog for proc foo_clone and
essentially generate prolog unwind descriptors for foo_clone which are
copies of foo_parent's prolog descriptors with "when" field set to zero. I
hope things make sense so far. 

Questions:
---------------
 Suppose foo_parent's prolog contains descriptors for register spills so it
has P5/P6 record describing 'which' registers are spilled and a P4 record
with an imask describing 'when' registers are spilled. As foo_clone
'inherits' foo_parent's unwind state how should foo_clone's prolog describe
the register spills? P5/P6 records describing 'which' registers are easy to
generate. But how about the P4:imask record? The length of foo_clone's
prolog is zero so how will its imask look like? We can not describe slot 0
spilling all the registers because the bit-mask can not describe that?

What if P4 records are completely skipped? Can a consumer, such as
libunwind, handle a case of zero-length prologs with P5/P6 record ['which'
registers] without a P4 record ['when' spilled]?

Any other info will be greatly appreciated.

Thanks,

-Harish 
PS : I have read (and re-read) unwind related parts of the IA64 Runtime
Architecture Guide [RAG]. The description of P4 record in there ignores the
case of zero-length prologs. Also could not find *stated* requirement that a
P5/P6 record must be accompanied by a P4:imask record.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]