New syntax for IVMS prolog epilog size
Nick Clifton
nickc@redhat.com
Fri Sep 11 09:31:00 GMT 2009
Hi Douglas,
> From the HP Dwarf extensions manual:
Hmm, this makes it sound like the new directive ought to be called
something like:
.dw_at_hp_prologue
> If the value of DW_AT_HP_prologue has class constant, then the integer
> value of the attribute gives the offset of the one and only prologue end
> relative to the base of reference.
>
> -------------
> Note: This is the case we are discussing above,
[I am being lazy here and asking you rather than looking this up:] Is
the integer value discussed above LEB128 encoded ? If so then there is
no need to worry about having a size modifier added to the
.dw.at_hp_prologue directive.
Also, if this integer value is the offset of the prologue end then why
did your original gcc patch compute "(end - start) / 16 * 3" ? Or did I
misread that ?
> but it gets more
> complicated for multiple prologues (and epilogues), for which we need
> SLEB slot offsets, and possibly even addresses.
> -------------
> If the value of DW_AT_HP_prologue has class block, then the block
> contains a sequence of values. The first value is a signed non-zero LEB
> integer value. There are two cases:
> 1.If the first value is positive, it is a count of the number of signed
> LEB integer values that follow. Each such value is an (instruction slot)
> offset relative to the base of reference to a prologue end location.
>
> This case applies when there is more than one prologue end location, but
> they are all in the same section as the base of reference.
> 2.If the first value is negative, its absolute value is a count of the
> number of addresses that follow. Each such address is a prologue end
> location.
The (theoretical) advantage to calling the new directive
.dw_at_hp_prologue is that its syntax could be defined to handle these
cases as well. Ie something like:
.dw_at_hp_prologue <start_label>, <end_label> { , <start_label> ,
<end_label> }
Then the code could evaluate the list of labels. If there is only one
pair then the first case applies. If there are multiple pairs and the
start label is the same for all of them then the last case applies,
otherwise the middle case applies.
Cheers
Nick
More information about the Binutils
mailing list